2016-11-30 100 views
2

我有一些數據,看起來像這樣:添加組索引到大熊貓數據幀

date_time, user, page 
12345, A, index 
13456, A, index 
14566, B, home 
... 

我想存儲每行的索引(即,它的順序時DATE_TIME排序),兩者整體和每頁。

整體很簡單。只要是這樣的:

df['overall_count'] = range(len(df))

但我無法弄清楚如何做到這一點的頁面。下面的代碼得到我想要的,但它連接到groupby對象,我不知道如何將其移動到主數據框。

grouped = df.groupby('page') 
for name, group in grouped: 
    group = group.sort_values('date_time') 
    group['page_count'] = range(len(group)) 

回答

3

如果你想分配組相關的指數,你可以使用cumcount:

df.groupby('page').cumcount() 
+0

這並不完全符合我所要求的 - 我想,其中每個行是組內的索引 - 不是該組中的項目總數。 – Jeremy

+0

你的回答完全幫助我弄清楚了。我想要的是: 'd ['page_index'] = d.groupby('page')['page']。「變換(lambda x:range(len(x)))' – Jeremy

+0

對不起,我誤解了你的問題。你可以試試'df.groupby('page')。cumcount()'也許? – ayhan