У меня есть этот кадр данных:
In[1]df = pd.DataFrame([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]])
In[2]df
Out[2]:
0 1 2 3 4
0 1 2 3 4 5
1 6 7 8 9 10
2 11 12 13 14 15
3 16 17 18 19 20
4 21 22 23 24 25
Мне нужно добиться этого:
- для каждой строки в моем кадре данных,
- если 2 или более значений в любых 3 последовательных ячейках больше 10,
- то последняя из этих 3 ячеек должна быть помечена как True.
Результирующий кадр данных df1 должен быть того же размера, что и True или False, в соответствии с указанными выше критериями:
In[3]df1
Out[3]:
0 1 2 3 4
0 NaN NaN False False False
1 NaN NaN False False False
2 NaN NaN True True True
3 NaN NaN True True True
4 NaN NaN True True True
- df1.iloc[0,1] — это NaN, потому что в этой ячейке были даны только два числа, но для выполнения теста требовалось как минимум 3 числа.
- df1.iloc[1,3] имеет значение False, так как в [7,8,9] нет больше 10
- df1.iloc[3,4] имеет значение True, поскольку 2 или более в [18,19,20] больше 10
Я подумал, что dataframe.rolling.apply() с функцией может быть решением, но как именно?