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

2024-10-03 13:16:41 发布

您现在位置: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'])
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()与单个列一起应用时,始终会对结果排序:

^{pr2}$

Tags: in文档示例dataframepandasdf排序np
1条回答
网友
1楼 · 发布于 2024-10-03 13:16:41

这是一个not bug,但应该是,请检查here

nlargest doesn't sort the values (which is part of why it's faster).

You can sort afterwards.

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

相关问题 更多 >