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

Pandas列操作后如何保留前导零?日期列提取年月份为规范数字格式

你原有代码出错的核心原因是切片范围错误,YYYY-MM-DD格式的字符串中,月份占据第5、6两个索引位置(索引从0开始计数,遵循左闭右开规则),你仅取了索引6的单个字符,自然丢失了月份的前导零。

以下是两种高效的向量化实现方案,性能远高于手动循环:

方案1:修正字符串切片(性能最优)

直接调整切片范围取完整两位月份,拼接后转整数即可,适合日期格式100%统一的场景:

# 适配无多余引号的日期格式:2021-01-01
df['period'] = (df['Date'].str[:4] + df['Date'].str[5:7]).astype(int)

如果你的原始Date列两端带单引号,调整切片偏移量即可:

# 适配带单引号的日期格式:'2021-01-01'
df['period'] = (df['Date'].str[1:5] + df['Date'].str[6:8]).astype(int)

方案2:转datetime类型处理(容错性最高)

如果不能保证所有日期字符串格式完全统一,建议先转成pandas内置的datetime类型再格式化,可自动适配多种常用日期格式:

import pandas as pd

# 转换日期格式,errors参数可设置为'coerce'将异常日期转为空值
df['Date'] = pd.to_datetime(df['Date'], errors='raise')
# 格式化为YYYYMM字符串后转整数
df['period'] = df['Date'].dt.strftime('%Y%m').astype(int)

两种方案均为pandas原生向量化操作,处理百万级行数据仅需毫秒级耗时。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:45:08