我有一个熊猫数据帧如下。在
df = pd.DataFrame({"A": [3,1,2,4,5,3,4,10], "B": [1,3,2,4,0,0,1,0]})
行值0到10是建议值(最好是10)。一个数据帧列是与0到10建议相关的类别(a、B等)。所有类别的权重都相同,但每行都与一个项目相关。在
我希望将数据帧中的最大值组合到两个类别(或更多)的项目进行排序。因此,如果与项目相关的行在类别a中的值为10,而在类别B中的值为0,则这将不是最高评级项目的预期解决方案。在上面给出的示例中,值为[4,4]的行是最佳选择。在
我的groupby解决方案没有给出预期的结果。在
grouped = df.groupby(['A', 'B'])
grouped[["A", "B"]].max().sort(ascending=False)
结果:
^{pr2}$基于行的总和也不会产生预期的结果,因为它不区分类别。在
这个怎么样
如果您有更多列要排名
^{pr2}$['A','B','C', ...]
更新
因为0被认为是一个质量值(最低值),所以我会修改我的答案如下(不确定它会产生巨大的影响)
然后计算数据帧中每列的秩
^{pr2}$向数据框添加一个新列,该列是基于所有类别的总排名
最后按总排名对数据帧进行排序
相关问题 更多 >
编程相关推荐