按时间间隔和熊猫中的apply(list)分组数据

时间:2020-09-27 16:02:10

标签: python pandas pandas-groupby

我有一个像这样的数据框:

     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以及该时间间隔的汇总计数。

0 个答案:

没有答案