如何基于熊猫中的多个列进行分组?

时间:2020-09-01 21:43:20

标签: python pandas group-by concat

我想按多个列将数据框分组。例如要这样做:

Country Type_1 Type_2  Type_3  Type_4  Type_5
China    A       B       C        D      E
Spain    A       A       R        B      C
Italy    B       A       B        R      R

对此:

Country Type   Count
China   A       1
        B       1
        C       1 
        D       1
        E       1
Spain   A       2
        R       1
        B       1
        C       1
Italy   B       2  
        A       1   
        R       2

我试图垂直合并从Type_1到Type_5的列,应用reset_index()然后尝试计数。但是我不怎么按国家垂直分组。有什么想法吗?

Thx

1 个答案:

答案 0 :(得分:1)

melt,然后groupby,然后size

s = df.melt('Country').groupby(['Country','value']).size()
Out[326]: 
Country  value
China    A        1
         B        1
         C        1
         D        1
         E        1
Italy    A        1
         B        2
         R        2
Spain    A        2
         B        1
         C        1
         R        1
dtype: int64