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

我想要的输出如下所示

我尝试使用that,但我面临的问题是STNAME和CTYNAME都是对象。我试过的公式如下:
def abcd(df):
return (df.nlargest(3,['STNAME','CTYNAME','CENSUS2010POP']))另一种查询方法是,我尝试使用groupby方法:
df.groupby('STNAME')['CTYNAME','CENSUS2010POP'].max()但是这个公式给了我最大的per值,而不是3个最大值。有人能帮上忙吗?
发布于 2019-04-25 16:35:47
尝试:
df.groupby('STNAME').apply(lambda grp: grp.nlargest(3,columns='CENSUS2010POP') )
发布于 2019-04-25 18:10:51
将CTYNAME作为索引,因为它们是唯一的,然后使用groupby STNAME,并使用n最大方法获取前3个填充状态。
df = df.set_index('CTYNAME')
df.groupby('STNAME')['CENSUS2010POP'].nlargest(3).reset_index()发布于 2019-04-26 18:24:45
另一种解决方案:
df.sort_values('CENSUS2010POP',ascending=False).groupby('STNAME',as_index=False).head(3)https://stackoverflow.com/questions/55844006
复制相似问题