【问题标题】:How to groupby based on multiple columns in pandas?如何根据熊猫中的多列进行分组?
【发布时间】:2020-09-01 21:43:20
【问题描述】:

我想按基于多列的数据框进行分组。例如做这个:

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() 然后尝试计数。但是我不知道如何按国家/地区垂直分组。有什么想法吗?

谢谢

【问题讨论】:

    标签: python pandas group-by concat


    【解决方案1】:

    melt 然后groupbysize

    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
    

    【讨论】:

    • 谢谢,它似乎有效,但我也想按国家/地区绘制类型的数量,并且无法使用熔化。有可能做到吗?
    • s = df.melt('Country').groupby(['Country','value']).size().unstack().plot(kind='bar') @MasterC
    猜你喜欢
    • 2022-01-25
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2022-11-23
    • 2021-07-20
    • 2021-12-22
    • 2020-08-10
    • 2013-07-30
    相关资源
    最近更新 更多