填写与另一个数据框的索引和列匹配的缺失值

时间:2020-04-28 20:06:44

标签: python pandas

我目前在使用其他数据框填充数据框的缺失值时遇到问题。

数据样本:

df1

A   B       C
b   1.0     1.0
d   NaN     NaN
c   2.0     2.0
a   NaN     NaN
f   NaN     NaN

df2

A   B   C
c   1   5
b   2   6
a   3   7
d   4   8

我尝试遵循此question中的解决方案,但似乎只有在您要连接的两个数据框中都存在您要查找的值时,才有可能。

我的尝试

mask = df1["B"].isnull()
df1.loc[mask, "B"] = df2[df1.loc[mask, "A"]].values

错误:

"None of [Index(['d', 'a', 'f'], dtype='object')] are in the [columns]"

预期结果:

A   B       C
b   1.0     1.0
d   4.0     8.0
c   2.0     2.0
a   3.0     7.0
f   NaN     NaN

还可以用它填充两列吗?

1 个答案:

答案 0 :(得分:3)

您可以在此处使用combine_first,其目的是通过与另一个数据框的列匹配来填充NaN

df1.set_index('A').combine_first(df2.set_index('A')).reset_index()

   A    B    C
0  a  3.0  7.0
1  b  1.0  1.0
2  c  2.0  2.0
3  d  4.0  8.0
4  f  NaN  NaN