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