我有一個看起來像這樣的 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
提交
取消