pandas.DataFrame.nlargest#
- DataFrame.nlargest(n, columns, keep='first')[源代码][源代码]#
返回按 columns 降序排列的前 n 行。
返回 columns 中具有最大值的前 n 行,按降序排列。未指定的列也会返回,但不会用于排序。
此方法等同于
df.sort_values(columns, ascending=False).head(n)
,但性能更高。- 参数:
- nint
要返回的行数。
- 列标签或标签列表
要排序的列标签。
- 保持{‘first’, ‘last’, ‘all’}, 默认 ‘first’
在有重复值的地方:
first
: 优先考虑第一次出现的内容last
: 优先考虑最后一次出现all
: 即使这意味着选择超过n
个项目,也要保留最小项目的所有关联。
- 返回:
- DataFrame
按给定列降序排序的前 n 行。
参见
DataFrame.nsmallest
返回按 columns 升序排列的前 n 行。
DataFrame.sort_values
按值排序 DataFrame。
DataFrame.head
返回前 n 行而不重新排序。
注释
此函数不能与所有列类型一起使用。例如,当指定具有 object 或 category dtypes 的列时,会引发
TypeError
。例子
>>> 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
在以下示例中,我们将使用
nlargest
选择列“population”中值最大的三行。>>> df.nlargest(3, "population") population GDP alpha-2 France 65000000 2583560 FR Italy 59000000 1937894 IT Malta 434000 12011 MT
当使用
keep='last'
时,平局按相反顺序解决:>>> df.nlargest(3, "population", keep="last") population GDP alpha-2 France 65000000 2583560 FR Italy 59000000 1937894 IT Brunei 434000 12128 BN
当使用
keep='all'
时,如果最小元素有重复值,保留的元素数量可以超过n
,所有并列的元素都会被保留:>>> df.nlargest(3, "population", keep="all") population GDP alpha-2 France 65000000 2583560 FR Italy 59000000 1937894 IT Malta 434000 12011 MT Maldives 434000 4520 MV Brunei 434000 12128 BN
然而,
nlargest
不会保留n
个不同的最大元素:>>> df.nlargest(5, "population", keep="all") population GDP alpha-2 France 65000000 2583560 FR Italy 59000000 1937894 IT Malta 434000 12011 MT Maldives 434000 4520 MV Brunei 434000 12128 BN
要按列“population”中的最大值排序,然后按“GDP”排序,我们可以像下一个示例中那样指定多个列。
>>> df.nlargest(3, ["population", "GDP"]) population GDP alpha-2 France 65000000 2583560 FR Italy 59000000 1937894 IT Brunei 434000 12128 BN