Python 对每个组进行一次多索引排序
以下是df:Python 对每个组进行一次多索引排序,python,pandas,Python,Pandas,以下是df: 'A' 'B Gain/Expsr% -10.0 2.104000 1.194000 -2.0 1.389000 0.892000 Gain/MaxDD -10.0 0.024000 0.064000 -2.0 0.020000 0.058000 预计产量为: 'A' 'B
'A' 'B
Gain/Expsr% -10.0 2.104000 1.194000
-2.0 1.389000 0.892000
Gain/MaxDD -10.0 0.024000 0.064000
-2.0 0.020000 0.058000
预计产量为:
'A' 'B
Gain/Expsr% -2.0 1.389000 0.892000
-10.0 2.104000 1.194000
Gain/MaxDD -2.0 0.020000 0.058000
-10.0 0.024000 0.064000
我尝试过,但收效甚微:
df.sortlevel(axis=1,level=[1,0],sort_remaining=True)
df.sort_index(axis=1,level=1,sort_remaining=True)
以及大致如下的内容:
df.reset_index(level=1,inplace=True)
df['level_1'] = df['level_1'].values[::-1]
df.reindex(df, level=0)
让我们尝试使用
升序
作为列表:
df.sort_index(level=[0,1], ascending=[True,True])
A B
Gain/Expsr% -10.0 2.104 1.194
-2.0 1.389 0.892
Gain/MaxDD -10.0 0.024 0.064
-2.0 0.020 0.058
及
您希望如何对此数据帧进行排序?您的预期输出两个组的排序不同?是的,我不希望级别0发生更改,但每个级别1(在级别0组内)都会反转,这不是您预期的输出显示的内容。Exp是递减的,MaxDD是递增的。哎呀,我会修正的。很抱歉,这两个递减Hanks-不知道可以将递增作为列表传递,但完全有意义的是,你应该能够。是的,我只是演示了不同的排序。:)
df.sort_index(level=[0,1], ascending=[True, False])
A B
Gain/Expsr% -2.0 1.389 0.892
-10.0 2.104 1.194
Gain/MaxDD -2.0 0.020 0.058
-10.0 0.024 0.064