簡體   English   中英

錯誤“列表索引必須是整數或切片,而不是 str”是什么意思,我該如何解決?

[英]What does the error “list indices must be integers or slices, not str” mean and how can I fix it?

我正在使用 Python 中的 Pandas 從 Excel 讀取一些數據,這就是我讀取數據的方式:

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

其中 file_location 是路徑的字符串,而 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_array 和 smpl_array 時給我的 output 如下:

Catcode 數組:['34123', '42253', '63334']

SMPL 數組:['Apartment-Midrise', 'Apartment-Midrise', 'Apartment-Midrise']

現在,我有一個初始化為 None 的新數組,大小為 10000,計數器初始化為 0。我遍歷上面打印的smpl_array ,如果smpl_array的索引 i 等於building_type_array索引 0,那么我想要將catcode_array的值存儲在counter1apartment_midrise中的索引 i 處,該值一開始將為 0,因此在該數組的第一個索引處,然后遞增計數器。 building_type_array是一個字符串數組,這毫無價值。

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

我一直在嘗試解決這個問題,但沒有任何運氣。 我將不勝感激任何幫助。 謝謝!

為了遍歷列表並在每次迭代中獲取項目及其索引,您可以使用enumerate

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM