簡體   English   中英

在 Pandas 中使用 groupby].transform('count') 時如何計算唯一值

[英]How to Count Uniques when using groupby].transform('count') with Pandas

我有一個數據框df

    Name     Date Symbol   Value
0   Ajay  2018_Q1     AA      10
1   Ajay  2018_Q1     AA      20
2   Faye  2018_Q1     AA      30
3   Faye  2018_Q1     BB      40
4    Ray  2018_Q1     BB      50
5    Ray  2018_Q1     BB      60
6    Ray  2018_Q1     CC      70
7    Ray  2018_Q1     CC      80
8   Clay  2018_Q2     CC      90
9   Clay  2018_Q2     CC      99

我想添加一個Count列,它計算每個NameDate唯一Symbols數。 當我做:

df.groupby(['Date', 'Symbol'])['Name'].nunique()
df['Count'] = df.groupby(['Date', 'Symbol'])['Name'].transform('count')

我的輸出看起來像:

      Name     Date Symbol  Value Count
0     Ajay  2018 Q1     AA     10     3
1     Ajay  2018 Q1     AA     20     3
2     Faye  2018 Q1     AA     30     3
3     Faye  2018 Q1    BBB     40     3
4      Ray  2018 Q1    BBB     50     3
5      Ray  2018 Q1    BBB     60     3
6      Ray  2018 Q1    CCC     70     2
7      Ray  2018 Q1    CCC     80     2
8     Clay  2018 Q2    CCC     90     2
9     Clay  2018 Q2    CCC     99     2

但是因為我想要唯一計數,所以所需的輸出是:

      Name     Date Symbol  Value Count
0     Ajay  2018 Q1     AA     10     2
1     Ajay  2018 Q1     AA     20     2
2     Faye  2018 Q1     AA     30     2
3     Faye  2018 Q1    BBB     40     2
4      Ray  2018 Q1    BBB     50     2
5      Ray  2018 Q1    BBB     60     2
6      Ray  2018 Q1    CCC     70     1 
7      Ray  2018 Q1    CCC     80     1
8     Clay  2018 Q2    CCC     90     1
9     Clay  2018 Q2    CCC     99     1

我如何做到這一點?

使用帶有nunique transform

df['Count'] = df.groupby(['Date', 'Symbol'])['Name'].transform('nunique')

現在:

print(df)

是:

   Name     Date Symbol  Count
0  Ajay  2018_Q1     AA      2
1  Ajay  2018_Q1     AA      2
2  Faye  2018_Q1     AA      2
3  Faye  2018_Q1     BB      2
4   Ray  2018_Q1     BB      2
5   Ray  2018_Q1     BB      2
6   Ray  2018_Q1     CC      1
7   Ray  2018_Q1     CC      1
8  Clay  2018_Q2     CC      1
9  Clay  2018_Q2     CC      1

你試過df['Count'] = df.groupby(['Date', 'Symbol'])['Name'].transform('nunique')嗎? 那應該工作。 請讓我知道這是否有效。

暫無
暫無

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

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