使用pandas读取Excel分离日期时间列时解析错误的解决方法
解决Pandas读取Excel日期时间列解析错误的问题
我有一个包含独立date列和time列的Excel文件,使用代码df = pd.read_excel(r'df.xlsx', parse_dates=[['date', 'time']])读取时遇到问题:当所有行日期相同时代码运行正常,但日期发生变化时,解析结果出错——比如2021-04-04的行中,time列被解析成带1900-01-01的错误格式。需要将DataFrame修正为包含正确分离日期和时间列的格式,目标示例如下:
2021-04-03 23:52:11,A 2021-04-03 23:56:05,A 2021-04-03 23:59:27,A 2021-04-04 00:03:33,B 2021-04-04 00:04:33,B 2021-04-04 00:06:43,B 2021-04-04 00:10:17,B
解决方案
步骤1:先读取Excel,不提前合并解析日期时间
避免Pandas自动合并时的格式冲突,先原样读取数据:
import pandas as pd df = pd.read_excel('df.xlsx')
步骤2:清理time列,提取正确时间部分
针对time列被解析为带1900-01-01的Timestamp类型的情况,提取纯时间部分:
# 处理time列:如果是Timestamp类型则提取时间,否则保留原内容 df['time'] = df['time'].apply(lambda x: x.time() if isinstance(x, pd.Timestamp) else x)
步骤3:确保date列格式正确
将date列转换为标准日期格式,避免格式混乱:
df['date'] = pd.to_datetime(df['date']).dt.date
可选:合并后再拆分(确保日期时间对应准确)
如果担心日期和时间不匹配,可以先合并成完整datetime再拆分,确保对应关系:
# 合并日期和时间为完整datetime df['full_datetime'] = pd.to_datetime(df['date'].astype(str) + ' ' + df['time'].astype(str)) # 拆分回独立的日期和时间列 df['date'] = df['full_datetime'].dt.date df['time'] = df['full_datetime'].dt.time # 删除临时列 df.drop('full_datetime', axis=1, inplace=True)
执行以上步骤后,就能得到日期和时间列完全正确分离的DataFrame,符合目标示例的格式。
内容的提问来源于stack exchange,提问作者Mohammad.sh
相关产品推荐
相关产品推荐

