我有一个如下所示的 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)
这需要很长时间,所以我正在寻找更好的方法。感谢您的建议!
最佳答案
您可以首先按 'id
' 列进行分组,然后对 OUTCOME
列执行 .transform(..)
:
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
关于python - 重新分配 Pandas DataFrame 中的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58252742/