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

Python中对GroupBy结果应用transform函数的原理解析

Pandas中GroupBy结合transform函数的工作原理解释

示例代码

import pandas as pd 

data = {
    'Name': ['Alice', 'Alice', 'Charlie', 'Charlie'],
    'Age': [25, 30, 35, 40],
    'branch': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)

# 拼接字符串
df['branch'] = df.groupby(['Name'])['branch'].transform(lambda x : ' '.join(x))    

# 展示数据框
print(df) 

运行输出

NameAgebranch
Alice25New York Los Angeles
Alice30New York Los Angeles
Charlie35Chicago Houston
Charlie40Chicago Houston

具体工作逻辑拆解

当你对GroupBy结果应用transform时,整个流程分三步走:

  1. 分组拆分:先按照指定的列(这里是Name)把原DataFrame拆成独立分组——所有Name为Alice的行归为一组,Charlie的行归为另一组。
  2. 组内执行计算:对每个分组单独运行你传入的函数。这里的lambda x: ' '.join(x)会把分组里的branch字段所有字符串拼接成一个长串:Alice组的['New York', 'Los Angeles']变成New York Los Angeles,Charlie组的['Chicago', 'Houston']变成Chicago Houston。
  3. 对齐回填结果:把每个分组的计算结果,按照原DataFrame的行顺序,回填到对应行的位置。也就是说,原数据里属于Alice的每一行,都会被填上Alice组的拼接结果;Charlie的每一行同理。这就是为什么同一姓名的两行branch值完全一致——它们共享同一个分组计算的结果。

和apply不同,transform要求返回的结果能和原分组的行数匹配(或者可以自动广播到相同行数),这样才能完美对齐原DataFrame的行结构,不会改变数据的总行数和索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:12:04