根据第二个数据帧的匹配列更新熊猫数据帧

Posted

技术标签:

【中文标题】根据第二个数据帧的匹配列更新熊猫数据帧【英文标题】:Update pandas dataframe based on matching columns of a second dataframe 【发布时间】:2018-04-28 21:44:24 【问题描述】:

我有两个具有相同列的 pandas 数据帧(df_1df_2),但在一个数据帧(df_1)中有一些值为 1列丢失。所以我想从 df_2 中填充那些缺失的值,但前提是两列的值匹配。

这是我的数据的一个小例子:

df_1:

df_2:

我尝试添加缺失值:

df_1.update(df_2, overwrite=False)

但问题是,即使只有一列匹配,它也会填充值。我想在“housenumber”和“street”列匹配时填写值。

【问题讨论】:

【参考方案1】:

我认为在DataFrames 和combine_firstfillna 中都需要set_indexMultiindex

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

【讨论】:

谢谢!解决了我的问题,正是我需要的

以上是关于根据第二个数据帧的匹配列更新熊猫数据帧的主要内容,如果未能解决你的问题,请参考以下文章

检查两个数据帧之间的公共行并将第二个数据帧的匹配行替换为 df1 的值

熊猫合并:合并同一列上的两个数据框,但保留不同的列

根据来自不同数据帧的行名将列从另一个数据帧复制到

如何根据来自其他 pyspark 数据帧的日期值过滤第二个 pyspark 数据帧?

熊猫矢量化而不是两个数据帧的循环

如果第一个数据帧中存在行,如何更新第二个数据帧的存在值