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 шт):

Автор решения: passant

А что непонятного-то? Вам же ясно написали, вы используете оператор break вне цикла. Причем интерпретатор Python вам даже написал, в какой строке вашего кода это происходит, но вы решили эту информацию утаить от нас, что-бы нам усложнить поиск ответа, наверное. В вашей программе я вижу единственный оператор break, , вот тут

if result == 'Выход': break

который действительно стоит вне цикла. Вот и исправляете код. Кстати, то что у вас "очень большой файл" к вашей ошибке никакого отношения не имеет.

→ Ссылка