如何用Pandas将每日新冠病例数据转换为周度均值数据
问题解决:将每日新冠病例数据转为周度均值
你遇到的AttributeError是因为pandas的pd.offsets模块里根本没有timedelta这个属性,而且旧代码里的loffset参数在新版pandas中已被弃用,用以下方法即可实现按周计算均值的需求:
正确实现代码
基于你已经处理好的df,直接执行以下代码:
# 将Date列设为时间索引(resample操作依赖时间索引) df = df.set_index('Date') # 按周重采样,计算New Cases的均值 # 默认周周期为「周日到周六」,若要改为「周一到周日」,将规则改为'W-MON' weekly_df = df.resample('W')['New Cases'].mean().reset_index() # 可选:将周标签从周末(如周日)调整为周初(如周一) weekly_df['Date'] = weekly_df['Date'] - pd.Timedelta(days=6) # 可选:重命名列名,让结果更清晰 weekly_df = weekly_df.rename(columns={'New Cases': 'Weekly Average New Cases'})
关键说明
resample规则:'W'代表自然周(默认以周日为周结束),其他常用规则包括'W-MON'(周一结束)、'W-TUE'(周二结束),可根据需求调整。- 时间差正确用法:用
pd.Timedelta(days=6)替代错误的pd.offsets.timedelta,这是pandas中生成时间差的标准方式。 - 索引重置:
reset_index()将时间索引转回普通列,方便后续的数据分析或可视化操作。
内容的提问来源于stack exchange,提问作者Formal_that
相关产品推荐
相关产品推荐

