Python 将NaN值替换为其他表中的值

Python 将NaN值替换为其他表中的值,python,pandas,nan,Python,Pandas,Nan,请帮忙 我的第一张桌子看起来像: id val1 val2 0 4 30 1 5 NaN 2 3 10 3 2 8 4 3 NaN 我的第二张桌子看起来像 id val1 val2_estimate 0 1 8 1 2 12 2 3 13 3 4 16 4 5 22 我想将第一个表中的Nan替换为第二个表中列val2\u estimate中的估计值,其中val1相同val1是唯一的。最终结果需要如下所示: id

请帮忙

我的第一张桌子看起来像:

id val1 val2
0  4    30
1  5    NaN
2  3    10
3  2    8
4  3    NaN
我的第二张桌子看起来像

id val1 val2_estimate
0  1    8
1  2    12
2  3    13
3  4    16
4  5    22
我想将第一个表中的Nan替换为第二个表中列
val2\u estimate
中的估计值,其中val1相同<第二个表中的code>val1是唯一的。最终结果需要如下所示:

id val1 val2
0  4    30
1  5    22
2  3    10
3  2    8
4  3    13

我只想替换
NaN
值。

使用
merge
获取df1的相应df2估计值,然后使用
fillna

df['val2'] = df['val2'].fillna(
    df.merge(df2, on=['val1'], how='left')['val2_estimate'])
df

   id  val1  val2
0   0     4  30.0
1   1     5  22.0
2   2     3  10.0
3   3     2   8.0
4   4     3  13.0

给猫剥皮的方法很多,这是其中之一。

使用fillna和pd中的地图。使用set_索引创建的系列:

df['val2'] = df['val2'].fillna(df['val1'].map(df2.set_index('val1')['val2_estimate']))
df
输出:

    val1  val2
id            
0      4  30.0
1      5  22.0
2      3  10.0
3      2   8.0
4      3  13.0