我有一个包含州、县和人口统计数据的数据框架,包括以下列:
SUMLEV REGION DIVISION STATE COUNTY STNAME CTYNAME CENSUS2010POP
在下面的一行中,我对数据框进行分组,并对每个州的县人口进行排序
sorted_df = temp_df.groupby(['STNAME']).apply(lambda x: x.sort_values(['CENSUS2010POP'], ascending = False))
分类后,我只想保持3个最大的县人口明智
largestcty = sorted_df.groupby(['STNAME'])["CENSUS2010POP"].nlargest(3)
作为下一步,我想用下面的命令对这些值求和
top3sum = largestcty.groupby(['STNAME']).sum()
但现在的问题是,关键字'STNAME'不在groupby后面的序列中。我的问题是如何保存序列中原始数据帧的密钥?你知道吗
所以在应用了这个答案之后,我将top3sum
作为一个数据帧
top3sum = pd.DataFrame(largestcty.groupby(['STNAME'])'STNAME','CENSUS2010POP'].sum(),columns =['CENSUS2010POP'])
top3sum[:8]
>>>
STNAME CENSUS2010POP
Alabama 1406269
Alaska 478402
Arizona 5173150
Arkansas 807152
California 15924150
Colorado 1794424
Connecticut 2673320
Delaware 897934
这就是top3sum数据的样子,然后我得到:cnty = top3sum['CENSUS2010POP'].idxmax()
和cnty = California
但是当我尝试使用cnty和top3sum['STNAME']
时,我收到了一个密钥错误
您的问题是,在第二次分组之后,只选择列
CENSUSxxx
,然后选择三个最大的值。你知道吗请注意,在应用nlargest之前不需要预先排序,因此第一个命令是不必要的。但是,如果进行排序,则可以轻松地选取已排序的分组数据帧的前3行:
然后需要采用sum命令来选择所需的列:
相关问题 更多 >
编程相关推荐