【问题标题】:Select data between night and day hours在夜间和白天之间选择数据
【发布时间】:2019-08-09 07:29:05
【问题描述】:

我的数据看起来像这样,它是一个基于分钟的 2 年数据。

  1. 2017-04-02 00:00:00
  2. 2017-04-02 00:01:00
  3. 2017-04-02 00:02:00
  4. 2017-04-02 00:03:00
  5. 2017-04-02 00:04:00
  6. ....
  7. 2017-04-02 23:59:00
  8. ...
  9. 2019-02-01 22:54:00
  10. 2019-02-01 22:55:00
  11. 2019-02-01 22:56:00
  12. 2019-02-01 22:57:00
  13. 2019-02-01 22:58:00
  14. 2019-02-01 22:59:00
  15. 2019-02-01 23:00:00

我想访问工作日结束到下一个工作日开始之间的所有数据行。我的数据框中所有日期的 2018-04-02 18:00:00 2018-04-03 05:00:00 之间的示例。请帮忙

【问题讨论】:

    标签: pandas datetime dataframe timestamp time-series


    【解决方案1】:

    一种方法是基于日期时间列或索引上的条件的布尔索引。假设您的 DataFrame 名为 df 并且它的 DatetimeIndex 等于您发布的示例数据,请尝试以下操作:

    df[(df.index.hour >= 18) | (df.index.hour <= 5)]
    

    【讨论】:

    • 应该是&amp; 而不是|
    • @Erfan,我认为应该是 |: df.index.hour 采用 0 到 23 之间的整数值,如果该整数是 = 18。
    【解决方案2】:

    如果您使用DatetimeIndex,那么您可以使用.between_time

    import pandas as pd
    df = pd.DataFrame({'date': pd.date_range('2017-04-02', freq='90min', periods=100)})
    df = df.set_index('date')
    
    df.between_time('18:00', '5:00')
    
    #date
    #2017-04-02 00:00:00
    #2017-04-02 01:30:00
    #2017-04-02 03:00:00
    #2017-04-02 04:30:00
    #2017-04-02 18:00:00
    #2017-04-02 19:30:00
    #2017-04-02 21:00:00
    #2017-04-02 22:30:00
    #....
    

    【讨论】:

      猜你喜欢
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多