pandas dataframe и функция apply
Пытаюсь вручную построчно обработать очень большой файл. Хотелось бы иметь возможность выйти из цикла с сохранением результата работы. Для этого хочу использовать break. Но не получается. Как можно сохранять промежуточный результат внутри цикла apply? Так как подозреваю, что даже если получиться выход, то результат не сохраниться
import pandas as pd
import webbrowser
df = pd.read_excel('input\input_kategory.xls', index_col=0)
df = df.fillna('') # Заменим везде символ отсутствия данных NaN на пустую ячейку
def obrabotka(row): #перебор по строкам
result = ''
line_url = row['url']
line_intent = row['intent']
if line_intent == '':
print(line_url)
print('1 - Информационка')
print('2 - Категория')
print('3 - Товар')
print('4 - Морда')
print('9 - Выход')
intent = input()
if int(intent) == 1:
result = 'Информационка'
elif int(intent) == 2:
result = 'Категория'
elif int(intent) == 3:
result = 'Товар'
elif int(intent) == 4:
result = 'Морда'
elif int(intent) == 9:
result = 'Выход'
else: result = 'Неизвестно'
else: result = row['intent']
if result == 'Выход': break
return result
df['intent'] = df.apply(obrabotka, axis=1)
df.to_excel("output\outut_kategory.xlsx")
df.head()
Получаю ошибку SyntaxError: 'break' outside loop
Ответы (1 шт):
А что непонятного-то? Вам же ясно написали, вы используете оператор break вне цикла. Причем интерпретатор Python вам даже написал, в какой строке вашего кода это происходит, но вы решили эту информацию утаить от нас, что-бы нам усложнить поиск ответа, наверное. В вашей программе я вижу единственный оператор break, , вот тут
if result == 'Выход': break
который действительно стоит вне цикла. Вот и исправляете код. Кстати, то что у вас "очень большой файл" к вашей ошибке никакого отношения не имеет.