Python 为什么DataFrame.nlargest不排序结果?

Python 为什么DataFrame.nlargest不排序结果?,python,pandas,Python,Pandas,以下是熊猫文件v0.22.0中的一个示例: In [330]: df = pd.DataFrame({'a': [-2, -1, 1, 10, 8, 11, -1], 'b': list('abdceff'), 'c': [1.0, 2.0, 4.0, 3.2, np.nan, 3.0, 4.0]}) In [332]: df.nlargest(5, ['a', 'c']) Ou

以下是熊猫文件v0.22.0中的一个示例:

In [330]: df = pd.DataFrame({'a': [-2, -1, 1, 10, 8, 11, -1],
                             'b': list('abdceff'),
                             'c': [1.0, 2.0, 4.0, 3.2, np.nan, 3.0, 4.0]})

In [332]: df.nlargest(5, ['a', 'c'])
Out[332]: 
     a  b    c
 6  -1  f  4.0
 5  11  f  3.0
 3  10  c  3.2
 4   8  e  NaN
 2   1  d  4.0
为什么结果不是先按“a”排序,然后按“c”排序

同时,使用单列应用
nlargest()
始终会对结果排序:

df.nlargest(5,['a'])
Out[110]: 
     a  b    c
5  11.0  f  3.0
3  10.0  c  3.2
4   8.0  e  NaN
2   1.0  d  4.0
1  -1.0  b  2.0

这不是一个bug,但是预期的,请检查:

NLAGEST不会对值进行排序(这也是它更快的部分原因)

你可以以后再分类

In [32]: df.sort_values(['a', 'c'], ascending=False).head(5)
Out[32]:
    a  b    c
5  11  f  3.0
3  10  c  3.2
4   8  e  NaN
2   1  d  4.0
6  -1  f  4.0

In [33]: df.nlargest(5, ['a', 'c']).sort_values(['a', 'c'], ascending=False)
Out[33]:
    a  b    c
5  11  f  3.0
3  10  c  3.2
4   8  e  NaN
2   1  d  4.0
6  -1  f  4.0