You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对Pandas datetime64类型列计算两个月前的月初日期

解决pandas日期列生成两月前月初的方法

timedelta本身不支持月份级别的时间偏移(每月天数不固定),relativedelta直接作用于Series会存在兼容性问题,用pandas原生的时间偏移方法即可实现需求。

实现步骤

  • 导入pandas内置的DateOffset处理月份偏移
  • 对col1做两个月的偏移后,取当月第一天即可

完整代码示例

import pandas as pd
from pandas.tseries.offsets import DateOffset

# 假设你的原始DataFrame为df
# 先做两个月时间偏移,再取对应月份的第一天
df['col2'] = (df['col1'] - DateOffset(months=2)).dt.to_period('M').dt.to_timestamp()

# 如果需要col2输出为yyyy-dd-mm格式的字符串,可以追加格式转换逻辑
df['col2'] = df['col2'].dt.strftime('%Y-%d-%m')

效果验证

拿你给出的示例测试:col1值为2021-01-07(按yyyy-dd-mm规则解析为2021年7月1日),运算后得到的col2字符串格式为2021-01-05,和预期结果一致。

注意事项

  • 如果你的col1还未转为datetime类型,需要先执行df['col1'] = pd.to_datetime(df['col1'], format='%Y-%d-%m')完成类型转换
  • 该方法是pandas原生向量化运算,效率远高于用apply调用relativedelta的实现

内容的提问来源于stack exchange,提问作者sayan sen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:24:03