我目前正在用python学习熊猫,遇到了一个问题。 我有一个包含美国人口普查数据csv variables info的csv文件。对于这个问题,我们可以重点关注名为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]
在这里,我要按州名称进行分组,并对每个州的县进行计数并获取最大值
我可以将其作为布尔值获取。因为只有一个状态是布尔值“ True”。但我不知道该如何仅获取单个记录。
我应该如何进行?
答案 0 :(得分:1)
我找到了!
census_df.groupby('STNAME')['COUNTY'].count()[census_df.groupby('STNAME')['COUNTY'].count() == (census_df.groupby('STNAME')['COUNTY'].count().max())]
我认为唯一缺少的是['COUNTY']。count()。我认为这是不必要的,因为我在[]括号内进行查询,但是我想我错了。我的理解是,最外面的部分的格式与通过查询获取的格式不同。