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

Pandas DataFrame eval函数除法运算报错,乘法正常如何解决?

解决Pandas eval除法报错:TypeError: unsupported operand type(s) for /: 'object' and '<class 'int'>'

你的问题很典型——虽然df.eval('I = G * H')能正常运行,但加了除法操作就报错,核心原因是列G或H的数据类型是object(大概率是字符串格式的数值)。

为什么乘法能运行但除法不行?

pandas对object类型(字符串)和整数的乘法有特殊兼容逻辑:它会把字符串重复指定次数(比如'123' * 2会变成'123123'),所以不会报错,但这其实不是你想要的数值乘法!而除法没有这种字符串兼容处理,直接抛出了类型不支持的错误。

解决方案

方案1:在eval表达式中显式转换数据类型

直接在计算表达式里用astype()把列转成数值类型后再运算:

df.eval('I = (G.astype(float) * H.astype(float)) / 10000', inplace=True)

如果你的数据是整数类型,也可以用astype(int),根据实际业务场景选择即可。

方案2:提前转换列的数据类型(推荐)

如果后续还要用G、H列做其他数值计算,提前把它们转成数值类型会更高效,也能避免重复转换:

# 转换G和H列为浮点型
df[['G', 'H']] = df[['G', 'H']].astype(float)
# 现在再执行原eval语句就不会报错了
df.eval('I = (G * H) / 10000', inplace=True)

如果转换时遇到非数值的字符串,可以用pd.to_numeric()并设置errors='coerce',把无效值统一转成NaN:

df['G'] = pd.to_numeric(df['G'], errors='coerce')
df['H'] = pd.to_numeric(df['H'], errors='coerce')

验证数据类型

执行以下代码可以确认G、H列的类型是否已正确转换:

print(df.dtypes)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:56:08