You need to enable JavaScript to run this app. Pandas分组取众数后如何一步关联回原始DataFrame
优惠活动
大模型
产品
解决方案
定价
更多

Pandas分组取众数后如何一步关联回原始DataFrame

分组众数回写原表的一步实现方法

完全不需要手动编写merge逻辑,利用pandas分组对象的transform方法,就能直接把组内计算的众数逐行关联回原始DataFrame,简洁性和执行效率都优于手动merge的写法。

核心实现代码

# 直接在原DataFrame新增列,存储每个Name对应分组的Numbers列众数
df['group_num_mode'] = df.groupby('Name')['Numbers'].transform(
    lambda x: pd.Series.mode(x)[0]
)

实现逻辑与优势

  • transform会自动完成结果对齐:每个分组计算出的组级众数,会自动匹配到该组对应的所有原始行位置,最终输出的序列长度和原始DataFrame完全一致,不需要手动指定连接键、连接方式,也不存在索引错位的风险。
  • 全程没有冗余的中间表生成:不需要像手动merge那样先把分组聚合结果转成独立DataFrame,再做表连接操作,减少了不必要的步骤。
  • 计算结果和手动merge完全一致:如果遇到组内存在多个并列众数的场景,依然会按照原有逻辑取排序后的第一个众数值,输出和手动merge的结果没有差异。

注意事项

你之前写的分组代码中.reset_index(False)属于旧版pandas的参数写法,当前新版本pandas中该参数已调整为reset_index(drop=True)。在transform的实现中,完全不需要调用重置索引的操作,自然也不会遇到这类版本兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 19:54:01