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

如何在Pandas DataFrame中对指定列求和并生成新列?

解决Pandas中添加C和E列求和的Total列问题

嘿,我来帮你搞定这个Pandas的问题!先看看你的代码哪里出了问题,再给你几个简洁靠谱的解决方案。

你的代码为啥跑不起来?

有几个关键错误:

  • 语法错误:df[iloc.:,[2,4]] 是完全错误的写法!iloc是DataFrame的内置属性,必须通过df.iloc调用,而且行和列的索引要用逗号分隔,正确写法是df.iloc[:, [2,4]]。
  • 冗余操作:sum(axis=1) 已经直接返回了每行C、E列的和(是一个Series),你没必要转成numpy数组再用列表推导式去取row[0]——而且一维数组里的每个元素都是单个数值,根本没有row[0]这个索引,这会直接报错。
  • 目标偏离:你想要的是给原DataFrame添加新列,结果却把存在列表df2里,方向完全错啦。

正确的实现方式

下面两种方法都符合你"避免循环、优先向量化操作"的需求,而且简洁高效:

方法1:直接用列名相加(最直观)

既然你明确知道要相加的列是C和E,直接列名相加是最简洁的写法:

import pandas as pd

data = [{'Title': 'Size', 'B': 20, 'C':30, 'D':15, 'E':15}, 
        {'Title': 'Length', 'B': 50,'C':60, 'D':14,'E':15}, 
        {'Title': 'Area', 'B': 4,'C':3, 'D':13,'E':15}]
df = pd.DataFrame(data)

# 直接给新列Total赋值C和E的和
df['Total'] = df['C'] + df['E']

print(df)

运行后输出:

Title   B   C   D   E  Total
0     Size  20  30  15  15     45
1   Length  50  60  14  15     75
2     Area   4   3  13  15     18

方法2:用iloc按列位置求和(适合列名不固定的场景)

如果你的列位置固定(比如C是第2列、E是第4列),可以用iloc来选择列后求和:

# 选择第2列(索引从0开始)和第4列,按行求和
df['Total'] = df.iloc[:, [2, 4]].sum(axis=1)

这里axis=1表示按行方向计算求和,结果直接赋值给新列即可,完全不需要循环或者列表推导。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 07:57:37