0

我有一个如下所示的数据框

df= pd.DataFrame(np.array([[1, 2, 3], [1, 5, 6], [1, 8, 9],[2, 18, 9],[3, 99, 10],[3, 0.3, 5],[2, 58, 78],[4, 8, 9]]),

                   columns=['id', 'point_A', 'point_B'])

在此处输入图像描述

现在我想创建 columnpoint_Apoint_Brow 的总和。我可以通过以下代码做到这一点:df["sum_of_all"] = df[["point_A","point_B"]].sum(axis = 1)

现在我想根据sum_of_all. 这意味着最大的总和将是graded1,依此类推。现在必须根据它来完成id,我该怎么做?

更新 :

在此处输入图像描述 一旦我完成了总和和排序,我就会得到上面的输出。现在我的目标是根据id. 即: id 2 ,index 6, -> Grade = 1,id 2 in index 3 -> Grade 2 , id 3 on index 4 -> Grade 1 and id 3 on index 5 -> 2 依此类推

4

1 回答 1

2

重症监护病房

df2=df.sort_values(by=['sum_of_all','id'], ascending=[False, False])
df2['grade']=df2.groupby('id')['sum_of_all'].cumcount()+1
df2

结果

在此处输入图像描述

于 2020-04-23T20:51:45.953 回答