繁体   English   中英

对于第一个 df 中值的所有实例,如何用另一个 dataframe 的值替换 pandas 行?

[英]How do I replace pandas rows with values of another dataframe for all instances of the value in the first df?

我有两个数据框:

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

现在我需要用df2中的a替换df1中所有出现的a (在本例中为 2 ),使bc保持不变。 最终的 dataframe 应该是:

df_final=
A   B   C
b   2   3
c   2   2
a   1   3.5

你的意思是:

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))

如果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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM