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

日期无前置零时如何将DataFrame列转换为datetime类型?

解决日期无前置零的Datetime转换问题

方法1:让Pandas自动推断格式(最简单高效)

直接调用pd.to_datetime()并指定dayfirst=True(确保日在前的格式被正确识别),Pandas会自动处理缺少前导零的日期字符串:

# 转换Date_Time列为datetime类型
df['Date_Time'] = pd.to_datetime(df['Date_Time'], dayfirst=True)
# 设置为DataFrame索引
df.set_index('Date_Time', inplace=True)

dayfirst=True是核心参数,因为你的日期格式是「日+月+年」(比如1012020对应1日1月2020),不设置的话Pandas可能误判为月在前的格式。

方法2:手动补全前导零后指定格式解析

如果数据量极大,自动推断效率偏低,可以先给日期部分补前导零,统一格式后再解析:

# 拆分日期与时间字符串
df[['date_part', 'time_part']] = df['Date_Time'].str.split(' ', expand=True)
# 给日期部分补前导零,确保统一为8位(ddmmyyyy)
df['date_part'] = df['date_part'].str.zfill(8)
# 合并为标准格式的datetime字符串
df['full_datetime'] = df['date_part'] + ' ' + df['time_part']
# 指定格式解析
df['Date_Time'] = pd.to_datetime(df['full_datetime'], format='%d%m%Y %H:%M:%S')
# 设置索引并清理临时列
df.set_index('Date_Time', inplace=True)
df.drop(['date_part', 'time_part', 'full_datetime'], axis=1, inplace=True)

补充:导入阶段直接处理

也可以在read_csv时就完成转换,无需事后操作:

df = pd.read_csv(
    "example.csv",
    sep=";",
    decimal=",",
    parse_dates=[["Date", "Time"]],
    date_parser=lambda x: pd.to_datetime(x, dayfirst=True)
)
df.set_index('Date_Time', inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:24:47