错误“列表索引必须是整数或片,而不是str”是什么意思?我如何修复它?

2024-06-28 19:03:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python中的Pandas从Excel中读取一些数据,以下是我读取数据的方式:

data_frame = pd.read_excel(file_location, usecols=catcode_column)
data_frame2 = pd.read_excel(file_location, usecols=smpl_column)

其中,file_位置是一个路径字符串,usecols只是我想从Excel文件中读取的列。然后我有2个for循环,第一个循环只使用给定列的前5个字符,第二个循环使用整个字符串:

    for i in data_frame:
        data_frame["catcode_column"] = data_frame[catcode_column_name].apply(lambda x: str(x)[:5])
    for j in data_frame2:
        data_frame2["smpl_column"] = data_frame2[smpl_column_name].apply(lambda y: y[:])

现在,我使用以下方法将这些数据帧转换为列表:

catcode_array = data_frame["catcode_column"].values.tolist()
smpl_array = data_frame2["smpl_column"].values.tolist()

打印catcode_阵列和smpl_阵列时的输出如下所示:

Catcode数组:['34123','42253','63334']

SMPL阵列:[“公寓-中楼”、“公寓-中楼”、“公寓-中楼”]

现在,我有一个新数组初始化为None,大小为10000,计数器初始化为0。我遍历上面打印的smpl\u数组,如果smpl\u数组的索引I等于建筑类型数组索引0,然后我想将catcode_数组的值存储在公寓中的索引I中计数器1的中,该值在开始时为0,因此在该数组的第一个索引处,然后递增计数器。构建类型数组是字符串数组,这毫无价值

apartment_midrise = [None] * 10000

counter1 = 0

for i in smpl_array:
    if smpl_array[i] == building_type_array[0]:
        apartment_midrise[counter1] = catcode_array[i]
        counter1 += 1

但是,我在上面的if语句中得到了以下错误:

if smpl_array[i] == building_type_array[0]:

TypeError:列表索引必须是整数或片,而不是str

我一直在努力解决这个问题,但没有任何运气。我将感谢任何帮助。谢谢


Tags: 字符串infordata计数器column数组array
1条回答
网友
1楼 · 发布于 2024-06-28 19:03:08

为了在列表上循环并在每次迭代中获取项目及其索引,可以使用enumerate

for i, smpl in enumerate(smpl_array):
    if smpl == building_type_array[0]:
        apartment_midrise[counter1] = catcode_array[i]
        counter1 += 1

相关问题 更多 >