【问题标题】:Searching a data frame via a range of datetime通过一系列日期时间搜索数据框
【发布时间】:2017-09-12 13:09:25
【问题描述】:

您好,我想知道我是否能够根据包含日期时间数据的列搜索数据框,但我想搜索日期时间在某个值内的行。

  Time                   User
1 2017-07-13 18:30:18 .  Gary
2 2017-07-13 13:30:23 .  Mary
3 2017-07-13 02:30:18 .  Tim
4 2017-07-12 12:11:44 .  Jim
5 2017-07-12 03:31:54 .  Tom
6 2017-07-11 01:21:21 .  John
7 2017-07-11 05:32:12 .  Sam

假设我想搜索日期在 7-13-17 00:00:00 到 7-13-17 15:00:00 之间的所有行。结果是:

2 2017-07-13 13:30:23 .  Mary
3 2017-07-13 02:30:18 .  Tim

有没有一种方法可以将数据选择切得如此精确?我意识到我在技术上可以创建一个 If/elif 语句来基本上做到这一点,但只是想知道是否有更简单的方法,因为我将创建多个 If/elif 语句来完成我的任务。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    betweenboolean indexing 一起使用:

    #if necessary convert to datetime
    df['Time'] = pd.to_datetime(df['Time'])
    
    df = df[df['Time'].between('2017-07-13', '2017-07-13 15:00:00')]
    print (df)
                     Time  User
    2 2017-07-13 13:30:23  Mary
    3 2017-07-13 02:30:18   Tim
    

    DataFrame.query:

    df = df.query("'2017-07-13' < Time < '2017-07-13 15:00:00'")
    print (df)
                     Time  User
    2 2017-07-13 13:30:23  Mary
    3 2017-07-13 02:30:18   Tim
    

    【讨论】:

      【解决方案2】:

      这样的事情可能会奏效。这使用了 Pandas 子集和索引功能:

      df[(df['Time'] >= '2017-07-13 13:30:23') & (df['Time'] <= '2017-07-13 15:00:00')]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-23
        • 1970-01-01
        • 2021-12-19
        • 1970-01-01
        相关资源
        最近更新 更多