我写了这段代码,完全按照我的要求去做。我想知道是否有一种简化方法,因为它似乎有点多余。我觉得它可能不是唯一的原因是因为第二步(创建一个新列)。
sorted_vals = df[df['binary'] == '0'].sort_values(by='height')
sorted_vals['rank'] = sorted_vals['height'].rank(ascending=1)
sorted_vals = sorted_vals.groupby(['school']).mean()
编辑:根据建议,这是我将使用的示例数据集(来自csv文件):
id,name,binary,state,height
1,"Bob",0,NY,74.93
2,"Matt",1,NJ,67.1
3,"Chad",0,TN,65.93
4,"Maria",0,NJ,73.48
5,"Riley",1,NY,70.67
我首先要通过"二进制"来分隔数据。属性,因为我需要分别为两组计算高度方面的排名。在我将两者分开后,我想创建一个按高度排列的新列。我的最终目标是对拥有最高人群的州进行排名,然后重新组合我刚刚找到的两个排名并找到州的平均身高。
我希望这会有所帮助。