Python Pandas DataFrame两列相乘异常:字符串重复而非数值乘积
问题原因与解决方法
核心原因
你遇到的问题是因为**orderedQuantity.amount和netCost.amount两列是字符串类型(object)**,而非数值类型(int/float)。在Python中,字符串与整数相乘的行为是重复字符串,比如执行"12" * 3会得到"121212",这就是你看到错误结果的原因。
解决步骤
验证数据类型
先查看DataFrame各列的类型,确认问题:print(df.dtypes)目标列会显示为
object类型。转换为数值类型
使用pd.to_numeric()将字符串列转为数值类型,同时处理可能的非数值异常:df['orderedQuantity.amount'] = pd.to_numeric(df['orderedQuantity.amount'], errors='coerce') df['netCost.amount'] = pd.to_numeric(df['netCost.amount'], errors='coerce')errors='coerce':将无法转换的内容转为NaN,方便后续处理空值;若想直接排查异常值,可改用errors='raise'触发报错。
执行相乘操作
转换完成后,再用*或mul方法计算乘积,就能得到正确结果:df['totalcost'] = df['orderedQuantity.amount'] * df['netCost.amount'] # 或使用mul方法 df['totalcost'] = df['orderedQuantity.amount'].mul(df['netCost.amount'])
内容的提问来源于stack exchange,提问作者Reg
相关产品推荐
相关产品推荐

