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

为何尝试为列表元素分配从DataFrame提取的数组时出现IndexError错误?

解决列表赋值时的IndexError问题

嘿,我来帮你搞定这个报错!你遇到的IndexError: list assignment index out of range其实很好理解——你一开始创建了一个空列表list_values = [],然后直接用索引j去给列表的某个位置赋值,但空列表里根本没有这个位置的元素呀!

问题根源

你直接打印df6['positioning'][i].to_numpy()能成功,是因为这个表达式本身能生成有效的numpy数组,但你存储的方式错了:

  • 空列表的初始长度是0,list_values[j]这种写法要求列表已经存在第j个位置的元素,可你的列表里啥都没有,自然会报错。

两种解决办法

方法1:用列表的append()方法(最推荐)

不用手动维护j变量,每次循环把生成的数组直接加到列表末尾就行:

list_values = []
for i in country_list:
    # 直接把元素追加到列表末尾
    list_values.append(df6['positioning'][i].to_numpy())
print(list_values)

方法2:提前初始化列表长度

如果你知道country_list的长度,可以先创建一个对应长度的列表,再用索引赋值:

list_values = [None] * len(country_list)  # 提前初始化和country_list长度相同的列表
j = 0
for i in country_list:
    list_values[j] = df6['positioning'][i].to_numpy()
    j += 1
print(list_values)

转成二维numpy数组

如果最后想要二维numpy数组,直接把得到的列表传给np.array()就行:

import numpy as np
array_values = np.array(list_values)
print(array_values)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 20:18:14