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

如何将带时间戳的Excel数据正确导入Pandas DataFrame

水文数据日期解析问题解决记录

原始数据情况

有一份存储在Excel中的水文数据,日期格式为"m/d/Y",原始数据如下:

data_id date            flowrate 
34606   4/30/2021 23:45 -1904.39
34607   4/30/2021 23:50 -1864.59
34608   4/30/2021 23:55 -1772.78
34609   1/5/2021 0:00   -1679.54
34610   1/5/2021 0:05   -1646.46
34611   1/5/2021 0:10   -1527.03

导入Pandas后的异常

使用pd.read_excel()导入DataFrame后,日期格式出现异常,且索引发生偏移:

import pandas as pd
DATA = pd.read_excel("DATA.xlsx")
DATA
                      date  flowrate_m3s
34557      4/30/2021 23:45      -1904.39
34558      4/30/2021 23:50      -1864.59
34559      4/30/2021 23:55      -1772.78
34560  2021-01-05 00:00:00      -1679.54
34561  2021-01-05 00:05:00      -1646.46
34562  2021-01-05 00:10:00      -1527.03

可见pd.read_excel()默认按"d/m/Y"解析日期,仅当月份数值大于12时才会例外。

尝试过的无效方法

  • 读取Excel时指定日期格式:
FORMAT = "%m/%d/%Y %H:%M:%S"
DATA = pd.read_excel("DATA.xlsx",parse_dates=[2], date_format=FORMAT)

结果与之前完全一致。

  • 手动将DATA.date转换为datetime类型,得到的日期依然错误。
  • 修改Excel中的日期格式,无效果。

问题根源排查

最终发现问题出在Excel数据集本身:每月前12天的日期格式为m/d/Y,13号起自动切换为d/m/Y,格式混乱导致解析错误。

最终解决方案

改用原始CSV文件,通过以下代码解决日期解析问题:

DATA = pd.read_csv("DATA.csv")
FORMAT = "%m/%d/%Y %H:%M" # 对应格式:01/01/2021 00:00
DATA.insert(1, "date_num", pd.to_datetime(DATA.date, format = FORMAT), True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:07:28