Обращаясь к вашему встроенному комментарию, который указывает на
if element == row[5]
как строку, выдающую ошибку, я бы поспорил, что хотя бы один element
в строках вашего набора данных содержит строки короче 6 символов (что может привести к ошибке индекса).
Вы можете создать лейкопластырь для этих элементов, заменив оператор if
на try-except
:
def search_Lm_in_df_two(collection,dataset):
for element in collection:
for row in dataset[1:]:
try element == row[5]: # Try this, unless it throws an error.
lmstring = row[6]
newString = {shorten_string(lmstring)}
except: # If something goes wrong, use a default and continue.
lmstring = a_default_value
newString = another_default_value
return newString
Для должной осмотрительности Тем не менее, я бы предложил провести исследование набора данных, чтобы определить, сколько элементов имеют проблемные длины строк c. Там может быть несколько. Возможно, с этими элементами стоит иметь дело отдельно.
Примечание: похоже, что переменная newString
задается снова и снова в этом l oop, но возвращается после того, как все вложенные циклы for полный. Это означает, что ваша функция поиска возвращает только последнее значение newString. Это намеренно?