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