假设我有一个数据帧(DF)。该数据帧的索引是每天的上午11点到下午6点之间的时间戳,该数据帧包含30天。我想每30分钟将其分组。这是我正在使用的功能:
out = DF.groupby(pd.Grouper(freq='30min'))
输出的开始日期是正确的,但是它考虑整天(24h)进行分组。例如,在新的时间戳中,我有这样的内容:
11:00:00
11:30:00
12:00:00
12:30:00
...
18:00:00
18:30:00
...
23:00:00
23:30:00
...
2:00:00
2:30:00
...
...
10:30:00
11:00:00
11:30:00
结果,许多输出为空,因为从6:00 PM到11 AM,我没有任何数据。
答案 0 :(得分:0)
一种可能的解决方案应该是DatetimeIndex.floor
:
out = DF.groupby(DF.index.floor('30min'))
或在聚合函数后使用dropna
:
out = DF.groupby(pd.Grouper(freq='30min')).mean().dropna()
答案 1 :(得分:0)
正如对原始帖子的评论中所述,这是预期的。如果要删除空组,则只需将它们切成薄片即可。假设在这种情况下,您正在使用count进行汇总:
df = df.groupby(pd.Grouper(freq='30min')).count()
df = df[df > 0]