【发布时间】:2016-03-13 19:42:26
【问题描述】:
我有一个包含以下列的数据框:
(Pdb) self.df.columns
Index([u'distinct_id', u'event_name', u'item_id', u'player_time', u'time',
u'video_id'],
dtype='object')
player_time 是一个浮点值,它不是唯一的。我的最终目标是计算在任何给定秒 (player_time) 发生的事件 (event_name) 的数量,然后如果需要,在不同的时间间隔内执行滚动求和:
要获取在任何给定秒内发生的事件数,我可以使用 groupby:
(Pdb) grouped_df = self.df.groupby(self.df.player_time).count(); grouped_df
distinct_id event_name item_id time video_id
player_time
16 1 1 1 1 1
25 0 2 1 1 1
28 1 1 1 1 1
29 1 1 1 1 1
36 1 1 1 1 1
46 1 1 1 1 1
70 1 1 1 1 1
77 1 1 1 1 1
95 1 1 1 1 1
107 1 1 1 1 1
117 1 1 1 1 1
118 1 1 1 1 1
131 0 2 1 1 1
153 1 1 1 1 1
155 1 1 1 1 1
163 1 1 1 1 1
177 1 1 1 1 1
182 1 1 1 1 1
183 1 1 1 1 1
196 1 1 1 1 1
正如你所看到的,除了 25 和 131 之外,每秒都有一个事件。现在我想做的是类似于
(Pdb) grouped_df.resample('10s',how='sum')
*** TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex
但我现在还没有准备好这样做。实现这一目标的最佳方法是什么?我查看了pandas.rolling_sum,看起来它也可以完成这项工作,但我无法让它完成我在这里描述的工作。
【问题讨论】:
标签: python pandas time-series