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

如何实现DataFrame两列相乘并生成新列?TypeError报错求解

解决方案

问题根源

你遇到的TypeError是因为SS(mg/l)列的数据类型不是数值型(实际是字符串/object类型),无法和H04_PEDRO_MARIN列的浮点数值直接相乘。从你的DataFrame示例能看到,SS(mg/l)列里的0、80.4看似是数字,但实际被识别成了字符串序列。

具体解决步骤

  1. 确认列的数据类型
    运行以下代码查看各列类型:
print(C.dtypes)

你会发现SS(mg/l)列的类型是object,而H04_PEDRO_MARIN是float64。

  1. 将SS(mg/l)列转换为数值类型
    用pd.to_numeric强制转换,同时处理无法转换的异常值(比如空字符串、非数字内容):
import pandas as pd

# 转换列,无法转换的值转为NaN
C['SS(mg/l)'] = pd.to_numeric(C['SS(mg/l)'], errors='coerce')

# 可选:如果需要填充NaN值,比如用0替代
C['SS(mg/l)'] = C['SS(mg/l)'].fillna(0)
  1. 执行列相乘操作
    现在两种方法都能正常运行:
  • 直接列相乘:
C['multiplication'] = C['H04_PEDRO_MARIN'] * C['SS(mg/l)']
  • 用prod函数:
cols = ['H04_PEDRO_MARIN','SS(mg/l)']
C['multiplication'] = C[cols].prod(axis=1)

额外修正

你之前的第一段代码有语法错误:C['multiplicaction'] = C['H04_PEDRO_MARIN'][1])*(C['SS(mg/l)'])多了一个右括号,而且[1]只会取第二行的单个值,不是整列相乘,这也是导致错误的原因之一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 17:39:24