我有一个带有时间戳索引的时间序列的 DataFrame,如下所示:
timestamp A B
2018-11-12 14:03:53 9.45 501.0
2018-11-12 14:03:58 73.8 108.0
2018-11-12 14:04:09 4.25 215.0
2018-11-12 14:04:19 62.39 551.0
2018-11-12 14:04:29 15.98 113.0
我想根据这些数据的 bin 进行一些聚合,例如:
df.groupby(pd.Grouper(freq='30Min')).apply(custom_agg)
然而,问题是这个石斑鱼或serialize
创建了连续范围的垃圾箱,但我的数据被限制在每天的某些小时内(例如,14.00 之后)。这给我留下了大量没有数据的组:
2018-11-13 00:00:00 NaN NaN 0.0
2018-11-13 00:30:00 NaN NaN 0.0
2018-11-13 01:00:00 NaN NaN 0.0
2018-11-13 01:30:00 NaN NaN 0.0
2018-11-13 02:00:00 NaN NaN 0.0
2018-11-13 02:30:00 NaN NaN 0.0
2018-11-13 03:00:00 NaN NaN 0.0
我想过滤掉这些。使用df.filter()
不会有多大用处,因为问题不在于原始行,而在于组。
我尝试使用apply
: df.groupby(pd.Grouper(freq='30Min')).apply(lambda x: x[x.index.min().hour >= 14])
,但我得到了KeyError: True
. (附带问题,为什么这不起作用?)
什么是一组给定的涉及分组条件来筛选数据框的最佳方式后一个groupby
应用?
尝试使用.dt.floor
:
df.groupby(df['timestamp'].dt.floor('30Min')).apply(custom_agg)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句