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)