pandas1.1.3运行报错AttributeError: 'pandas.tseries.offsets'无timedelta属性如何解决
报错原因
pd.offsets模块下不存在timedelta类,该写法本身不符合pandas的API定义,和你是否单独导入Python标准库的timedelta没有关联。
修复方案
你可以任选以下任意一种方案修改代码,均可以实现原有预期的时间偏移效果:
- 方案1:直接使用Python标准库的
timedelta
你已经导入了timedelta,直接去掉pd.offsets前缀即可,修改后代码为:offset = timedelta(days=-6) - 方案2:使用pandas原生偏移类替换
如果要保留pandas offset模块的用法,可改用DateOffset类,修改后代码为:offset = pd.offsets.DateOffset(days=-6) - 方案3:简化日线转周线逻辑(适用于你的业务场景)
如果你是要实现日线股票数据转周线的需求,不需要手动写偏移逻辑,直接使用pandas的resample语法即可,示例如下:# 按自然周(周日为周最后一天)聚合,可替换W-MON/W-FRI等指定周结束日期 weekly_df = daily_df.resample('W').agg({ 'open': 'first', 'high': 'max', 'low': 'min', 'close': 'last', 'volume': 'sum' })
效果验证
两种偏移写法的运行效果完全一致:
import pandas as pd from datetime import timedelta print(pd.Timestamp('2024-01-07') + timedelta(days=-6)) # 输出:2024-01-01 00:00:00 print(pd.Timestamp('2024-01-07') + pd.offsets.DateOffset(days=-6)) # 输出:2024-01-01 00:00:00
内容的提问来源于stack exchange,提问作者user14009897
相关产品推荐
相关产品推荐

