[英]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
列,它計算每個Name
和Date
的唯一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.