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

使用Pandas读取Excel数据时定位报错的行和列

定位Pandas读取ODF文件时日期列的错误行和列

这个check_dts_bounds错误通常是因为某行的日期值超出了NumPy/Pandas支持的datetime范围(大概是1677年9月21日到2262年4月11日),或者日期格式有严重问题。以下是具体定位方法:

方法1:先全量读取为字符串,再批量检查日期列

先关闭自动日期解析,把所有数据读成字符串,避免加载时直接报错:

webLinksPanda = pd.read_excel(
    '/home/xyz/Documents/worksheet.ods',
    sheet_name='VidRecInv-LargeData',
    engine='odf',
    dtype=str  # 强制所有列按字符串读取
)

假设你的日期列名为date_col1和date_col2,用pd.to_datetime的errors='coerce'参数批量转换,找出转换失败的行:

date_cols = ['date_col1', 'date_col2']  # 替换成你的日期列名

for col in date_cols:
    # 尝试转换日期,无效值转为NaT
    converted_dates = pd.to_datetime(webLinksPanda[col], errors='coerce')
    # 筛选出转换失败的行
    invalid_rows = webLinksPanda[converted_dates.isna()]
    
    if not invalid_rows.empty:
        print(f"⚠️ 列 {col} 中存在无效日期的行:")
        print(f"行号(索引):{invalid_rows.index.tolist()}")
        print(f"对应错误值:{webLinksPanda.loc[invalid_rows.index, col].tolist()}")

方法2:逐行逐列捕获转换异常

如果批量检查没找到(比如某些值能通过coerce但触发范围报错),可以逐行尝试转换并捕获异常:

date_cols = ['date_col1', 'date_col2']  # 替换成你的日期列名

for idx, row in webLinksPanda.iterrows():
    for col in date_cols:
        raw_val = row[col]
        try:
            # 尝试转换为datetime,触发范围检查
            pd.to_datetime(raw_val)
        except Exception as e:
            print(f"❌ 行 {idx+1}(索引{idx}),列 {col} 的值「{raw_val}」转换失败:")
            print(f"错误信息:{str(e)}")

额外提示

  • 重点检查那些看起来像极端日期的值(比如0001年、9999年),或者格式混乱的字符串(比如包含非日期字符的内容)。
  • 如果找到错误行,直接修改ODF文件里的对应值,或者读取时用parse_dates指定日期列并配合date_parser自定义解析逻辑,跳过无效值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:28:06