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

如何在Pandas DataFrame中高效对多组列执行相同操作?

解决方案

1. 修复你的函数

你的函数返回None是因为没有写return语句,Python函数如果没有显式return,默认返回None。修正如下:

def calculate_difference(df, sum_cols_start: str, sum_cols_end: str, subtract_col: str):
    return df.loc[:, sum_cols_start:sum_cols_end].sum(numeric_only=True, axis=1) - df.loc[:, subtract_col]

# 测试调用
df['A_dif'] = calculate_difference(df, 'A1', 'A3', 'A4')
df['B_dif'] = calculate_difference(df, 'B1', 'B3', 'B4')

调用后就能得到正确计算结果,生成A_dif和B_dif列。

2. 更高效的批量处理方案

因为你有10组类似列(A、B、C...),手动调用函数过于繁琐。可以通过提取列名前缀自动批量处理,代码简洁易维护:

# 提取所有唯一的列前缀(自动识别A、B,后续新增C/D等也无需修改)
prefixes = sorted({col[0] for col in df.columns})

# 遍历每个前缀,自动计算并生成新列
for prefix in prefixes:
    sum_cols_start = f"{prefix}1"
    sum_cols_end = f"{prefix}3"
    subtract_col = f"{prefix}4"
    df[f"{prefix}_dif"] = df.loc[:, sum_cols_start:sum_cols_end].sum(numeric_only=True, axis=1) - df.loc[:, subtract_col]

运行后会自动为所有前缀生成对应的X_dif列,后续新增列组也能直接兼容。

验证结果

处理后的DataFrame新增列结果示例:

A1  A2  A3  A4  B1  B2  B3  B4  A_dif  B_dif
0  10  10  30  75  10  30  10  40    -25     10
1  20  20   0   0  20   0  10  30     40      0
2  30  30  40   0  30  20  20  20    100     50
3  10  40  10  25  40  40  30  10     35    100

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:05:09