简体   繁体   English

在 Pandas 中使用 groupby].transform('count') 时如何计算唯一值

[英]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列,它计算每个NameDate唯一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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM