我想计算最大得分-熊猫数据框中项目的每个得分
当前df如下所示:
projectID supplierID score
1 1 50
1 2 60
1 3 75
我希望它看起来像这样:
projectID supplierID score diff_to_max
1 1 50 25
1 2 60 15
1 3 75 0
我想对每个projectID进行此操作
答案 0 :(得分:3)
通过transform
广播并减去
df.groupby('projectID').score.transform('max') - df.score
答案 1 :(得分:1)
使用Numpy的非直截了当的快速/酷炫方式
i, r = pd.factorize(df.projectID)
score = df.score.values
out = np.empty(len(r), score.dtype)
out.fill(score.min() - 1)
np.maximum.at(out, i, score)
df.assign(diff_to_max=out[i] - score)
projectID supplierID score diff_to_max
0 1 1 50 25
1 1 2 60 15
2 1 3 75 0