首页 > 解决方案 > 使用另一列分组后获取具有该列最大计数的记录

问题描述

我目前正在用 python 学习 pandas 并且遇到了一个问题。我有一个 csv 文件,其中包含美国人口普查数据csv variables info。对于这个问题,我们可以关注名为 STNAME 的列(例如,albama)和名为 COUNTY 的列。

STNAME 对每个县都有重复的值。也就是说,其中的每个县都可以有多个“albama”。 Census_Dataset

问题是:哪个州的县最多?(提示:仔细考虑 sumlevel 键!你也需要这个来解决未来的问题......)

我正在尝试什么:1.a> census_df[census_df.groupby('STNAME')['COUNTY'].count() == max(census_df.groupby('STNAME')['COUNTY'].count())]

1.b>census_df[census_df.groupby('STNAME')['COUNTY'].count() == (census_df.groupby('STNAME')['COUNTY'].count().max())]

1.c>census_df.groupby('STNAME')[census_df.groupby('STNAME')['COUNTY'].count() == (census_df.groupby('STNAME')['COUNTY'].count().max())]

在这里,我试图获取具有最大县计数的记录。最后一个给出错误:'未找到列:False,True'

2>

x = (census_df.groupby('STNAME')['COUNTY'].count() == census_df.groupby('STNAME')['COUNTY'].count().max() )
x[x['COUNTY'] == True]

在这里,我按州名分组并计算每个州的县并获取最大值

我可以将值作为布尔值获取。因为只有一个带有布尔“真”的状态。但我不知道如何只获取那条记录。

我应该如何进行?

标签: pythonpandas

解决方案


我找到了!

census_df.groupby('STNAME')['COUNTY'].count()[census_df.groupby('STNAME')['COUNTY'].count() == (census_df.groupby('STNAME')['COUNTY'].count().max())]

我认为唯一缺少的是 ['COUNTY'].count() 。我认为这是不必要的,因为我在 [] 括号内查询它,但我想我错了。我的理解是,最外面的部分与通过查询获取的格式不同。


推荐阅读