我正在尝试根据聚合值在groupby多索引数据帧的多个级别中进行排序。想知道我在说什么:
我有一个分层的数据集,然后在多个级别上分组。然后我对它们进行汇总和计算。然后我想把它们放在彼此之间。在
在0级,值应该根据所述度量值的总和按降序排列。然后在级别1中,根据所述度量值的和、级别2等,对值进行降序排序。。在
在groupby之后,如何在每个级别进行排序?在
我知道不举一个例子很难,但如果我能被指向正确的方向那就太好了,谢谢
编辑: 原始数据:
pd.DataFrame(data=[['a','car',6], ['a','bike',7], ['a','car',8], ['b','bike',9], ['b','car',10], ['b','bike',11]], columns=['a', 'b', 'c'])
分组依据:
^{pr2}$重置索引后的期望输出:
pd.DataFrame(data=[['b','bike',20], ['b','car',10], ['a','car',14], ['a','bike',7]], columns=['a', 'b', 'c'])
更新答案
我将分为多个步骤(请注意,为了清晰起见,我更改了您的列名,即
df.columns=['Col1','Col2','Col3']
):第1步
我们首先希望
^{pr2}$groupby('Col1')
并使用transform(sum)
根据与给定组相关联的Col3
中的值的和来转换数据帧。这通过使用sort_values('Col3', ascending=False)
存储结果索引并使用它来设置原始数据帧df
的索引,来设置Col1
的顺序。在它给出了:
第2步
现在我们可以简单地按
Col1
和Col2
分组,使用sort=False
来保持步骤1中的排序顺序,并基于Col3
的和进行聚合。使用reset_index()
清理索引并还原原始列。在您想要的输出:
相关问题 更多 >
编程相关推荐