1
我有以下各列的數據幀:使用大熊貓重新取樣/ rolling_sum計算秒的時間間隔
(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
,看起來它也可以做這項工作,我只是不能讓它做我在這裏描述的。
真棒 - 感謝你 - 什麼是reset_index通話的目的是什麼? – josephmisiti
太棒了! 'reset_index()'是將pandas groupby對象轉換回數據框(填充所有行)。 Groupbys保持分層索引。如果不需要,刪除。 – Parfait