我有两个数据框:
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
答案 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