[英]Pandas: count cumulated unique string values per group
我有一個關於 groupby 的問題,但我想在這樣的時間段內對時間段進行分組並計算“項目”的大小(1 個月、2 個月、3 個月)。
例如下圖所示的數據:
group time item
1 9/30/2014 a
1 10/30/2014 a
1 11/30/2014 b
2 9/30/2014 c
2 10/30/2014 d
2 11/30/2014 d
隨着時間的推移,我想使用 groupby 來總結項目的大小
group time item want
1 9/30/2014 a 1 (because we only have "a" in 9/30/2014 )
1 10/30/2014 a 1 (because we only have "a" from 9/30/2014 to 10/30/2014)
1 11/30/2014 b 2 (because we have "a" and "b" from 9/30/2014 to 11/30/2014)
2 9/30/2014 c 1
2 10/30/2014 d 2
2 11/30/2014 d 2
我感謝您的幫助。 非常感謝。
您可以使用nunique
計數執行groupby
+ expanding
。
您需要作弊,因為當前expanding
僅支持數值。 所以我先factorized
數據:
df['want'] = (
pd.Series(df['item'].factorize()[0], index=df.index)
.groupby(df['group'])
.expanding()
.apply(lambda s: s.nunique())
.droplevel(0)
.astype(int)
)
Output:
group time item want
0 a 9/30/2014 a 1
1 a 10/30/2014 a 1
2 a 11/30/2014 b 2
3 b 9/30/2014 c 1
4 b 10/30/2014 d 2
5 b 11/30/2014 d 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.