3 回答

TA貢獻1998條經驗 獲得超6個贊
用:
df1 = df.groupby(df.index)['value'].agg([lambda x: max(x,key=abs), 'mean'])
df1.columns = ['value', 'average']
print (df1)
value average
CDE -3.097715 -0.389547
CZR -3.270018 -3.163365
LPI -5.701044 -4.086021
LXU 4.818995 0.513976
OAS -3.336539 -3.336539
SWN -4.349304 -0.644670

TA貢獻1828條經驗 獲得超3個贊
這是一個使用groupby+agg和兩個函數的解決方案,一個通過絕對值計算最大值,另一個計算平均值:
def max_abs(x):
return x.iloc[x.abs().values.argmax()]
res = df.groupby(level=0).agg([max_abs, 'mean'])\
.xs('value', axis=1, drop_level=True)
print(res)
max_abs mean
CDE -3.097715 -0.389547
CZR -3.270018 -3.163365
LPI -5.701044 -4.086021
LXU 4.818995 0.513976
OAS -3.336539 -3.336539
SWN -4.349304 -0.644670
添加回答
舉報