#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