Панды катятся мин макс

Как узнать тот, который идет первым среди максимальных и минимальных значений в скользящем окне размера n в фрейме данных, и сохранить количественные значения (скажем, 1, если максимальные значения будут первыми, и 0, если первые будут минимальными)?


person Sourav Dalai    schedule 13.06.2018    source источник
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
comment
почему точно такой же код выдает ошибку 'apply() получил неожиданный аргумент ключевого слова 'raw', а без необработанного объекта 'numpy.ndarray' объект не имеет атрибута 'idxmin'' - person Sourav Dalai; 14.06.2018