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

如何为df1生成分组均值列并将该均值映射至另一DataFrame df2?

如何为DataFrame分组添加均值列并关联到另一个DataFrame?

我刚好处理过类似的需求,用Pandas可以轻松实现,咱们分两步来搞定:

第一步:为df1添加分组均值列C

要给每个A分组对应的B值计算均值,并把这个均值填充到每一行的C列,用groupby配合transform是最方便的——transform会保留原DataFrame的索引结构,直接就能赋值到新列:

import pandas as pd

# 假设df1已经创建完成
df1["C"] = df1.groupby("A")["B"].transform("mean")

执行后df1就会变成你想要的结果:

A B C
0 2002-01-13 3.9 2.9
1 2002-01-13 1.9 2.9
2 2002-01-14 8.0 8.5
3 2002-01-14 9.0 8.5

第二步:把分组均值关联到df2的E列

首先我们从df1里提取出A分组和对应的均值(去重),然后用两种常用方法给df2赋值:

方法一:用map(简洁高效)

先提取分组均值的映射关系,再通过map快速赋值:

# 生成A到均值的字典映射
mean_map = df1.groupby("A")["B"].mean().to_dict()
# 给df2添加E列
df2["E"] = df2["A"].map(mean_map)

方法二:用merge(适合复杂关联场景)

如果后续有更多列需要关联,merge会更灵活:

# 创建分组均值的临时DataFrame并重命名列
mean_df = df1.groupby("A")["B"].mean().reset_index().rename(columns={"B": "E"})
# 左关联到df2,保留原df2的所有行
df2 = df2.merge(mean_df, on="A", how="left")

两种方法都能得到目标df2:

A D E
0 2002-01-13 Joseph 2.9
1 2002-01-13 Emma 2.9
2 2002-01-13 Michael 2.9
3 2002-01-14 Anna 8.5
4 2002-01-14 Yvonne 8.5
5 2002-01-14 Anthony 8.5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:23:24