【问题标题】:Groupby along the axis 1 using a list in Pandas使用 Pandas 中的列表沿轴 1 分组
【发布时间】:2018-06-28 16:37:09
【问题描述】:

以下来自《使用 Pandas 进行数据分析》:

每个分组键可以有多种形式,键不必是 都是同一类型:

  • 值的列表或数组,其长度与当前轴的长度相同 分组

  • 一个 dict 或 Series 给出了值之间的对应关系 被分组的轴和组名

我尝试了以下方法:

df1
         1980   1981    1982    1983    1984    1985    1986
Country                         
Afghanistan 16  39  39  47  71  340 496
Albania 1   0   0   0   0   0   1
Algeria 80  67  71  69  63  44  69
American Samoa  0   1   0   0   0   0   0
Andorra 0   0   0   0   0   0   2

Grouping_keys_along_axis_1
['1', '1', '1', '2', '2', '3', '3']

df1.groupby(Grouping_keys_along_axis_1, axis = 0).sum()
KeyError: '1'

这种行为实际上符合我对文档的理解,但似乎与我开头引用的片段不一致。

这个想法是将前 3 列分组为一个组,接下来的 2 列在第二组中,最后 2 列在第三组中,然后在每个组中应用汇总函数(此处为 sum())沿轴 = 1。

【问题讨论】:

    标签: python pandas group-by


    【解决方案1】:

    我认为您需要以下内容:

    ga = ['1', '1', '1', '2', '2', '3', '3']
    
    df.groupby(ga, axis=1).sum()
    

    输出:

                      1    2    3
    Country                      
    Afghanistan      94  118  836
    Albania           1    0    1
    Algeria         218  132  113
    American Samoa    1    0    0
    Andorra           0    0    2
    

    请注意,这是因为您的 ga 列表长度等于 df.columns 索引的长度。因此,您使用 ga(分组轴)列表来确定如何对列进行分组。

    【讨论】:

    • 谢谢,我试过了,成功了。基本上我没有规定正确的轴。
    猜你喜欢
    • 1970-01-01
    • 2022-11-24
    • 2018-06-06
    • 2020-06-04
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    相关资源
    最近更新 更多