Update pandas dataframe based on matching columns of a second dataframe

牧云@^-^@ 提交于 2019-11-27 08:25:40

问题


I have two pandas dataframes (df_1, df_2) with the same columns, but in one dataframe (df_1) some values of one column are missing. So I want to fill in those missing values from df_2, but only when the the values of two columns match.

Here is a little example what my data looks like:

df_1:

df_2:

I tried to add the missing values with:

df_1.update(df_2, overwrite=False)

But the problem is, that it will fill in the values, even when just one column matches. I want to fill in the value when the columns "housenumber" AND "street" matches.


回答1:


I think you need set_index for Multiindex in both DataFrames and then combine_first or fillna:

df1 = df_1.set_index(["housenumber", "street"])
df2 = df_2.set_index(["housenumber", "street"])

df = df1.combine_first(df2).reset_index()

df = df1.fillna(df2).reset_index()


来源:https://stackoverflow.com/questions/47311266/update-pandas-dataframe-based-on-matching-columns-of-a-second-dataframe

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!