![](/img/trans.png)
[英]how I can fix this error? TypeError: list indices must be integers or slices, not 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的值存儲在counter1的apartment_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.