在 Pandas DataFrame 中重新分配最大值

我有一个看起来像这样的 DataFrame:


id OUTCOME

A    0

A    1

A    0

B    0

B    0

B    0

C    0

C    1

C    1

如何重新分配结果值,使它们等于每组的最大值?换句话说,结果应该是这样的:


id OUTCOME

 A    1

 A    1

 A    1

 B    0

 B    0

 B    0

 C    1

 C    1

 C    1

我试过这样做:


id_tuple = ('A', 'B', 'C')

g = df.groupby('id')

for item in id_tuple:

    new_df = g.get_group(item)

    new_df['OUTCOME'] = new_df['OUTCOME'].max()

    df2 = pd.concat([df2, new_df], axis=0)

这需要很长时间,所以我正在寻找更好的方法。我很感激你的建议!


一只斗牛犬
浏览 77回答 1
1回答

一只名叫tom的猫

您可以先按'id' 列分组,然后.transform(..)对OUTCOME列执行 a :df['OUTCOME'] = df.groupby('id')['OUTCOME'].transform('max')然后我们得到:>>> df  id  OUTCOME0  A        11  A        12  A        13  B        04  B        05  B        06  C        17  C        18  C        1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python