簡體   English   中英

Pandas:計算每組累積的唯一字符串值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM