Pandas时区感知datetime索引与Timestamp比较出现TypeError如何解决
问题解决方法
报错原因
你的DataFrame索引是带UTC时区标注的datetime64[ns, UTC]类型,而你生成的比较阈值Timestamp没有关联时区信息,pandas不允许带时区和不带时区的时间直接比较,因此触发类型错误。
解决代码
直接生成带UTC时区的当前时间阈值即可完成合法比较,完整操作代码如下:
# 生成带UTC时区的当前UTC时间阈值 threshold = pd.Timestamp.utcnow() # 保留阈值及之后的所有数据,等价于删除阈值之前的数据 candle_data['min'] = candle_data['min'][candle_data['min'].index >= threshold]
补充说明
- 如果你要沿用原有基于datetime模块的写法,只需要给生成的Timestamp补充时区标注即可:
import datetime threshold = pd.to_datetime(datetime.datetime.utcnow()).tz_localize('UTC') - 注意如果
min是你candle_data的字符串键,请务必添加引号写成candle_data['min'],避免触发变量未定义的NameError。
内容的提问来源于stack exchange,提问作者user1601716
相关产品推荐
相关产品推荐

