Для данных, отформатированных как показано ниже:
import pandas as pd
import numpy as np
random_data = np.random.uniform(0, 1, 49)
random_data = np.append(random_data, 1.1)
random_data = np.append(random_data, np.random.uniform(0, 1, 59))
random_data = np.append(random_data, 1.1)
random_data = np.append(random_data, np.random.uniform(0, 1, 139))
random_data = np.append(random_data, 1.1)
random_data = np.append(random_data, np.random.uniform(0, 1, 20))
df = pd.DataFrame({'data':np.linspace(1,150,150), 'rain':random_data})
Найти строки, где дождь> 1, найти правильный индекс, который больше 100, и, наконец, получить последние 100 строк, считая из найденного индекса.
fit_list = df.index[df['rain'] > 1].to_list()
proper_index_list = [x for x in fit_list if x > 100]
df_list = []
for index in proper_index_list:
out = df.iloc[index-100: index]
df_list.append(out)
df = pd.concat(df_list)
Выход:
data rain
9 5.985130 0.105051
.. ... ...
244 136.152416 0.968460
248 138.368030 0.989770
df_shape = (200, 2)