【问题标题】:Different column aggregations in python dataframepython数据框中的不同列聚合
【发布时间】:2021-06-16 19:15:14
【问题描述】:

如何在作为列聚合的数据帧的最后一行。但是,它是少数的总和,而其他的则是最大值?

import pandas as pd

data = [
    ["id_1",6,7,9],
    ["id_2",9,7,1],
    ["id_3",6,7,10],
    ["id_4",9,5,10]
]
df = pd.DataFrame(data, columns = ['Student Id', 'Math', 'Physical', 'Flag'])

     Student Id  Math  Physical  Flag
0       id_1     6         7          9
1       id_2     9         7          1
2       id_3     6         7         10
3       id_4     9         5         10

我想最后得到一行作为总数,这给了我数学和物理的列总和和标志的最大值。排除 student_id 列

     Student Id  Math  Physical  Chemistry
0       id_1     6         7          9
1       id_2     9         7          1
2       id_3     6         7         10
3       id_4     9         5         10
       (Total)   30        26         10

我可以通过下面的方式求和,但是如何为不同的列获取不同的聚合并排除 NAN

df.loc['(TOTAL)'] = df[['Math', 'Physical' ]].sum(axis = 0)  

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    使用DataFrame.agg 指定聚合,对于新的总行使用DataFrame.set_index

    df = df.set_index('Student Id')
    df.loc['(TOTAL)'] = df.agg({'Math':'sum', 'Physical':'sum', 'Flag':'max'})
    df = df.reset_index()
    print (df)
      Student Id  Math  Physical  Flag
    0       id_1     6         7     9
    1       id_2     9         7     1
    2       id_3     6         7    10
    3       id_4     9         5    10
    4    (TOTAL)    30        26    10
    

    或仅替换指定列的NaN

    df.loc[len(df)] = df.agg({'Math':'sum', 'Physical':'sum', 'Flag':'max'})
    df = df.fillna({'Student Id':'(TOTAL)'})
    
    print (df)
      Student Id  Math  Physical  Flag
    0       id_1   6.0       7.0   9.0
    1       id_2   9.0       7.0   1.0
    2       id_3   6.0       7.0  10.0
    3       id_4   9.0       5.0  10.0
    4    (TOTAL)  30.0      26.0  10.0
    

    【讨论】:

      猜你喜欢
      • 2016-03-02
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多