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

Python中DataFrame的YYMM格式日期转换为指定格式的方法求助

解决YYMM格式转指定日期格式的问题

别担心,这个问题很常见,我来帮你搞定!你之前用pd.to_datetime没得到预期结果,大概率是没指定正确的格式参数,导致pandas没法准确解析你的YYMM数据。

分步解决方案:

1. 正确解析YYMM为datetime对象

首先,我们需要明确告诉pandas你的日期格式是YYMM(两位年份+两位月份),用format='%y%m'参数就能让它准确识别。这里要注意两个细节:

  • 如果你的列是整数类型(比如9601),最好先转成字符串,还要用str.zfill(4)补全前导零到4位——避免像0012这种值被存储为整数12后,位数不足导致解析失败。
  • 解析完成后,pandas会自动把日期设为当月的第一天,正好匹配你要的01-01-YYYY中的日部分。

示例代码:

import pandas as pd

# 假设你的DataFrame是df,目标列叫'yymm'
df['yymm_str'] = df['yymm'].astype(str).str.zfill(4)  # 转字符串并补全4位
df['datetime'] = pd.to_datetime(df['yymm_str'], format='%y%m')

2. 转换为目标字符串格式

如果需要得到01-01-1996这种字符串格式的结果,用dt.strftime()方法指定格式即可:

df['formatted_date'] = df['datetime'].dt.strftime('%d-%m-%Y')

完整示例

# 创建测试数据
data = {'yymm': [9601, 0012, 2305, 9911]}
df = pd.DataFrame(data)

# 处理并转换
df['yymm_str'] = df['yymm'].astype(str).str.zfill(4)
df['datetime'] = pd.to_datetime(df['yymm_str'], format='%y%m')
df['formatted_date'] = df['datetime'].dt.strftime('%d-%m-%Y')

print(df)

输出结果:

yymm yymm_str   datetime formatted_date
0  9601    9601 1996-01-01     01-01-1996
1    12    0012 2000-12-01     01-12-2000
2  2305    2305 2023-05-01     01-05-2023
3  9911    9911 1999-11-01     01-11-1999

补充说明

  • 关于年份解析:pandas默认会把00-69解析为2000-2069,70-99解析为1970-1999,这基本符合大多数场景的需求。如果有特殊年份规则,可以调整yearfirst或errors参数。
  • 如果你只需要字符串格式,也可以尝试一步完成,但先转成datetime对象会更灵活,方便后续做日期筛选、运算等操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:10:15