Как получить новый фрейм данных pandas с максимальным значением k последовательных строк?

#python #python-3.x #pandas #dataframe #series

#python #python-3.x #pandas #фрейм данных #Серии

Вопрос:

У меня есть этот фрейм данных pandas:

 ts = pd.Series([2372, 4356, 3034, 1502, 676, 4187, 2634, 1002])
 

Я хотел бы получить фрейм данных, который существует с максимальным значением четырех последовательных строк столбца и сохраняет индекс строки 0, 4, 8 и т.д.

В данном случае это означает, что новый фрейм данных должен выглядеть следующим образом:

 0 4356 

4 4187
 

Как я мог это сделать?

Ответ №1:

Используйте numpy.arange с Groupby.agg :

 In [899]: df = ts.groupby(np.arange(len(ts))//4).agg(['idxmax','max'])

In [900]: df
Out[900]: 
   idxmax   max
0       1  4356
1       5  4187
 

Комментарии:

1. ts.groupby(np.arange(len(ts))//4).agg(['idxmax','max']) экономит вам одну группу :-).

2. @QuangHoang Спасибо за это. Отредактировал мой ответ.

3. Большое вам спасибо! @MayankPorwal и Куанг Хоанг

Ответ №2:

Попробуйте:

 ts.groupby((np.arange(len(ts))//4)*4).max()
 

Вывод:

 0    4356
4    4187
dtype: int64