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

如何基于Pandas DataFrame日期列新增对应月份最后一天列?

代码失效原因

pd.Period仅支持处理单个标量日期值,直接传入整列Series格式的日期数据会触发类型错误,无法完成批量计算,这是你之前代码未达预期的核心原因。

实现方案

以下两种都是Pandas原生的向量化实现,无需编写循环,执行效率高,可直接使用:

  • 方案1:月末偏移量实现(最简洁,性能最优)
    先将日期列统一转为datetime类型,再通过Pandas内置的MonthEnd偏移量直接计算对应月份的最后一天:
    # 统一日期列类型,规避类型报错
    df['date'] = pd.to_datetime(df['date'])
    # 参数0保证传入日期本身是当月最后一天时,不会跳转到下一月月末
    df['last_day_in_month'] = df['date'] + pd.offsets.MonthEnd(0)
    
    如果需要返回纯date格式而非datetime格式,在代码末尾追加.dt.date即可。
  • 方案2:沿用Period逻辑的正确写法
    借助.dt访问器逐元素处理整列日期,实现你最初的编码思路:
    df['date'] = pd.to_datetime(df['date'])
    df['last_day_in_month'] = df['date'].dt.to_period('M').dt.end_time.dt.date
    
效果验证

用测试数据运行后输出完全匹配需求:

date last_day_in_month
0 2023-01-05        2023-01-31
1 2023-02-15        2023-02-28
2 2023-04-30        2023-04-30

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:09:49