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

Pandas读取CSV解析datetime列因缺毫秒报错及导出规范咨询

问题1:兼容两种日期格式完成解析

你遇到的报错有两个原因:一是自定义lambda只能处理单条字符串,旧版本pandas的date_parser会把整列作为numpy数组传入导致类型不匹配;二是指定的解析格式无法匹配缺失毫秒的日期值。可以用以下两种方案解决:

方案1:自定义兼容解析函数(全版本兼容)

from datetime import datetime
import pandas as pd

def custom_date_parser(time_str):
    try:
        # 优先匹配带毫秒的格式
        return datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S.%f')
    except ValueError:
        # 匹配失败时尝试无毫秒格式,自动补0毫秒
        return datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')

# 先读文件再转日期,避免数组传入的类型问题
df = pd.read_csv('abc.csv')
df['endTime'] = df['endTime'].apply(custom_date_parser)

方案2:用pandas内置多格式匹配(pandas 1.4.0+)

更高版本的pandas支持直接传入多个格式列表自动匹配,代码更简洁:

df = pd.read_csv(
    'abc.csv',
    parse_dates=['endTime'],
    date_format=['%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M:%S']
)

问题2:导出CSV时统一携带毫秒

导出时在to_csv方法中指定带毫秒的日期格式即可,即使原日期毫秒为0也会自动补全:

# 如需和示例一致保留3位毫秒,格式替换为'%Y-%m-%d %H:%M:%S.%3f'即可
df.to_csv(
    'export_abc.csv',
    date_format='%Y-%m-%d %H:%M:%S.%f',
    index=False
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 02:39:04