熊猫计算数据框中不同的多列,并按多列分组

时间:2019-10-31 17:22:01

标签: python pandas numpy pyspark

我找到了答案 test2 = test_pd.groupby(by = ['ID'])['country','color']。nunique()。reset_index()

idk,当rafael提供的链接未回答问题时,为什么将此问题标记为重复

我有一个3列的数据框:

   country    color    ID 
0  Germany    Red      12     
1  France     Red      13
2  US         Blue     11
3  France     Red      11

如果我想找出SQL中每个ID的不同国家和颜色的数量,则为

select  ID
  , count(distinct(country)) as num_countries
  , count(distinct(color)) as num_color
from table_name
group by ID;

结果将如下所示

   ID    num_countries   num_color
0  12         1              1   
0  11         2              2   
0  13         1              1 

如何在熊猫中获得相同的结果?

2 个答案:

答案 0 :(得分:0)

使用DataFrame.groupby.nunique

df_unique=df.groupby('ID')['country','color'].nunique().add_prefix('num_').reset_index()
print(df_unique)

   ID  num_country  num_color
0  11            2          2
1  12            1          1
2  13            1          1

答案 1 :(得分:0)

您要nunique()

df.gropuby('age_cd', as_index=False).nunique()