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

Pandas如何根据存储列名列表的列逐行对指定多列求和

错误原因

你之前的两种写法都是将整个test_sum_list列的所有值统一作为列选择列表,没有逐行读取当前行对应的待求和列名,不符合逐行按不同规则求和的需求。

解决方法

逐行处理时先拆分当前行的test_sum_list得到待求和列名,再对对应列的值求和即可,代码如下:

joined_data['Total'] = joined_data.apply(
    lambda row: row[row['test_sum_list'].split(', ')].sum(), 
    axis=1
)

如果你的test_sum_list里的分隔符格式不统一(有的逗号后有空格、有的没有),可以用兼容性更强的写法:

joined_data['Total'] = joined_data.apply(
    lambda row: row[[col.strip() for col in row['test_sum_list'].split(',')]].sum(), 
    axis=1
)

完整测试代码(可直接运行验证)

import pandas as pd

# 构造示例数据
data = {
    'Class': ['A', 'B', 'C'],
    'F12_14': [4, 35, 66],
    'F15_17': [5, 36, 67],
    'F18_20': [6, 37, 68],
    'test_sum_list': ['F12_14', 'F12_14, F15_17', 'F12_14, F15_17, F18_20']
}
joined_data = pd.DataFrame(data)

# 计算Total列
joined_data['Total'] = joined_data.apply(
    lambda row: row[row['test_sum_list'].split(', ')].sum(), 
    axis=1
)

print(joined_data)

运行后输出结果和你预期的完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:24:02