首页 > 解决方案 > 在过滤数据框(census.csv)中的多列时提取前 3 个值

问题描述

我正在使用熊猫并尝试查询人口普查数据集。我想根据人口(从最大到最小)提取每个州的前 3 个城市。我正在粘贴数据集的简短快照以供参考

在此处输入图像描述

我想要的输出是这样的

在此处输入图像描述

我尝试使用 nlargest 但我面临的问题是 STNAME 和 CTYNAME 都是对象。我试过的公式如下:

def abcd(df):
    return (df.nlargest(3,['STNAME','CTYNAME','CENSUS2010POP']))

另一种查询方式,我尝试使用 groupby 方法:

df.groupby('STNAME')['CTYNAME','CENSUS2010POP'].max()

但是这个公式给了我每个最大值而不是 3 个最大值。任何人都可以帮忙吗?

标签: pythonpandascsv

解决方案


尝试:

df.groupby('STNAME').apply(lambda grp: grp.nlargest(3,columns='CENSUS2010POP') )


推荐阅读