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