为何尝试为列表元素分配从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
相关产品推荐
相关产品推荐

