Как запустить функцию в каждой строке в dataframe pandas и остановить ее при выполнении условия

У меня есть DataFrame, я запускаю функцию в каждой строке, функция сравнивает значения в строке, после выполнения условия один из элементов строки добавляется в словарь. На этом этапе я хочу, чтобы функция заканчивалась, это не обычный цикл, поэтому я не могу использовать break .

Должен ли я использовать другой метод применения функции для каждой строки или есть способ остановить метод apply для применения?

Код

 test = # exert from the df I'm using 30MA close 29 0.001311 0.000900 30 0.001313 0.001060 31 0.001294 0.001150 32 0.001290 0.001000 33 0.001293 0.000950 34 0.001305 0.000906 35 0.001310 0.000767 36 0.001318 0.000800 37 0.001325 0.000598 38 0.001331 0.000601 # Create and run buy and hold backtest # buy and hold is measured by the appriciation from first price that crosses the 30MA to close of the most recent period buy_and_hold_results = {} coin = 'BBR' def buy_and_hold(close, MA, coin): if MA < close: entry = close exit = coins[coin].loc[len(coins[coin].index)-1].close profit = exit / entry buy_and_hold_results[coin] = profit test.apply(lambda x : buy_and_hold(x['close'], x['30MA'], coin), axis=1) buy_and_hold_results 

Если вы не обязательно используете apply , вы можете перебирать через DataFrame for цикла и получать каждую строку DataFrame.iloc . Затем вы можете использовать break .

 def buy_and_hold(close, MA, coin): if MA < close: entry = close exit = coins[coin].loc[len(coins[coin].index)-1].close profit = exit / entry buy_and_hold_results[coin] = profit return True for i in range(len(test)): x = test.iloc[i] if buy_and_hold(x['close'], x['30MA'], coin): break