【问题标题】:how can i select data on time range in pandas我如何在熊猫中选择时间范围内的数据
【发布时间】:2018-07-03 11:14:15
【问题描述】:

我有下面的数据框,我想选择时间范围。

例如我有以下数据,我想选择 06:00~08:00 每天 。日期、时间是多索引索引

Date        Time     a      b    c
2018-01-09  5:15:00 20.55   0   -3.07
2018-01-09  5:30:00 20.57   0   -3.07
2018-01-09  5:45:00 20.33   0   -3.44
2018-01-09  6:00:00 20.31   0   -2.95
2018-01-09  6:15:00 20.76   26738   -2.88
2018-01-09  6:30:00 21.4    22462   -2.77
2018-01-09  6:45:00 21.84   20033   -3
2018-01-09  7:00:00 22.17   20010   -3.28
2018-01-09  7:15:00 22.38   18133   -2.82
2018-01-09  7:30:00 22.75   18254   -3.14
2018-01-09  7:45:00 22.93   17039   -3.22
2018-01-09  8:00:00 23.13   15934   -3.27
2018-01-09  8:15:00 23.25   15438   -3.48
2018-01-09  8:30:00 23.44   16218   -3.65
2018-01-09  8:45:00 23.65   14666   -3.14
2018-01-09  9:00:00 24.01   14686   -3.1
.....

所以结果应该低于

Date        Time     a      b    c
2018-01-09  6:00:00 20.31   0   -2.95
2018-01-09  6:15:00 20.76   26738   -2.88
2018-01-09  6:30:00 21.4    22462   -2.77
2018-01-09  6:45:00 21.84   20033   -3
2018-01-09  7:00:00 22.17   20010   -3.28
2018-01-09  7:15:00 22.38   18133   -2.82
2018-01-09  7:30:00 22.75   18254   -3.14
2018-01-09  7:45:00 22.93   17039   -3.22
2018-01-09  8:00:00 23.13   15934   -3.27
2018-01-10  6:00:00 20.31   0   -2.95
2018-01-10  6:15:00 20.76   26738   -2.88
2018-01-10  6:30:00 21.4    22462   -2.77
2018-01-10  6:45:00 21.84   20033   -3
2018-01-10  7:00:00 22.17   20010   -3.28
2018-01-10  7:15:00 22.38   18133   -2.82
2018-01-10  7:30:00 22.75   18254   -3.14
2018-01-10  7:45:00 22.93   17039   -3.22
2018-01-10  8:00:00 23.13   15934   -3.27

如何选择时间范围(06:00~08:00)的数据?

【问题讨论】:

    标签: python pandas indexing time range


    【解决方案1】:

    使用boolean indexing 比较timedelatas

    a = pd.Timedelta(6, unit='h')
    b = pd.Timedelta(8, unit='h')
    df = df[pd.to_timedelta(df['Time']).between(a,b)]
    

    另一种解决方案是创建DatetimeIndex 并通过DataFrame.between_time 选择:

    df.index = pd.to_datetime(df['Date'] + ' ' + df['Time'])
    df = df.between_time ('6:00', '8:00').reset_index(drop=True)
    
    print (df)
              Date     Time      a      b     c
    3   2018-01-09  6:00:00  20.31      0 -2.95
    4   2018-01-09  6:15:00  20.76  26738 -2.88
    5   2018-01-09  6:30:00  21.40  22462 -2.77
    6   2018-01-09  6:45:00  21.84  20033 -3.00
    7   2018-01-09  7:00:00  22.17  20010 -3.28
    8   2018-01-09  7:15:00  22.38  18133 -2.82
    9   2018-01-09  7:30:00  22.75  18254 -3.14
    10  2018-01-09  7:45:00  22.93  17039 -3.22
    11  2018-01-09  8:00:00  23.13  15934 -3.27
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 2018-06-06
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多