使用分组程序将特定范围内的时间戳分组

时间:2019-03-07 12:23:52

标签: pandas timestamp pandas-groupby

假设我有一个数据帧(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,我没有任何数据。

2 个答案:

答案 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]