python - 重新分配 Pandas DataFrame 中的最大值

标签 python pandas pandas-groupby

我有一个如下所示的 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/

相关文章:

Python Twister Reactor callLater 时间源?

python - 使用 Python over Apache 通过 HTTP 将文件推送给用户时文件名错误

基于另一个数据框的 Python Pandas groupby

python - 选择每组中空值之前的行

python:如果符合条件(字符串比较),如何删除组中的所有项目?

python - 如何在 python pandas 中重新构造它?合并,取消堆叠还是什么?

python - 递归问题

python - 使用DeepExplainer时,Python中的SHAP是否支持Keras或TensorFlow模型?

python-3.x - 查找列中的开始时间和结束时间

python - Pandas:如何使用 df.to_dict() 轻松共享示例数据框?