gpt4 book ai didi

python - Pandas 数据框,如何按多列分组并对特定列应用总和并添加新的计数列?

转载 作者:行者123 更新时间:2023-12-01 09:42:05 25 4
gpt4 key购买 nike

给定数据帧 df1 如下:

Col1    Col2    Col3    Col4    Col5
-------------------------------------
A 1 AA 10 Test1
A 1 AA 5 Test2
A 2 AB 30 Test3
B 4 FF 10 Test4
C 1 HH 4 Test7
C 3 GG 6 Test8
C 3 GG 7 Test9
D 1 AA 4 Test5
D 3 FF 6 Test6
  • 我想按 Col1、Col2 和 Col3 和
  • 分组
  • 添加新列 Count :每组的大小
  • 添加新列 Col4_sum :每组中每个 Col4 的总和


  • 输出需求
    Col1    Col2    Col3    Count   Col4_sum
    ----------------------------------------
    A 1 AA 2 15
    A 2 AB 1 30
    B 4 FF 1 10
    C 1 HH 1 4
    C 3 GG 2 13
    D 1 AA 1 4
    D 3 FF 1 6

    我尝试使用
    df1.groupby(['Col1','Col2','Col3']).size 

    但只得到 Count 列。

    最佳答案

    使用 GroupBy.agg 使用元组指定具有新列名称的聚合函数:

    df = (df1.groupby(['Col1','Col2','Col3'])['Col4']
    .agg([('Count','size'), ('Col4_sum','sum')])
    .reset_index())
    print (df)
    Col1 Col2 Col3 Count Col4_sum
    0 A 1 AA 2 15
    1 A 2 AB 1 30
    2 B 4 FF 1 10
    3 C 1 HH 1 4
    4 C 3 GG 2 13
    5 D 1 AA 1 4
    6 D 3 FF 1 6

    在 Pandas 0.25+ 中可以使用 named aggregation :
    df = (df1.groupby(['Col1','Col2','Col3'])
    .agg(Count=('Col5', 'size'), Col4_sum=('Col4', 'sum'))
    .reset_index())
    print (df)
    Col1 Col2 Col3 Count Col4_sum
    0 A 1 AA 2 15
    1 A 2 AB 1 30
    2 B 4 FF 1 10
    3 C 1 HH 1 4
    4 C 3 GG 2 13
    5 D 1 AA 1 4
    6 D 3 FF 1 6

    关于python - Pandas 数据框,如何按多列分组并对特定列应用总和并添加新的计数列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58969625/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com