具有特定时间范围的 Pandas date_range

Posted

技术标签:

【中文标题】具有特定时间范围的 Pandas date_range【英文标题】:Pandas date_range with specific time ranges 【发布时间】: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]

【问题讨论】:

【参考方案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 秒。

【讨论】:

以上是关于具有特定时间范围的 Pandas date_range的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pandas 中选择行范围?

Pandas 每年按季节高效分组

提取时间戳在特定范围内的 Python Pandas 记录[关闭]

Python pandas 转换(yy/mm)日期格式并选择特定时间范围

具有多个列范围的 Pandas 数据框切片[重复]

具有更长范围的 Pandas datetime64