如何使用另一个过滤的数据框更新数据框

时间:2019-05-14 10:59:50

标签: python pandas dataframe pandas-groupby

我有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

1 个答案:

答案 0 :(得分:1)

使用:

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