我有一个看起来像这样的 DataFrame:id OUTCOMEA 0A 1A 0B 0B 0B 0C 0C 1C 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)这需要很长时间,所以我正在寻找更好的方法。我很感激你的建议!
1 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
您可以先按'id' 列分组,然后.transform(..)对OUTCOME列执行 a :
df['OUTCOME'] = df.groupby('id')['OUTCOME'].transform('max')
然后我们得到:
>>> df
id OUTCOME
0 A 1
1 A 1
2 A 1
3 B 0
4 B 0
5 B 0
6 C 1
7 C 1
8 C 1
添加回答
举报
0/150
提交
取消