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

如何在Pandas中无需合并DataFrame,基于GroupBy结果新增列?

在Pandas中无需合并DataFrame实现分组新增列的简便方法

当然存在更简便的实现方式,完全不需要生成中间DataFrame再合并,Pandas的groupby()搭配transform()方法就能实现和R中group_by()+mutate()一致的效果——直接基于分组计算结果为原数据集新增列。

核心实现代码

import pandas as pd

df = pd.DataFrame({
   'date': ['2020-01-01', '2020-02-01', '2020-03-01'] * 3,
   'name': [
       'Romulo', 'Romulo', 'Romulo',
       'Daniel', 'Daniel', 'Daniel',
       'Fernando', 'Fernando', 'Fernando'
       ]
})

# 直接为原DataFrame新增max_date列
df['max_date'] = df.groupby('name')['date'].transform('max')

链式调用写法(贴近R的管道风格)

如果习惯链式操作,也可以用assign()实现:

df = df.assign(
    max_date=lambda x: x.groupby('name')['date'].transform('max')
)

原理说明

transform()方法的作用是将分组计算的结果广播回原数据的每一行:对每个分组执行指定的聚合操作(比如max)后,会将该组的计算值填充到该组的所有行中,最终返回一个与原数据长度一致的Series,直接赋值给新列即可完成需求,完全省去了中间DataFrame的生成与合并步骤。

内容的提问来源于stack exchange,提问作者Fernando Rocha Urbano

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:54:30