Python 基于DataFrameGroupBy对象中的数据替换Dataframe中的值
我试图用聚合值替换pandasPython 基于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
DataFrame
中的条目,聚合值由另一列中的标识符“分组”,但不确定如何正确执行
数据
假设我有一个pandasDataFrame
对象,它包含许多重复的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是的,这几乎就是我想要的!如果我还想保留数据框中的其他列,您知道我必须做什么吗?只需将其设置为等于一个新列即可。iedf['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