如何在pandas DataFrame中对日期列按月增量并更新数据
报错原因
当前DataFrame的date列存储值为字符串格式,并非pandas支持日期运算的datetime类型对象,字符串无法直接与pd.DateOffset日期偏移对象做拼接/算术运算,因此触发类型报错。
修复方案
先将字符串格式的日期列转换为pandas datetime类型,再执行自定义月数的偏移计算,最后将计算结果赋值回原列即可完成更新,具体操作步骤如下:
- 调用
pd.to_datetime()方法将date列从字符串转换为标准日期类型 - 传入自定义的月数参数构建
DateOffset对象,和转换后的日期列做加法运算 - 将运算结果重新赋值给
df['date'],覆盖原有值
完整可运行代码:
import pandas as pd # 构建原始数据集 df = pd.DataFrame({'num_posts': [4, 6, 3, 9, 1, 14, 2, 5, 7, 2], 'date': ['2020-08-09', '2020-08-25', '2020-09-05', '2020-09-12', '2020-09-29', '2020-10-15', '2020-11-21', '2020-12-02', '2020-12-10', '2020-12-18']}) # 自定义需要增加的月数 plus_month_period = 1 # 类型转换+日期偏移+结果赋值 df['date'] = pd.to_datetime(df['date']) + pd.DateOffset(months=plus_month_period) # 查看更新后的结果 print(df)
补充说明:转换为datetime类型后,pandas会自动处理跨年月的日期偏移逻辑,例如原日期
2020-12-18加1个月后会正确返回2021-01-18,无需手动处理年份进位。如果后续需要做时间维度的筛选、分组、聚合,保留datetime类型也会比字符串类型更高效。
内容的提问来源于stack exchange,提问作者Bernietechy
相关产品推荐
相关产品推荐

