Python 如何在使用groupby].transform(';Count';)时计算Unique
我有一个数据帧Python 如何在使用groupby].transform(';Count';)时计算Unique,python,pandas,Python,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
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
的符号的唯一数量。当我这样做时:
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
一起使用:
df['Count'] = df.groupby(['Date', 'Symbol'])['Name'].transform('nunique')
现在:
print(df)
是:
您是否尝试过df['Count']=df.groupby(['Date','Symbol'])['Name'].transform('nunique')
?这应该行得通。请让我知道这是否有效 如果我有其他列的值不同,这仍然有效吗?例如,假设我有一个名为Value
的列,对于行0
它是10
,行1
是20
,行3
是30
?奇怪。。。当我在我的实际数据集上这样做时,它仍然没有得到唯一性。但是,当使用问题中的样本数据集时,它会这样做。我得再做些测试
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