无法按值降序排序 pandas 数据帧,然后按字母升序排序

Failing to sort pandas dataframe by values in descending order and then alphabetically in ascending order

我的dataframe的一部分df是这样的,大家可以复现一下

data ={'feature_name': ['nite', 'thank', 'ok', 'havent', 'done', 'beverage', 'yup', 'lei','thanx', 'okie', '146tf150p', 'home', 'too', 'anytime',
       'where', '645', 'er', 'tick', 'blank'], 'values':[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.98, 0.98] }
df = pd.DataFrame(data)
df.set_index('feature_name',inplace=True)
dfs=df.sort_index(ascending=True).sort_values(by = ['values'], ascending=False)
dfs

我的输出是这样的。

            values
feature_name    
146tf150p   1.00
645         1.00
where       1.00
too         1.00
thanx       1.00
thank       1.00
okie        1.00
ok          1.00
nite        1.00
lei         1.00
home        1.00
havent      1.00
er          1.00
done        1.00
beverage    1.00
anytime     1.00
yup         1.00
blank       0.98
tick        0.98

不太明白为什么不是这样?它确实应该工作,但它没有按预期工作。


146tf150p   1.00
645         1.00
anytime     1.00
beverage    1.00
done        1.00
er          1.00
haven't     1.00
home        1.00
...

我该如何解决这个问题?

摆脱 set_index 并在两个值上使用 sort_values 和 feature_name:

print (df.sort_values(by = ['values',"feature_name"], ascending=(False, True)))

   feature_name  values
10    146tf150p    1.00
15          645    1.00
13      anytime    1.00
5      beverage    1.00
4          done    1.00
16           er    1.00
3        havent    1.00
11         home    1.00
7           lei    1.00
0          nite    1.00
2            ok    1.00
9          okie    1.00
1         thank    1.00
8         thanx    1.00
12          too    1.00
14        where    1.00
6           yup    1.00
18        blank    0.98
17         tick    0.98