熊猫按一列分组,并将另一列中的最大值设置为 1 否则为 0



>我有一个数据框如下:

df = pd.DataFrame({'unique_id':['x','x' , 'y', 'y'], 'chk':[5, 6, -4, -5], 'score':[5.52363, 6.73939, 7.53637, 3.08375]})

我想按'unique_id'列分组并在'score'列中查找最大值,并将最大值设置为 1,将其他设置为 0。

我试过df['result'] = df.groupby('unique_id').apply(lambda x: [x.score.idxmax()])

但它给了我空值。我的预期输出是

unique_ID  chk  score  result
x          5   5.52363   0
x          6   6.73939   1
y         -4   7.53637   1
y         -5   3.08375   0

GroupBy.transformSeries.eq一起使用以检查值是否为最大值,并Series.astype得到 0 或 1

df['result'] = df['score'].eq(df.groupby('unique_id')
.score
.transform('max')).astype(int)
print(df)
unique_id  chk    score  result
0         x    5  5.52363       0
1         x    6  6.73939       1
2         y   -4  7.53637       1
3         y   -5  3.08375       0

相关内容

  • 没有找到相关文章

最新更新