python - 使用另一列分组后获取具有该列最大计数的记录
问题描述
我目前正在用 python 学习 pandas 并且遇到了一个问题。我有一个 csv 文件,其中包含美国人口普查数据csv variables info。对于这个问题,我们可以关注名为 STNAME 的列(例如,albama)和名为 COUNTY 的列。
STNAME 对每个县都有重复的值。也就是说,其中的每个县都可以有多个“albama”。
问题是:哪个州的县最多?(提示:仔细考虑 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]
在这里,我按州名分组并计算每个州的县并获取最大值
我可以将值作为布尔值获取。因为只有一个带有布尔“真”的状态。但我不知道如何只获取那条记录。
我应该如何进行?
解决方案
我找到了!
census_df.groupby('STNAME')['COUNTY'].count()[census_df.groupby('STNAME')['COUNTY'].count() == (census_df.groupby('STNAME')['COUNTY'].count().max())]
我认为唯一缺少的是 ['COUNTY'].count() 。我认为这是不必要的,因为我在 [] 括号内查询它,但我想我错了。我的理解是,最外面的部分与通过查询获取的格式不同。
推荐阅读
- c# - dbo.AspNetUsers 表上的 ASP.NET MVC 5 Core Identity CompanyID 外键
- android - Kotlin Mockk 错误:在 verify { ... } 块中缺少调用
- angular - 如何使用字符串引用 ng-template?
- javascript - TABULATOR - Mutator 不显示数据
- reactjs - Auth0 as SP:React 应用程序接收 SAML 响应,而不是带有代码和状态参数的重定向
- wordpress - 使用 Route 53 的 ELB 上的意外行为
- python - 将一个范围内的所有 x 值分箱然后取每个箱中所有 y 值的平均值的最佳方法?
- javascript - 使用jQuery滑块通过串行发送数据
- pandas - Pandas 数据框操作逻辑
- string - 如何将 QStringView 与 QML 一起使用?