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

如何按日值阈值调整Pandas数据框中日期列的日期?

按条件调整DataFrame日期至月末

问题场景

现有包含日期列的DataFrame:

dates
0 2017-09-19
1 2017-08-28
2 2017-07-13

需要按以下规则调整日期:

  • 日期日部分小于15时,改为上月月末
  • 日期日部分大于等于15时,改为当月月末

期望输出:

dates
0 2017-09-30
1 2017-08-31
2 2017-06-30

解决方案(Pandas实现)

利用Pandas的日期偏移工具可高效完成需求,代码如下:

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

# 构造示例数据
df = pd.DataFrame({'dates': ['2017-09-19', '2017-08-28', '2017-07-13']})
# 将字符串日期转为datetime类型(必须步骤)
df['dates'] = pd.to_datetime(df['dates'])

# 按条件调整日期
df['dates'] = df['dates'].apply(
    lambda x: (x - pd.DateOffset(months=1)) + MonthEnd(0) if x.day < 15 else x + MonthEnd(0)
)

# 查看结果
print(df)

代码说明

  1. 类型转换:先用pd.to_datetime将字符串列转为datetime格式,这是日期处理的基础
  2. 条件判断与日期偏移:
    • 当日期的日部分小于15时,先通过pd.DateOffset(months=1)减去一个月,再用MonthEnd(0)获取该月的最后一天
    • 当日期的日部分大于等于15时,直接用MonthEnd(0)获取当月最后一天

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:15:23