我有一个像这样的数据框:
timestamp ID count
2020-07-13 09:30:59 ccp100 11
2020-07-13 09:31:06 ccp200 7
2020-07-13 09:45:16 ccp300 23
2020-07-13 09:30:18 ccp400 14
2020-07-13 10:30:02 ccp500 22
2020-07-13 11:22:14 ccp600 19
我需要按时间间隔和ID进行分组。我可以按以下时间间隔进行分组:
df.resample("60min", base=30, label="right")[["count"]].sum()
....按预期工作(显示与上面不同的时间戳/计数):
timestamp count
2020-07-13 09:30:00 22
2020-07-13 10:30:00 147
2020-07-13 11:30:00 137
2020-07-13 12:30:00 107
2020-07-13 13:30:00 17
但是此分组会删除ID。我想列出所有符合分组标准的ID。我知道我可以像这样在group_by调用中列出ID:
pd.DataFrame(df.groupby("timestamp")["ID"].apply(list))
...给出的结果如下:
timestamp ID
2020-07-13 09:30:59 [ccp100, ccp200, ccp300]
2020-07-13 09:31:06 [ccp400]
2020-07-13 09:45:16 [ccp500, ccp600]
但是我不确定如何组合时间间隔和ID列表groupby,以获得如下结果:
timestamp count ID
2020-07-13 09:30:00 22 [ccp100, ccp200]
2020-07-13 10:30:00 147 [ccp300, ccp400]
2020-07-13 11:30:00 137 [ccp500, ccp600, ccp700, ccp800]
2020-07-13 12:30:00 107 [ccp900]
2020-07-13 13:30:00 17 [ccp1000, ccp1100, ccp1300]
换句话说,我需要在单个数据帧中属于该时间间隔的所有ID以及该时间间隔的汇总计数。