求助:用Pandas筛选DataFrame某列3个最高值,nlargest返回整行怎么办?
Pandas 提取某一列的3个最高值(含去重/不去重方案)
你遇到的问题是nlargest默认返回整行数据,若只需目标列的数值,针对不同需求可以用以下方案:
场景1:提取列的前3个最高值(允许重复)
如果不需要去重,只想拿到列里数值最大的前3个(包含重复项),直接对目标列调用方法即可:
- 方式1:用
nlargest后转列表# df是你的DataFrame,'target_col'是目标列名 top3_values = df['target_col'].nlargest(3).tolist() - 方式2:先排序再取前3
top3_values = df['target_col'].sort_values(ascending=False).head(3).tolist()
场景2:提取列的3个唯一最高值(去重后取前3)
如果目标列有重复值,你需要的是不同的最高数值,先去重再筛选:
- 方式1:去重后用
nlargesttop3_unique_values = df['target_col'].drop_duplicates().nlargest(3).tolist() - 方式2:提取唯一值后排序截取
unique_values = df['target_col'].unique() top3_unique_values = sorted(unique_values, reverse=True)[:3]
示例演示
假设你的DataFrame如下:
import pandas as pd df = pd.DataFrame({ 'item': ['apple', 'banana', 'orange', 'pear', 'grape', 'mango'], 'price': [15, 20, 20, 25, 25, 25] })
- 场景1执行后得到:
[25, 25, 25] - 场景2执行后得到:
[25, 20, 15]
内容的提问来源于stack exchange,提问作者Python Patel
相关产品推荐
相关产品推荐

