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

创建空pandas DataFrame后通过循环赋值报索引越界错误如何解决?

空DataFrame循环赋值报错的解决方法

报错原因

你初始化的是长度为0的空DataFrame,没有任何行数据,直接通过df['pred'][i]的链式索引赋值时,无法找到对应下标的行,因此触发index 0 is out of bounds的越界报错。

解决方案

方案1:先收集全量数据再构造DataFrame(最高效,优先推荐)

循环过程中先把数据存入列表,所有数据生成完成后一次性转成DataFrame,避免循环中频繁修改DataFrame结构,性能最优:

import pandas as pd

data_list = []
for i in range(5):
    # 按pred、sim的顺序存入数据
    data_list.append([i, i])

df = pd.DataFrame(data_list, columns=['pred', 'sim'])

方案2:使用loc按索引逐行赋值

如果确实需要逐行新增数据,可以用loc索引器赋值,pandas会自动创建不存在的索引行:

import pandas as pd

df = pd.DataFrame(columns = ['pred', 'sim'])
for i in range(5):
    df.loc[i, 'pred'] = i
    df.loc[i, 'sim'] = i

注意:pandas 2.0及以上版本已经移除了DataFrame.append()方法,不建议再用append逐行添加数据的方案。
小提示:如果要插入的数据量很大,逐行操作DataFrame的性能会非常差,优先选方案1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:27:09