Python 基于DataFrameGroupBy对象中的数据替换Dataframe中的值

Python 基于DataFrameGroupBy对象中的数据替换Dataframe中的值,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我试图用聚合值替换pandasDataFrame中的条目,聚合值由另一列中的标识符“分组”,但不确定如何正确执行 数据 假设我有一个pandasDataFrame对象,它包含许多重复的id条目和一些相应的值: df unique_id id value r1_c1 c1 9 r2_c1 c1 3 r3_c1 c1 4 r1_c1

我试图用聚合值替换pandas
DataFrame
中的条目,聚合值由另一列中的标识符“分组”,但不确定如何正确执行

数据

假设我有一个pandas
DataFrame
对象,它包含许多重复的
id
条目和一些相应的值:

df
  unique_id       id       value
      r1_c1       c1           9
      r2_c1       c1           3
      r3_c1       c1           4
     r1_c10      c10          10
     r2_c10      c10           9
     r3_c10      c10          25
        ...      ...         ..
   r2_c1000    c1000           8
   r4_c1000    c1000          10
以及一个
DataFrameGroupBy
对象,该对象具有唯一的
id
条目,该条目具有来自
DataFrame
条目的聚合(平均)值,这些条目按
id
分组:

即:

也就是说,它的形状是
1000x2
——可以看作是映射
id->(平均)值的字典/哈希表

我想要实现什么?

本质上,我试图根据
DataFrameGroupBy
对象中的
平均值替换原始
DataFrame
对象中
id
的所有
值。因此,例如,原始
DataFrame
对象中的所有
c1
都应具有值3、
c10
和值4,以此类推:

df
  unique_id       id       value
      r1_c1       c1           3
      r2_c1       c1           3
      r3_c1       c1           3
     r1_c10      c10           4
     r2_c10      c10           4
     r3_c10      c10           4
        ...      ...         ...
   r2_c1000    c1000           5
   r4_c1000    c1000           5
但我不知道如何在熊猫身上做到这一点。欢迎任何帮助


谢谢

您正在寻找转换:
df['value']=df.groupby('id')['value'].transform('mean')
Ah是的,这几乎就是我想要的!如果我还想保留数据框中的其他列,您知道我必须做什么吗?只需将其设置为等于一个新列即可。ie
df['avg_value']=…
哦,是的,这很有效-非常感谢!
df
  unique_id       id       value
      r1_c1       c1           3
      r2_c1       c1           3
      r3_c1       c1           3
     r1_c10      c10           4
     r2_c10      c10           4
     r3_c10      c10           4
        ...      ...         ...
   r2_c1000    c1000           5
   r4_c1000    c1000           5