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

Pandas按条件对DataFrame列做乘法求和报错求助(TypeError)

问题解决:DataFrame条件数学运算的TypeError错误

错误原因

你的代码里'purchase_price'*'amount'是将两个列名的字符串直接相乘,Python不支持字符串与字符串相乘,因此抛出TypeError: can't multiply sequence by non-int of type 'str'。你需要的是对列对应的值做乘法,而非列名字符串。

正确写法

以下是几种高效的实现方式:

方式1:向量化运算(推荐,效率更高)

# 定义筛选条件:sale_price为NaN的行
mask = df['sale_price'].isna()
# 对符合条件的行,取两列对应元素相乘后求和
open_position = (df.loc[mask, 'purchase_price'] * df.loc[mask, 'amount']).sum()

方式2:逐行计算(适合小数据集)

open_position = df[df['sale_price'].isna()].apply(lambda row: row['purchase_price'] * row['amount'], axis=1).sum()

额外注意事项

如果运行仍报错,检查purchase_price和amount列的数据类型是否为数值型(int/float)。如果是字符串类型,先转换为数值:

df['purchase_price'] = pd.to_numeric(df['purchase_price'], errors='coerce')
df['amount'] = pd.to_numeric(df['amount'], errors='coerce')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:09:24