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

如何合并DataFrame的年月列并生成对应月末日期列?

如何给包含月份和年份的DataFrame添加月末日期列?

你可以通过Pandas的日期处理工具快速生成月末日期,以下是两种简洁的实现方式:

方法一:使用MonthEnd偏移量

这种方法直接将年份和月份拼接为日期字符串,转换为datetime后加上月末偏移量,自动处理闰年等特殊情况:

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

# 初始化原始DataFrame
A = [2, 3, 4]
B = [2013, 2014, 2015]
df = pd.DataFrame({
    'A': A,
    'B': B,
})

# 生成月末日期列
df['assessDate'] = pd.to_datetime(df['B'].astype(str) + '-' + df['A'].astype(str)) + MonthEnd(0)

# 若需要将日期转为字符串格式(如"2013-02-28"),可添加:
# df['assessDate'] = df['assessDate'].dt.strftime('%Y-%m-%d')

方法二:利用当月天数计算

通过构造当月第一天的日期,再根据当月总天数推算月末:

import pandas as pd

# 初始化原始DataFrame
A = [2, 3, 4]
B = [2013, 2014, 2015]
df = pd.DataFrame({
    'A': A,
    'B': B,
})

# 构造当月第一天的日期
df['first_day'] = pd.to_datetime({'year': df['B'], 'month': df['A'], 'day': 1})
# 计算月末日期
df['assessDate'] = df['first_day'] + pd.DateOffset(days=df['first_day'].dt.days_in_month - 1)
# 可删除临时列first_day
# df.drop('first_day', axis=1, inplace=True)

运行后,df会新增assessDate列,对应每个月份的最后一天,结果如下:

ABassessDate
220132013-02-28
320142014-03-31
420152015-04-30

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:38:29