DataFrame.nlargest(self, n, columns, keep='first') → 'DataFrame' [source]
返回按列降序排列的前n
行。
以降序返回column
中具有最大值的前n
行。未指定的列也将返回,但不用于排序。
此方法等效于 ,但性能更高。df.sort_values(columns, ascending=False).head(n)
参数: | n : 要返回的行数。 columns :标签或标签列表 要排序的列标签。 keep : 默认为 其中有重复的值: 1) first:优先处理第一次出现的事件 2) last:确定最后出现的优先顺序 3) all: 请勿丢弃任何重复项,即使这意味着 选择n个以上的项目。 0.24.0版中的新功能。 |
返回值: | DataFrame 给定列按降序排列的前n行。 |
Notes
并非所有列类型都可以使用此功能。例如,当指定带有object
或category 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)按 population
和 GDP
列中的最大值排序
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)