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
相关产品推荐
相关产品推荐

