You need to enable JavaScript to run this app. pandas创建新列时提示Timestamp不再支持加减整数错误如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

pandas创建新列时提示Timestamp不再支持加减整数错误如何解决?

报错原因

你的x_valid索引为Timestamp时间戳类型,你在列表推导式中执行i+1操作时,是直接对时间戳类型的值做整数加法,新版pandas已经不支持时间戳与整数直接加减的用法,因此触发类型错误。
同时遍历索引取值的写法效率极低,更推荐用pandas内置向量化操作实现需求。

最优解决方案

你要实现「下一日价格高于当日就标记1,否则标记0」的需求,直接用shift()方法做序列移位对比即可,代码如下:

# shift(-1)表示将序列整体向上移位1位,取对应下一行的值
new['Shares'] = (x_valid.shift(-1) > x_valid).astype(int)

# 若最后一行无下一日数据不需要保留,可执行下面的代码删除最后一行
# new = new.iloc[:-1]

如果x_valid是多列DataFrame,需要指定对比的价格列,例如价格列名为close,修改为:

new['Shares'] = (x_valid['close'].shift(-1) > x_valid['close']).astype(int)
原写法兼容修复方案(不推荐,仅做参考)

如果一定要保留遍历的写法,需要遍历位置下标而非时间戳索引,修改如下:

# range(len(new)-1)避免最后一行下标越界,最后补0作为最后一行的默认值
new['Shares'] = [1 if x_valid.iloc[i+1] > x_valid.iloc[i] else 0 for i in range(len(new)-1)] + [0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 22:45:04