日期无前置零时如何将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
相关产品推荐
相关产品推荐

