You need to enable JavaScript to run this app. 如何在Pandas中借助datetime将mm/dd/yyyy日期列转为yyyymmdd格式整数?
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中借助datetime将mm/dd/yyyy日期列转为yyyymmdd格式整数?

完全可以借助datetime实现该需求

整个转换流程不需要手动做字符串拆分、补零操作,依托Pandas内置的datetime解析、格式化能力即可完成,相比纯字符串处理的方案,鲁棒性更强、出错概率更低。

第一步:将原始mm/dd/yyyy格式列解析为标准datetime类型

使用pd.to_datetime完成格式解析,一定要手动指定原始日期格式,既可以大幅提升大列的解析速度,也能避免自动格式推断带来的解析错误:

import pandas as pd
# 替换为你实际的日期列名
df['parsed_date'] = pd.to_datetime(df['原始mm/dd/yyyy格式列'], format='%m/%d/%Y')
# 若列中存在无法识别的非法日期,可添加errors='coerce'参数,将无效值转为NaT空值,避免流程中断
# df['parsed_date'] = pd.to_datetime(df['原始mm/dd/yyyy格式列'], format='%m/%d/%Y', errors='coerce')

第二步:转换为yyyymmdd格式的整数

可根据数据规模选择以下两种实现方案,最终输出的整数结构完全一致:

  • 字符串转类型方案(代码简洁):先将datetime值格式化为固定8位的yyyymmdd字符串,再转换为整数
df['yyyymmdd_int'] = df['parsed_date'].dt.strftime('%Y%m%d').astype(int)
  • 数值组件拼接方案(大列性能更优):直接提取datetime的年、月、日分量,通过权重计算拼接为目标整数,省去字符串序列化的性能开销
df['yyyymmdd_int'] = (
    df['parsed_date'].dt.year * 10000
    + df['parsed_date'].dt.month * 100
    + df['parsed_date'].dt.day
).astype(int)

关键注意点

  • 两种方案均能保证格式正确性:年占4位、月占2位(不足补前导零)、日占2位(不足补前导零),最终输出的整数为标准8位结构,比如2024年5月6日会对应整数20240506
  • 若解析后存在NaT空值,转整数环节会自动匹配pandas的缺失值规则,不会破坏原表的索引对齐关系
  • 全流程核心依赖datetime的解析、组件提取能力,完全匹配你提出的技术选型要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 08:06:03