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

Pandas DataFrame按行实现多列与指定列相乘后求和的问题

Pandas计算Sum_Price的问题解析

问题原因

你用df.iloc[:,2:4]*df.iloc[:,5]出现额外列的原因有两个:

  • 列范围选取错误:iloc[:,2:4]是左闭右开的索引规则,只包含第2、3列(对应Col1、Col2),漏掉了需要参与计算的Col3(第4列)。
  • 广播机制生成多列:当多列DataFrame和单列Series相乘时,Pandas会触发广播逻辑,让单列与每一列分别相乘,最终生成和原多列数量一致的结果列(即Col1Price、Col2Price这两列),而非直接求和后的单列,所以会出现“额外列”。

正确实现方式

方法一:用iloc索引实现

先选取正确的列范围(Col1、Col2、Col3对应索引2到5,左闭右开),乘以Price列后按行求和:

# 计算每行Col1*Price + Col2*Price + Col3*Price的结果
df['Calculated_Sum_Price'] = df.iloc[:,2:5].mul(df.iloc[:,5], axis=0).sum(axis=1)

方法二:直接用列名实现(更直观)

如果列名固定,直接通过列名计算可读性更强:

# 先求和系数再乘Price,等价于分别相乘后累加
df['Calculated_Sum_Price'] = (df['Col1'] + df['Col2'] + df['Col3']) * df['Price']

# 或者分开计算后累加
df['Calculated_Sum_Price'] = df['Col1']*df['Price'] + df['Col2']*df['Price'] + df['Col3']*df['Price']

两种方法都能得到和原Sum_Price列完全一致的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:02:39