[英]How to Count Uniques when using groupby].transform('count') with Pandas
I have a Dataframe df
:我有一个数据框
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
And I want to add a Count
column which counts the unique number of Symbols
per Name
and Date
.我想添加一个
Count
列,它计算每个Name
和Date
的唯一Symbols
数。 When I do:当我做:
df.groupby(['Date', 'Symbol'])['Name'].nunique()
df['Count'] = df.groupby(['Date', 'Symbol'])['Name'].transform('count')
my output looks like:我的输出看起来像:
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
But because I want unique counts, the desired output is:但是因为我想要唯一计数,所以所需的输出是:
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
How do I achieve that?我如何做到这一点?
Use transform
with nunique
:使用带有
nunique
transform
:
df['Count'] = df.groupby(['Date', 'Symbol'])['Name'].transform('nunique')
And now:现在:
print(df)
Is:是:
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
Have you tried df['Count'] = df.groupby(['Date', 'Symbol'])['Name'].transform('nunique')
?你试过
df['Count'] = df.groupby(['Date', 'Symbol'])['Name'].transform('nunique')
吗? That should work.那应该工作。 Please let me know if that works.
请让我知道这是否有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.