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

如何让Pandas读取CSV文件的实际值而非显示值——解决日期列解析ParserError问题

解决Pandas解析含超额小时的CSV日期列问题

我太懂你这种头疼的情况了——CSV里明明白白写着30:30:01、45:42:7这种明显无效的时间,双击Excel行却能显示正确的日期时间,可Pandas一解析就报错。核心原因其实是:

CSV是纯文本格式,文件里确实存着这些带超额小时的字符串;Excel的日期时间引擎会自动把超出24的小时转换成「天数+剩余小时」(比如30小时=1天6小时),但Pandas默认的pd.to_datetime不支持这种非常规格式,所以直接抛出了ParserError。

下面是针对批量CSV文件的解决方案,能让Pandas像Excel一样解析出正确的日期时间:

步骤1:读取CSV时保留日期列的字符串格式

先把所有CSV文件读进来,确保Date列以字符串形式加载,避免Pandas自动解析时直接报错:

import pandas as pd
from datetime import datetime, timedelta
import glob

# 获取目标文件夹下所有CSV文件路径
csv_files = glob.glob('your/csv/folder/path/*.csv')

# 批量读取,统一指定Date列为字符串类型
dfs_list = []
for file in csv_files:
    df = pd.read_csv(file, dtype={'Date': str})
    dfs_list.append(df)

# 合并所有DataFrame(如果需要统一处理的话)
combined_df = pd.concat(dfs_list, ignore_index=True)

步骤2:自定义解析函数处理超额小时

写一个函数,手动拆分日期和时间部分,把超额的小时转换成天数加到日期上:

def parse_weird_datetime(date_str):
    # 拆分日期和时间部分(处理部分行只有日期的情况)
    split_parts = date_str.split(' ', 1)
    date_part = split_parts[0]
    time_part = split_parts[1] if len(split_parts) > 1 else '00:00:00'
    
    # 解析基础日期(格式对应你的dd/mm/yyyy)
    base_date = datetime.strptime(date_part, '%d/%m/%Y')
    
    # 解析时间部分,兼容小时>24、秒数为整数的情况
    time_components = time_part.split(':')
    hours = int(time_components[0])
    minutes = int(time_components[1]) if len(time_components) >= 2 else 0
    # 处理类似7这样的秒数(不是07),先转float再转int避免报错
    seconds = int(float(time_components[2])) if len(time_components) >= 3 else 0
    
    # 计算时间差(自动把超额小时转换成天数)
    time_delta = timedelta(hours=hours, minutes=minutes, seconds=seconds)
    
    # 合并日期和时间差,得到正确的日期时间
    return base_date + time_delta

步骤3:应用解析函数转换日期列

把自定义函数应用到Date列上,替换原来的字符串:

combined_df['Date'] = combined_df['Date'].apply(parse_weird_datetime)

这样处理后,所有带超额小时的日期字符串都会被转换成正确的datetime对象,比如:

  • 11/01/1985 30:30:01 → 1985-01-12 06:30:01
  • 26/02/1976 45:42:7 → 1976-02-27 21:42:07

完全和Excel双击后显示的正确值一致,而且能批量处理几十份CSV文件,不用手动操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:32:40