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

Pandas DataFrame apply提取PDF URL文件名时报List index out of range错误

错误根源

你的文件名提取代码本身没有问题,报错是PyPDF2旧版本的已知bug触发的:

  1. 你当前操作的my_main_df是之前通过切片、过滤等操作生成的DataFrame视图(不是独立副本),给它新增列时pandas会触发SettingWithCopyWarning警告
  2. 旧版本PyPDF2覆写了Python全局的警告格式化函数,这个函数在处理警告路径时没有做边界判断,当路径字符串没有\分隔符时,rsplit("\\", 1)返回的列表长度为1,直接取下标[1]就会触发IndexError。

为什么head(400)后运行正常

head(400)返回的是全新的独立DataFrame,不是原数据集的视图,新增列时不会触发SettingWithCopyWarning,自然不会走到PyPDF2的错误警告处理逻辑中。

解决方案

你可以任选以下一种方式解决:

  • 生成my_main_df时显式调用.copy()生成独立副本,避免触发切片警告,示例:
    # 你原来生成my_main_df的逻辑后面加.copy()
    my_main_df = 原查询/过滤逻辑.copy()
    
  • 升级PyPDF2到最新版本,该bug在后续版本中已经被修复
  • 临时规避可以在赋值操作前关闭切片警告,操作完后恢复即可:
    # 临时关闭警告
    pd.options.mode.chained_assignment = None
    my_main_df['File_name3'] = my_main_df.apply(lambda row: get_filename_from_url(row['PDF Links']),axis=1)
    # 恢复默认警告设置
    pd.options.mode.chained_assignment = 'warn'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:45:01