Могли бы заархивироваться на генератор и использовать дальше. Затем мы используем np.split и отображаем на pd.Series. Должно быть быстро:
import pandas as pd
import numpy as np
test = pd.Series([2.4,5.6,8.8,25.6,53.6,1.7,5.7,8.9])
i = next(ind for ind, v in enumerate(zip(test,test[1:])) if v[0] > v[1])
test1, test2 = map(pd.Series,np.split(test, [i+1]))
Или напишите в «однострочный» как:
test1, test2 = map(pd.Series,
np.split(test, [next((ind for ind, v in enumerate(zip(test,test[1:]))
if v[0] > v[1])+1, None)]))
Сравнение времени:
%timeit map(pd.Series,np.split(test, [next((ind for ind, v in enumerate(zip(test,test[1:])) if v[0] > v[1]), None) + 1]))
%timeit (i for _, i in test.groupby(test.diff().lt(0).cumsum()))
%timeit map(pd.Series,np.split(test, [(test - test.shift(-1)).idxmax() + 1]))
Результаты:
#1000 loops, best of 3: 237 µs per loop <- Anton vbr
#1000 loops, best of 3: 599 µs per loop <- Scott Boston
#1000 loops, best of 3: 392 µs per loop <- Ami Tavory