【问题标题】:Pandas date_range with specific time ranges具有特定时间范围的 Pandas date_range
【发布时间】:2017-11-09 01:52:07
【问题描述】:

我正在尝试使用pd.date_range() 创建一个跨越多天的DatetimeIndex,频率以秒为单位。但是,每天的时间范围应限制在 05:00:00 到 22:00:00 之间

类似的东西(当然行不通):

times_c = pd.date_range(start="2015-01-01",end="2015-01-10",freq="S")
mask_c = ((times_c.time < dt.datetime.strptime("22:00:00", "%H:%M:%S")) | (times_c.time > dt.datetime.strptime("05:00:00","%H:%M:%S")))
times_c = times_c[mask_c]

【问题讨论】:

    标签: python pandas datetime indexing


    【解决方案1】:

    使用indexer_between_time:

    times_c[times_c.indexer_between_time('05:00:00', '22:00:00')]
    

    【讨论】:

      【解决方案2】:

      这行得通吗?

      times_c = pd.date_range(start="2015-01-01", end="2015-01-10", freq="S")
      times_c[(times_c.hour<22) | (times_c.hour>5)]
      

      【讨论】:

      • 仍然包括所有时间,因为 23 大于 5
      【解决方案3】:

      让我们试试这个。

      times_c[((times_c.hour >= 5) & (times_c.hour < 22)) | ((times_c.hour == 22) &(times_c.minute == 0) & (times_c.second == 0))]
      

      让我们得到大于 5 小时且小于 22 小时的所有时间,然后得到 22 的边缘情况,即 0 分钟和 0 秒。

      【讨论】:

        猜你喜欢
        • 2021-12-22
        • 1970-01-01
        • 2018-07-03
        • 2017-12-06
        • 1970-01-01
        • 2019-10-08
        • 1970-01-01
        • 2016-09-04
        • 1970-01-01
        相关资源
        最近更新 更多