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

如何给pandas datetime类型日期加天数直到达到指定的25号?

pandas日期调整为当月25号实现方案

原代码问题分析

  1. 对date列单独使用apply时,lambda的入参x是单个datetime对象,不是包含date字段的行对象,x['date']的写法会直接报错
  2. 逻辑只实现了单次加1天,没有循环累加直到日为25,自然达不到需求
  3. 逐行循环的实现方案虽然能跑出正确结果,但数据量较大时效率极低,优先使用pandas向量化操作

场景1:统一调整为当月25号(匹配给出的样例需求)

无论原日期的日是多少,直接替换为当月25号,实现代码如下:

import pandas as pd

# 先将date列转为datetime类型
df['date'] = pd.to_datetime(df['date'])
# 直接计算和25号的差值,补到25号
df['date'] = df['date'] + pd.to_timedelta(25 - df['date'].dt.day, unit='d')

运行后输出和预期结果完全一致:

name       date
0    Tom 2021-12-25
1    Sue 2021-11-25
2  Steve 2021-10-25

场景2:原日期超过25号时,向上调整为下个月25号

如果需要严格遵循「向上调整」的逻辑,即原日期日>25时取下个月25号,可以用如下实现:

df['date'] = pd.to_datetime(df['date'])
# 先算出当月25号
month_25 = df['date'].dt.to_period('M').dt.to_timestamp() + pd.Timedelta(days=24)
# 原日期比当月25号大的,就加一个月
df['date'] = month_25.where(df['date'] <= month_25, month_25 + pd.DateOffset(months=1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:36:05