我目前在使用其他数据框填充数据框的缺失值时遇到问题。
数据样本:
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
还可以用它填充两列吗?
答案 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