Вы можете попробовать использовать метод .groupby
.Он работает аналогично groupby
в sql и возвращает фрейм данных.
После группировки вы определяете операции для групп.Существует операция max
для Ptot
(как вам нужно), и вы можете вернуть mean
для остальных.
Другой вариант - вернуть только столбец Ptot
, а затем объединить полученный фрейм данных сold.
df_all_q.groupby('Qtot').agg({'Ptot': 'max', 'Q_G1': 'mean',
'Q_G2': 'mean', 'P_G1': 'mean', 'P_G2': 'mean'}).reset_index()
Итак, по частям:
.groupby
группирует все Qtot с одинаковыми значениями
.add
устанавливает функцию агрегирования для каждого столбца
.reset_index
делаетQtot
обычный столбец вместо индекса нового кадра данных
Если, например, вы хотите, чтобы столбец P_G1
в результатах был max
вместо mean
, который можно заменить'max'
на 'mean'
.
Общие функции агрегирования включают sum
, max
, min
, mean
, size
и first
.Полный список можно найти в документах