Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.nsmallest方法的使用。

DataFrame.nsmallest(self, n, columns, keep='first') → 'DataFrame'  [source]

返回按列升序排列的前n行。

以升序返回前n行中column中的最小值。未指定的列也将返回,但不用于排序。

此方法等效于df.sort_values(columns, ascending=True).head(n) ,但性能更高。

参数

n : int

要检索的项目数。

columns list str

列名或按顺序排列的名称。

keep : {‘first’, ‘last’, ‘all’}, 默认 ‘first’

其中有重复的值:

1) first : 以第一个事件为例。

2) last : 以最后一个事件为例。

3) all : 不要删除任何重复项,

即使这意味着要选择超过n个项目。

0.24.0版中的新功能。

返回值

DataFrame

例子

>>> df = pd.DataFrame({'population': [59000000, 65000000, 434000,
...                                   434000, 434000, 337000, 11300,
...                                   11300, 11300],
...                    'GDP': [1937894, 2583560 , 12011, 4520, 12128,
...                            17036, 182, 38, 311],
...                    'alpha-2': ["IT", "FR", "MT", "MV", "BN",
...                                "IS", "NR", "TV", "AI"]},
...                   index=["Italy", "France", "Malta",
...                          "Maldives", "Brunei", "Iceland",
...                          "Nauru", "Tuvalu", "Anguilla"])
>>> df
          population      GDP alpha-2
Italy       59000000  1937894      IT
France      65000000  2583560      FR
Malta         434000    12011      MT
Maldives      434000     4520      MV
Brunei        434000    12128      BN
Iceland       337000    17036      IS
Nauru          11300      182      NR
Tuvalu         11300       38      TV
Anguilla       11300      311      AI

在以下示例中,我们将使用nsmallest选择“a”列中值最小的三行

>>> df.nsmallest(3, 'population')
          population  GDP alpha-2
Nauru          11300  182      NR
Tuvalu         11300   38      TV
Anguilla       11300  311      AI

使用时keep='last',领带以相反的顺序解决:

>>> df.nsmallest(3, 'population', keep='last')
          population  GDP alpha-2
Anguilla       11300  311      AI
Tuvalu         11300   38      TV
Nauru          11300  182      NR

使用时keep='all',将保留所有重复项:

>>> df.nsmallest(3, 'population', keep='all')
          population  GDP alpha-2
Nauru          11300  182      NR
Tuvalu         11300   38      TV
Anguilla       11300  311      AI

要按“ a”列然后“ c”列中的最大值排序,我们可以像下面的示例一样指定多个列

>>> df.nsmallest(3, ['population', 'GDP'])
          population  GDP alpha-2
Tuvalu         11300   38      TV
Nauru          11300  182      NR
Anguilla       11300  311      AI