Как узнать тот, который идет первым среди максимальных и минимальных значений в скользящем окне размера n в фрейме данных, и сохранить количественные значения (скажем, 1, если максимальные значения будут первыми, и 0, если первые будут минимальными)?
Панды катятся мин макс
comment
Добро пожаловать в StackOverflow. Пожалуйста, найдите время, чтобы прочитать этот пост о как предоставить отличный пример панд, а также как предоставить минимальный, полный и поддающийся проверке пример и соответствующим образом изменить свой вопрос. Эти советы о том, как правильно задать вопрос, также могут быть полезны.
- person jezrael   schedule 13.06.2018
Ответы (1)
Вы можете попробовать что-то вроде этого:
np.random.seed(124)
df = pd.DataFrame({'data':np.random.randint(0,10,25)})
df['First'] = df['data'].rolling(5, min_periods=2).apply(lambda x: x.idxmin()<x.idxmax(), raw=False)
df['First'] = df['First'].map({1:'Min',0:'Max'})
df
Выход:
data First
0 1 NaN
1 7 Min
2 2 Min
3 9 Min
4 0 Max
5 4 Max
6 4 Max
7 5 Max
8 5 Min
9 6 Min
10 9 Min
11 6 Min
12 0 Max
13 8 Max
14 9 Max
15 9 Min
16 0 Min
17 2 Max
18 2 Max
19 1 Max
20 1 Min
21 9 Min
22 1 Min
23 9 Min
24 4 Min
person
Scott Boston
schedule
13.06.2018
почему точно такой же код выдает ошибку 'apply() получил неожиданный аргумент ключевого слова 'raw', а без необработанного объекта 'numpy.ndarray' объект не имеет атрибута 'idxmin''
- person Sourav Dalai; 14.06.2018