You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python pandas中编写通用DataFrame求和处理函数

Pandas 汇总行通用封装函数实现

函数实现

以下是适配不同列名同结构DataFrame的通用封装函数,内置了多场景条件判断:

import pandas as pd

def sum_handler(df, sum_cols=None, non_sum_fill_value='', sum_row_label='sum', place_top=True, skipna=True):
    # 条件1:未指定求和列时自动识别所有数值类型列作为求和列
    if sum_cols is None:
        sum_cols = df.select_dtypes(include='number').columns.tolist()
    # 条件2:指定的求和列存在缺失,直接返回原DataFrame避免运行报错
    elif not set(sum_cols).issubset(df.columns):
        return df
    # 条件3:输入DataFrame为空时直接返回
    if df.empty:
        return df
    
    # 计算求和行数据
    sum_row = df[sum_cols].sum(skipna=skipna).to_frame().T
    # 非求和列统一填充指定值
    for col in df.columns:
        if col not in sum_cols:
            sum_row[col] = non_sum_fill_value
    # 存在name列时单独填充汇总标识
    if 'name' in df.columns:
        sum_row['name'] = sum_row_label
    
    # 合并汇总行与原DataFrame
    if place_top:
        res_df = pd.concat([sum_row, df], ignore_index=True)
    else:
        res_df = pd.concat([df, sum_row], ignore_index=True)
    return res_df

调用示例

针对你提供的示例DataFrame,可直接按以下方式调用:

# 手动指定需要求和的列
df = sum_handler(df, sum_cols=['value_a','value_b','difference'])
# 也可不指定sum_cols,函数会自动识别所有数值列完成求和
df = sum_handler(df)

参数说明

  • sum_cols:需要求和的列名列表,默认不传时自动识别所有数值类型列求和
  • non_sum_fill_value:非求和列在汇总行的填充值,默认填空字符串
  • sum_row_label:汇总行name列的标识内容,默认填sum
  • place_top:是否将汇总行放在表格顶部,默认True,设为False则放在底部
  • skipna:求和时是否忽略空值,默认True

内容的提问来源于stack exchange,提问作者Elsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:54:03