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

Pandas DataFrame两列相乘结果异常,寻求正确实现方案

问题分析与解决方法

错误原因

你遇到的问题是列名size和DataFrame内置的size属性重名了:

  • df.size是DataFrame的内置属性,返回整个DataFrame的总元素数量(你的df有10行3列,总元素数为30)
  • 所以df.price * df.size实际是把price列的每个值都乘以30,比如第一行10×30=300,和你得到的错误结果完全对应

正确的简洁写法

要访问size列而非内置属性,改用方括号索引即可,直接完成高效的向量化计算:

df['values'] = df['price'] * df['size']

执行后values列会得到正确的逐行乘积结果:

0    10
1    18
2    24
3    28
4    30
5    30
6    28
7    24
8    18
9    10
Name: values, dtype: int64

关于你的循环代码

你的循环里还有一处小错误:df[i,3]的索引方式不正确,应该改用df.iloc[i, 3]或df.loc[i, 'values']。不过完全没必要用循环实现,上面的向量化写法不仅简洁,执行效率也远高于循环(数据量越大优势越明显)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 07:50:03