pandas.DataFrame.nlargest 方法用于从 DataFrame 中获取具有最大值的前 N 行。它返回一个新的 DataFrame,其中包含按某一列或多列排序后的前 N 行。这个方法非常适合查找数据中排名前 N 的记录。对查找和排序数据非常有用,尤其是在处理大数据集时。本文主要介绍一下Pandas中pandas.DataFrame.nlargest方法的使用。

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

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

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

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

参数

n : int

要返回的行数。

columns :标签或标签列表

要排序的列标签。

keep {'first','last','all'}

默认为'first'

其中有重复的值:

1) first:优先处理第一次出现的事件

2) last:确定最后出现的优先顺序

3) all: 请勿丢弃任何重复项,即使这意味着

选择n个以上的项目。

0.24.0版中的新功能。

返回值

DataFrame

给定列按降序排列的前n行。

Notes

并非所有列类型都可以使用此功能。例如,当指定带有objectcategory dtypes的列时,TypeError引发。

例子

1)获取 population 列中最大值的前 3 行

import pandas as pd

# 创建 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"])

# 使用 nlargest 获取 population 最大的前 3 行
top_3_population = df.nlargest(3, 'population')

# 打印结果
print("Top 3 countries by population:")
print(top_3_population)

2)使用 keep='last' 获取 population 列中最大值的前 3 行,以相反的顺序解决

import pandas as pd

# 创建 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"])

# 使用 nlargest 获取 population 最大的前 3 行,keep='last'
top_3_population_last = df.nlargest(3, 'population', 
keep='last')

# 打印结果
print("Top 3 countries by population (keep='last'):")
print(top_3_population_last)

3)使用 keep='all' 保留所有重复项,获取 population 列中最大值的前 3 行

import pandas as pd

# 创建 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"])

# 使用 nlargest 获取 population 最大的前 3 行,keep='all'
top_3_population_all = df.nlargest(3, 'population',
keep='all')

# 打印结果
print("Top 3 countries by population (keep='all'):")
print(top_3_population_all)

4)按 populationGDP 列中的最大值排序

import pandas as pd

# 创建 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"])

# 使用 nlargest 获取按 population 和 GDP 排序的前 3 行
top_3_population_GDP = df.nlargest(3, 
['population', 'GDP'])

# 打印结果
print("Top 3 countries by population and GDP:")
print(top_3_population_GDP)

推荐文档

相关文档

大家感兴趣的内容

随机列表