【问题标题】:Pandas: Summarize table based on column valuePandas:根据列值汇总表
【发布时间】:2016-11-12 06:14:35
【问题描述】:

我的 Pandas 数据框是这种格式:

A    5
A    7
A    4
B    2
B    7
C    8

我该如何总结:

A    16
B    9
C    8   

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

我认为您可以使用 pivot_tablesum 作为聚合函数:

In [9]: df
Out[9]: 
   0  1
0  A  5
1  A  7
2  A  4
3  B  2
4  B  7
5  C  8

In [10]: df.pivot_table(index=0, aggfunc=sum).reset_index()
Out[10]: 
   0   1
0  A  16
1  B   9
2  C   8

【讨论】:

    【解决方案2】:

    你可以使用groupby:

      col1  col2
    0   A   5
    1   A   7
    2   A   4
    3   B   2
    4   B   7
    5   C   8
    
    df.groupby('col1')['col2'].sum()
    col1
    A    16
    B     9
    C     8
    

    如果您想保持列原样,正如您在评论中提到的那样,您可以将 groupby 对象转换为新的数据框,如果这是您的意思。所以,你可以这样做:

    new = pd.DataFrame({'col2' : df.groupby('col1')['col2'].sum()}).reset_index()
    new
      col1  col2
    0   A   16
    1   B   9
    2   C   8 
    

    【讨论】:

    • 感谢您的快速答复。一个小问题:这些列不再称为“col1”和“col2”。是否可以添加另一行代码以使列保留其名称?
    • @NedHulton 我根据您的评论为我的答案添加了一个新的解决方案。这是你的意思吗?
    猜你喜欢
    • 1970-01-01
    • 2018-02-09
    • 2023-02-23
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多