You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas如何不使用for循环将DataFrame列值替换为对应分组的最大值

实现方案

你可以直接使用pandas的groupby.transform方法完成需求,无需手动转字典再映射,仅一行代码即可:

df['value'] = df.groupby('group')['value'].transform('max')

方法说明

transform方法会在分组聚合后,将每组的最大值自动广播匹配到该组的所有行,返回结果的长度和原DataFrame完全一致,刚好适配将分组统计值回填到每一行的场景。相比你原本的实现逻辑更简洁,也避免了生成中间字典的额外开销。

如果你的DataFrame列名是大写开头的Group和Value,调整对应参数即可:

df['Value'] = df.groupby('Group')['Value'].transform('max')

完整测试代码

import pandas as pd
# 构造示例DataFrame
df = pd.DataFrame([
    [1, "A", 3], [2, "A", 2], [3, "A", 3],
    [4, "B", 5], [5, "B", 1],
    [6, "C", 3], [7, "C", 4]
], columns=["run", "group", "value"])

# 替换value为分组最大值
df['value'] = df.groupby('group')['value'].transform('max')
print(df)

运行后即可得到你期望的输出结果。

内容的提问来源于stack exchange,提问作者Apollo42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:12:04