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

如何在Python Pandas中合并两列生成日-月-年格式日期?

解决DataFrame合并年份与月份列并转换为日-月-年格式日期的问题

问题说明

需要把DataFrame里的整数类型Year列和对象类型Period列合并成一列,最终整理成日-月-年格式的日期,但合并及日期转换过程中遇到了问题。

示例数据:

Series Id   Year    Period  Value
0   CUSR0000SAF1    2012    M01 232.213
1   CUSR0000SAF1    2012    M02 232.140
2   CUSR0000SAF1    2012    M03 232.591
3   CUSR0000SAF1    2012    M04 233.044
4   CUSR0000SAF1    2012    M05 233.219

已尝试的无效代码:

df['Year'] = pd.to_datetime(df['Year'], format="%d/%m/%Y")

解决方案

步骤1:提取月份并拼接日期字符串

Period列格式是MXX,先提取其中的月份数字,再和Year拼接成YYYY-MM格式的字符串(默认取当月第一天作为日期):

# 去掉Period里的'M'前缀,提取月份数字
df['Month'] = df['Period'].str.replace('M', '')
# 拼接成年份-月份的字符串
df['Date_str'] = df['Year'].astype(str) + '-' + df['Month']

步骤2:转换为datetime类型并格式化输出

把拼接好的字符串转为datetime类型,再通过dt.strftime格式化成日-月-年格式:

# 转换为datetime类型
df['Date'] = pd.to_datetime(df['Date_str'])
# 格式化为日-月-年的字符串形式
df['Formatted_Date'] = df['Date'].dt.strftime('%d-%m-%Y')

完整代码示例

import pandas as pd

# 构造示例数据
data = {
    'Series Id': ['CUSR0000SAF1']*5,
    'Year': [2012]*5,
    'Period': ['M01', 'M02', 'M03', 'M04', 'M05'],
    'Value': [232.213, 232.140, 232.591, 233.044, 233.219]
}
df = pd.DataFrame(data)

# 执行日期处理流程
df['Month'] = df['Period'].str.replace('M', '')
df['Date_str'] = df['Year'].astype(str) + '-' + df['Month']
df['Date'] = pd.to_datetime(df['Date_str'])
df['Formatted_Date'] = df['Date'].dt.strftime('%d-%m-%Y')

# 查看最终结果
print(df[['Series Id', 'Formatted_Date', 'Value']])

结果输出

Series Id Formatted_Date    Value
0  CUSR0000SAF1      01-01-2012  232.213
1  CUSR0000SAF1      01-02-2012  232.140
2  CUSR0000SAF1      01-03-2012  232.591
3  CUSR0000SAF1      01-04-2012  233.044
4  CUSR0000SAF1      01-05-2012  233.219

补充说明

  • 原尝试代码出错原因:直接把整数类型的Year按%d/%m/%Y格式转换,该格式要求输入是日/月/年的字符串,和整数年份不匹配,导致转换失败。
  • 如果需要用当月最后一天作为日期,可以用pd.offsets.MonthEnd(0)调整:
df['Date'] = pd.to_datetime(df['Date_str']) + pd.offsets.MonthEnd(0)
df['Formatted_Date'] = df['Date'].dt.strftime('%d-%m-%Y')

此时结果会显示当月最后一天,比如31-01-2012、29-02-2012等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:50:25