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

Pandas DataFrame列与相邻行值相减生成新列报错问题咨询

报错原因
  • 该错误为类型不匹配导致:报错信息中的dtype('<U4')表示字符串类型,说明你参与计算的Stock或Sold Number列存在非数值的字符串值,无法直接和int64类型的数值执行减法运算。通常是导入数据时字段里混有空格、特殊符号等隐藏字符,导致列被识别为字符串类型。
  • 额外说明:你使用的逐行循环写法在pandas中效率极低,处理大体积数据时性能会很差,建议用pandas自带的向量化运算方法实现。
正确实现步骤

第一步:修正字段数据类型

先清理数值列的异常字符,再转为整型:

# 清理字段内多余空格,统一转为int类型
Numbers['Stock'] = Numbers['Stock'].astype(str).str.strip().astype(int)
Numbers['Sold Number'] = Numbers['Sold Number'].astype(str).str.strip().astype(int)

第二步:向量化计算新列

用shift(-1)方法直接获取下一行的Stock值,一行代码完成计算:

# shift(-1)作用是将列整体上移一行,当前行自动对应原下一行的Stock值
Numbers['PrepNumber'] = Numbers['Stock'].shift(-1) - (Numbers['Stock'] - Numbers['Sold Number'])

运算完成后最后一行的PrepNumber会自动为NaN空值,完全符合你的预期输出要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:57:02