首页 > 解决方案 > 如何用另一个过滤的数据框更新数据框

问题描述

我有 2 个数据框。我需要用第二个中的平均值更新第一个中的一列,按索引分组。这里是一个例子 df1 (col1 是索引)

      col2 col3
col1           
a        0    X
b        0    0
c        0    0
d        0    0

df2(col1 是索引)

    col2  col3
col1            
a        1     0
a        3     0
d        2     0
d        4     0

我需要 df2 的 col2 (a=2, d=3) 的平均值,并且只为 col3 = X 的行更新 df1

我试过这个

df1.loc[df1.col3=='X'].update(df2.groupby(df2.index),'col2'].mean().to_frame())

它仅在我不使用 loc 时才有效。

我试图拥有 df1 的结果(col1 是索引)

    col2 col3
col1           
a        2    X
b        0    0
c        0    0
d        0    0

标签: pythonpandasdataframepandas-groupby

解决方案


利用:

m=df2.groupby(df2.index).col2.mean()
df1.loc[df1.col3=='X','col2']=m
print(df1)

      col2 col3
col1           
a        2    X
b        0    0
c        0    0
d        0    0

推荐阅读