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

如何在DataFrame中从年(yyyy)月(m)列生成yyyymm格式列

问题描述

现有DataFrame数据示例如下:

YearMonthYear_mnth
19421194201
19422194202
19423194203
.........
194210194210
194211194211
194212194212

需要从Year(四位年份格式)和Month(单/双位数字格式)列生成yyyymm格式的Year_mnth列,核心需求是给单数字月份补零以统一格式。

解决方案

方法1:字符串补零拼接

将年份转为字符串,月份转为字符串后用zfill(2)补零,再直接拼接:

import pandas as pd

# 假设df是你的目标DataFrame
df['Year_mnth'] = df['Year'].astype(str) + df['Month'].astype(str).str.zfill(2)

str.zfill(2)会自动给长度不足2的字符串左侧补零,比如单数字月份1会转为'01',双数字月份10保持'10'不变。

方法2:f-string格式化拼接

利用f-string的格式控制语法,直接对月份进行补零处理:

df['Year_mnth'] = df.apply(lambda row: f"{row['Year']}{row['Month']:02d}", axis=1)

{row['Month']:02d}表示将月份格式化为两位整数,不足两位时自动在左侧补零。

方法3:借助日期格式转换

先将Year和Month组合成有效日期(指定日期为1号),再提取yyyymm格式的字符串:

df['Year_mnth'] = pd.to_datetime(df[['Year', 'Month']].assign(Day=1)).dt.strftime('%Y%m')

这种方法不仅能生成目标格式,还能自动校验日期合法性(比如月份超出1-12范围时会抛出错误)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:32:16