簡體   English   中英

如何按組計算 python 中的累積唯一值?

[英]How to count accumulative unique values by groups in python?

我想知道如何按組計算 python 中的累積唯一值?

下面是 dataframe 示例:

團體 類型
一個 1998 紅色的
一個 2002年 紅色的
一個 2005年 藍色的
一個 2008年 藍色的
一個 2009
1998 紅色的
2001年 紅色的
2003年 紅色的
C 1996 紅色的
C 2002年
C 2008年 藍色的
C 2012

我需要按“組”列創建一個新列。 這個新列的值應該是列“類型”的累積唯一值,按列“年”累積。

下面是我想要的dataframe。 例如:對於 A 組,在 1998 年,“類型”的累積唯一值為 1。對於 A 組,在 2005 年,“類型”的累積唯一值為 2。對於 C 和 2012 年, “類型”的累積唯一值是 4。

| Group| Year| Type|Want|
|------|-----|-----|----|
|A|1998|red|1|
|A|2002|red|1|
|A|2005|blue|2|
|A|2008|blue|2|
|A|2009|yello|3|
|B|1998|red|1|
|B|2001|red|1|
|B|2003|red|1|
|C|1996|red|1|
|C|2002|orange|2|
|C|2008|blue|3|
|C|2012|yello|4|

關於此 dataframe 的另一件事:並非所有組在同一年份都有值。 例如,A 組在 1998、2002、2005 和 2008 年有值。B 組在 1998、2001 和 2003 年有值。

我想知道如何解決這個問題。 您的大力幫助對我來說意義重大。 謝謝!

GroupBy.transform中使用自定義 lambda function 和factorize

f = lambda x: pd.factorize(x)[0]
df['Want1'] = df.groupby('Group', sort=False)['Type'].transform(f) + 1
print (df)
   Group  Year    Type  Want1
0      A  1998     red      1
1      A  2002     red      1
2      A  2005    blue      2
3      A  2008    blue      2
4      A  2009   yello      3
5      B  1998     red      1
6      B  2001     red      1
7      B  2003     red      1
8      C  1996     red      1
9      C  2002  orange      2
10     C  2008    blue      3
11     C  2012   yello      4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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