Python 按系列值的降序重新索引多索引的索引
我有一个多索引的熊猫系列,如:Python 按系列值的降序重新索引多索引的索引,python,pandas,Python,Pandas,我有一个多索引的熊猫系列,如: A 385 0.463120 278 0.269023 190 0.244348 818 0.232505 64 0.199640 B 1889 0.381681 1568 0.284957 1543
A 385 0.463120
278 0.269023
190 0.244348
818 0.232505
64 0.199640
B 1889 0.381681
1568 0.284957
1543 0.259003
1950 0.241432
1396 0.197692
C 2485 0.859803
2980 0.823075
2588 0.774576
2748 0.613309
2055 0.607444
E 3081 0.815492
3523 0.666928
3638 0.628147
3623 0.554344
3400 0.506123
我想用熊猫重新编制第二个索引:
A 1 0.463120
2 0.269023
3 0.244348
4 0.232505
5 0.199640
B 1 0.381681
2 0.284957
3 0.259003
4 0.241432
5 0.197692
C 1 0.859803
2 0.823075
3 0.774576
4 0.613309
5 0.607444
D 1 0.815492
2 0.666928
3 0.628147
4 0.554344
5 0.506123
即,第二个指数随着系列值的减少而增加,而第一个指数的单个值则减少
有没有办法只用熊猫就能做到这一点?您可以使用:
#创建示例数据
df=pd.DataFrame({'a':list(pd.util.testing.rands_数组(1,4,dtype='O'))*5,
“b”:np.random.rand(20)/.1,
'c':np.random.rand(20)/.01}
)
df.set_索引(['a','b',inplace=True)
df=df.sort_值(['a','c'],升序=[True,False])
df['x']=df.groupby('a').cumcount()+1
df=df.reset_index().set_index(['a','x'])
返回
bc
a x
a 15.0 89.0
2 4.0 84.0
3 2.0 83.0
4 3.0 41.0
5 4.0 30.0
K17.070.0
2 7.0 64.0
3 9.0 46.0
4 6.0 16.0
5 4.0 8.0
p 1 5.0 71.0
2 7.0 70.0
3 6.0 54.0
4 0.0 16.0
5 7.0 1.0
w 16.0 61.0
2 2.0 57.0
3 3.0 53.0
4 6.0 38.0
5 0.0 22.0
第一个索引的单个值递减的确切含义是什么?我的意思是,在第一个索引的单个值内,比如说'a',第二个索引将是一个整数,从1开始,随着序列值的递减而递增,即1代表0.463120,2代表0.269023,3代表0.244348。。。在我在问题中提供的示例中,如果值没有减少怎么办?这不是一个真正的问题。我的意思是,如果“新的第二个指数”从1开始,然后像“前一个第二个指数”那样增加,那就可以了。