使用:
data = {'date':['2019-02-23 00:00:00', '2019-02-23 03:00:00', '2019-02-23 06:00:00', '2019-02-23 09:00:00', '2019-02-23 12:00:00', '2019-02-23 15:00:00', '2019-02-23 18:00:00', '2019-02-23 21:00:00', '2019-02-24 00:00:00', '2019-02-24 03:00:00', '2019-02-24 06:00:00', '2019-02-24 09:00:00', '2019-02-24 12:00:00', '2019-02-24 15:00:00', '2019-02-24 18:00:00', '2019-02-24 21:00:00'], 'foo':[1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18]}
df = pd.DataFrame(data)
for bar in df.groupby(df.index.date):
#doing some complex stuff with foo data
字符串
我尝试按天拆分此时间序列,但不是像df.groupby(df.index.date)
或df.groupby(pd.Grouper(freq='1D'))
那样在00:00:00拆分,而是从第二天的10:00到10:00拆分。我尝试在Grouper
中拆分Ioffset
,但它只更改标签。
=>拜托,有什么好办法吗?
谢谢。
3条答案
按热度按时间utugiqy61#
以下示例将按从上午10点到上午10点的日期对行进行分组
它所做的是它减去10小时的所有日期,这将改变时间到上午10时的第二天到当前一天。因此,分组只有日期的一部分,这改变了日期将分组行从上午10时当前日期到上午10时下一个日期
字符串
b5lpy0ml2#
使用
Series.dt.hour
+Series.shift
检测10附近的时间变化。然后使用Series.cumsum
您可以创建所需的组。请注意,这里使用了
Series.le
和Series.ge
而不是简单的Series.eq
,因为可能没有时间等于10的数据jucafojl3#
我无法理解Dev Khadka的代码,所以我写了我自己的代码,它做了同样的事情,但更多的行:
字符串