Python 如何在一个数据框架中从每个地区找到幸福感得分最低和最高的国家?

Python 如何在一个数据框架中从每个地区找到幸福感得分最低和最高的国家?,python,pandas,dataframe,pandasql,Python,Pandas,Dataframe,Pandasql,我有一个熊猫数据框“df”,有列[国家、地区、幸福指数、年份] df中总共有165个国家拥有3年的数据(201520162017),因此df的长度为165*3=495 df中总共有10个独特的地区,每个国家在“地区”列中都有其地区名称 我想制作一个输出,显示每个地区的最低和最高幸福指数 例如,输出应具有以下列:[code>地区、最低幸福分数、最高幸福分数、国家该地区拥有最低幸福分数、国家/地区拥有最高幸福分数] 由于有10个独特的区域,很明显,输出的长度也应该为10。欢迎使用pandas函数和p

我有一个熊猫数据框“df”,有列
[国家、地区、幸福指数、年份]

df中总共有165个国家拥有
3年的数据(201520162017)
,因此df的长度为
165*3=495

df中总共有10个独特的地区,每个国家在“地区”列中都有其地区名称

我想制作一个输出,显示每个地区的最低和最高幸福指数

例如,输出应具有以下列:[code>地区、最低幸福分数、最高幸福分数、国家该地区拥有最低幸福分数、国家/地区拥有最高幸福分数]


由于有10个独特的区域,很明显,输出的长度也应该为10。欢迎使用pandas函数和pandasql的解决方案,但我更喜欢使用pandas函数的解决方案。

这将接近您的目标-按区域分组并查找最小值和最大值:

mins = df.groupby('Region')['Happiness Score'].min()
maxs = df.groupby('Region')['Happiness Score'].max()
df2=pd.concat([mins,maxs],axis=1)
df2.columns=(['Min Happiness Score','Max Happiness Score'])
df2['Region']=mins.index
在Q.Hoang的好评论之后编辑-你可以用

df.groupby(['Country','Region'])['Happiness Score'].agg(['min','max'])

这将为您提供国家、地区和每个地区的最低/最高分数。对我来说,最重要的是有很多函数接受列表参数。

Hi Osho。请告诉我们您遇到的具体问题。请不要期望人们为您编写完整的代码。除了用文字描述数据之外。@MayankPorwal实际上整个问题比这个问题要长,但我只问了我卡住的部分。经过研究,我发现我可以使用df.groupby('region')['happiness score'].transform('min')或('max')获得该地区的最低和最高幸福分数,但无法获得该地区的国家。@timgeb实际数据集包含更多列,因此,我认为最好只提及我需要处理的列,以避免混淆。@Osho您不应该显示整个数据集。请参阅我给您的链接。
df.groupby('Region')['Happiness Score'].agg(['min','max'])
如何获取各地区的相应国家/地区?@QuangHoang遗憾的是,这不是正确的输出。我想要‘地区’、‘最低分数’、‘最高分数’、‘最低分数的国家’、‘最高分数的国家’。这个输出应该有10列(根据每个区域)。你建议的是165列,这意味着它显示了每个“国家”,“该国的地区”,“该国的最低分数”,“该国的最高分数”。我尝试了你建议的不同排列,也在groupby中添加了“年”,但没有一个能提供所需的输出。