根据第二个数据帧的匹配列更新熊猫数据帧
Posted
技术标签:
【中文标题】根据第二个数据帧的匹配列更新熊猫数据帧【英文标题】:Update pandas dataframe based on matching columns of a second dataframe 【发布时间】:2018-04-28 21:44:24 【问题描述】:我有两个具有相同列的 pandas 数据帧(df_1、df_2),但在一个数据帧(df_1)中有一些值为 1列丢失。所以我想从 df_2 中填充那些缺失的值,但前提是两列的值匹配。
这是我的数据的一个小例子:
df_1:
df_2:
我尝试添加缺失值:
df_1.update(df_2, overwrite=False)
但问题是,即使只有一列匹配,它也会填充值。我想在“housenumber”和“street”列匹配时填写值。
【问题讨论】:
【参考方案1】:我认为在DataFrame
s 和combine_first
或fillna
中都需要set_index
和Multiindex
:
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 的值