我有一个数据框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
计算 Symbols
的唯一数量的列每Name
和Date
。当我这样做时:
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
我该如何实现这一目标?
最佳答案
将transform
与nunique
结合使用:
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
关于python - 如何在 Pandas 中使用 groupby].transform ('count' )时计算唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59959998/