使用另一列分组后,获取具有最大列数的记录

时间:2019-03-19 05:06:11

标签: python pandas

我目前正在用python学习熊猫,遇到了一个问题。 我有一个包含美国人口普查数据csv variables info的csv文件。对于这个问题,我们可以重点关注名为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]

在这里,我要按州名称进行分组,并对每个州的县进行计数并获取最大值

我可以将其作为布尔值获取。因为只有一个状态是布尔值“ True”。但我不知道该如何仅获取单个记录。

我应该如何进行?

1 个答案:

答案 0 :(得分:1)

我找到了!

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

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