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

Python中向Pandas DataFrame追加数据时遇索引越界错误求助

问题分析与解决

你的代码触发IndexError的核心原因:第一个字符串'86:99'通过re.findall提取数字后,仅得到['86', '99']两个元素,但代码硬要访问索引2、3的元素,直接超出了列表长度。另外代码里还有个小语法错误:re.findall('[0-9]+', x).[0]多了个多余的点,正确写法是re.findall('[0-9]+', x)[0]。

推荐用更高效的方式处理:先统一将每个字符串提取的数字补全到固定长度(不足的用空值填充),再一次性生成DataFrame,避免循环append的低效操作:

import re
import pandas as pd
import numpy as np

lst = ['86:99', '105:76 OT (87:87)']

# 定义单个字符串的数字提取+补全函数
def process_str(s):
    # 提取所有数字,\d+和[0-9]+功能一致,写法更简洁
    nums = re.findall(r'\d+', s)
    # 补全到4个元素,不足的用NaN填充
    nums += [np.nan] * (4 - len(nums))
    return nums

# 批量处理所有字符串
processed_data = [process_str(s) for s in lst]

# 直接生成DataFrame
df = pd.DataFrame(processed_data, columns=['f1', 'f2', 'f3', 'f4'])

运行后得到的结果:

f1f2f3f4
08699NaNNaN
1105768787

如果不需要用numpy的NaN,也可以用None填充;如果字符串中数字数量可能超过4个,可修改逻辑只取前4个,比如把补全行改成nums = nums[:4] + [np.nan]*(4 - len(nums[:4]))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:45:32