У меня есть набор значений с повторяющимся индексом в кадре данных:
value
CDE 2.318620
CDE -3.097715
LXU -3.791043
LXU 4.818995
SWN 3.059964
SWN -4.349304
OAS -3.336539
LPI -3.037097
LPI -5.701044
LPI -3.519923
CZR -3.270018
CZR -3.056712
Требуемый результат - сохранить только самые высокие абсолютные значения и вернуть средние значения в новом столбце:
value average
CDE -3.097715 -0.389547
LXU 4.818995 0.513976
SWN -4.349304 -0.644670
OAS -3.336539 -3.336539
LPI -5.701044 -4.086021
CZR -3.270018 -3.163365
Я пытался .apply (лямбда) к дублирующимся строкам, но получил ошибку "оси":
max_absolute = lambda x: max(x.min(), x.max(), key=abs)
df_duplicate_absmax = df.groupby(df.index).apply(max_absolute, axis=1)
ps: Адаптация решения Абхи для работы с NaN:
df1 = df.groupby(df.index)['value'].agg([lambda x: max(x[~np.isnan(x)], key=abs), 'mean'])