我在DataFrame中有一组带有重复索引的值:
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(lambda)到重复的行,但得到一个“轴”错误:
max_absolute = lambda x: max(x.min(), x.max(), key=abs)
df_duplicate_absmax = df.groupby(df.index).apply(max_absolute, axis=1)
3 回答
使用:
这是一个使用
groupby
agg
的解决方案,它有两个函数,一个用于计算绝对值的最大值,另一个用于计算平均值:结果: