对于第一个df中值的所有实例,如何用另一个数据框的值替换熊猫行?

时间:2020-05-19 03:27:27

标签: python pandas

我有两个数据框:

df1=
A   B   C
a   1   3
b   2   3
c   2   2
a   1   4
df2=
A   B   C
a   1   3.5

现在,我需要用a中的df1替换a中的所有df2(在这种情况下为2),剩下b和{{ 1}}不变。最终数据框应为:

c

2 个答案:

答案 0 :(得分:1)

您的意思是:

df_final = pd.concat((df1[df1['A'].ne('a')], df2))

或者如果您有多个值,例如a

list_special = ['a']
df_final = pd.concat((df1[~df1['A'].isin(list_special)], df2))

答案 1 :(得分:0)

如果df2仅具有重复值的平均值,则可以进行df1.groupby(["A", "B"]).mean().reset_index()

否则,您可以执行以下操作:

In [27]: df = df1.groupby(["A", "B"]).first().merge(df2, how="left", on=["A", "
    ...: B"])
    ...: df["C"] = df["C_y"].fillna(df["C_x"])
    ...: df = df[["A", "B", "C"]]
    ...: df
Out[27]:
   A  B    C
0  a  1  3.5
1  b  2  3.0
2  c  2  2.0