Groupby扩展计数-在不同时间戳下更改组的元素

时间:2019-04-30 09:57:30

标签: python-3.x pandas pandas-groupby

我有一个如下所示的HUGHE DataFrame(这只是一个说明问题的示例):

id       timestamp target_time  interval                                                                   
1        08:00:00  10:20:00     (10-11] 
1        08:30:00  10:21:00     (10-11]
1        09:10:00  11:30:00     (11-12]
2        09:15:00  10:15:00     (10-11]
2        09:35:00  10:11:00     (10-11]
3        09:45:00  11:12:00     (11-12]
...

我想创建一个如下的系列:

interval timestamp unique_ids
(10-11]  08:00:00  1
         08:30:00  1
         09:15:00  1
         09:35:00  1
(11-12]  09:10:00  1  
         09:45:00  2

目标是针对每个时间间隔计算在其时间戳记的间隔内有多少个唯一ID对应于其target_time。请注意,每个ID的target_time可以在不同的时间戳上更改。例如,对于ID 1,间隔是从08:00:00到08:30:00的(1​​0-11),但随后在09:10:00变为(11-12]。因此,在09: 15:00我不想在生成的系列中计算id 1。

我尝试了groupby->扩展-> np.unique方法,但是它没有提供我想要的结果:

df.set_index('timestamp').groupby('interval').id.expanding().apply(lambda x: np.unique(x).shape[0])

interval timestamp unique_ids
(10-11]  08:00:00  1
         08:30:00  1
         09:15:00  2
         09:35:00  2
(11-12]  09:10:00  1  
         09:45:00  2

关于如何解决此问题的任何提示?我想尽可能地利用熊猫例程,以减少计算时间,因为DataFrame的长度是1453076 ...

非常感谢!

0 个答案:

没有答案