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

Pandas DataFrame报Invalid Key错误,使用loc计算列差值报错如何解决?

报错原因

  • 核心是loc赋值语法使用错误。pandas中通过loc给指定位置赋值的标准语法是df.loc[行筛选规则, 目标列名] = 待写入的值,你写的代码试图修改loc返回结果的index属性,完全不符合赋值逻辑,因此会触发key类型错误。
  • 存在隐性逻辑问题:你判断值不等于'0'(字符串0),如果两列是数值类型,该判断条件会直接失效,把实际为数值0的行也纳入计算范围。

修复方案

如果你的两列本身就是数值类型,直接修改赋值逻辑即可,代码如下:

df.loc[(df['Original Price'] != 0) & (df['Old Original Price'] != 0), 'Price Difference'] = df['Original Price'] - df['Old Original Price']

如果两列存储的是字符串格式的价格,建议先转成数值类型再计算,避免字符串运算报错:

import pandas as pd
# 转换两列为数值类型,非法值自动转为NaN
df['Original Price'] = pd.to_numeric(df['Original Price'], errors='coerce')
df['Old Original Price'] = pd.to_numeric(df['Old Original Price'], errors='coerce')
# 赋值计算差值
df.loc[(df['Original Price'] != 0) & (df['Old Original Price'] != 0), 'Price Difference'] = df['Original Price'] - df['Old Original Price']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:45:02