После удаления строки выдает KeyError. Pandas
Скрипт ищет в Excel файле совпадения с шаблонами, добавляет их в словарь, удаляет из исходного датафрейма. Шаблоны в словаре как ключи. Пробовал реиндексировать, игрался с счетчиком. Ошибку выкидывает после удаления 605 строки, при поиске следующего совпадения. Почему выкидывает эту ошибку, если where.head(605) спокойно выполняется.
def find(pattern, where):
i = 0
while i in range(len(where)):
match = re.match(pattern, where[i])
if match is not None:
test_dict[pattern].append(where[i])
where.drop(index=[i], axis=0, inplace=True)
i += 1
return where
for key in test_dict.keys():
searching = find(key, searching)
Ответы (1 шт):
Так лучше не делать ни в просто питоне со списками, ни в пандасе с датафреймами. Вы на ходу удаляете элементы из датафрейма, по которому итерируетесь, рано или поздно это приведёт к ошибкам, даже просто потому, что элементов в датафрейме после этого станет меньше, чем было когда вы инициализировали range.
Починить по идее просто должно быть - собирайте индексы, которые вы хотели бы удалить, в отдельный список. А удаление произведите после того, как цикл закончится. Сразу по списку - там же drop не зря требует именно список.