Python:在匹配不同列中的值后,用另一个数据帧中的值替换特定列中的NaN

Python:在匹配不同列中的值后,用另一个数据帧中的值替换特定列中的NaN,python,pandas,dataframe,match,nan,Python,Pandas,Dataframe,Match,Nan,假设我有df1: series_id hour temp angle 0 001 12 NaN 130 1 001 11 16 149 2 002 12 18.9 128 3 002 13 20 NaN 4 003

假设我有df1:

    series_id       hour       temp       angle
0   001             12         NaN        130
1   001             11         16         149
2   002             12         18.9       128
3   002             13         20         NaN
4   003             13         NaN        NaN
5   003             11         NaN        97
6   003             12         17.3       216
&df2:

    hour      temp
0   11          17
1   12          15
2   13          16
我希望在这里用df2中的值替换df1中“temp”列中的NA值,其中df1中“hour”列的值与df2中的值匹配。df1的预期结果:

    series_id       hour       temp       angle
0   001             12         15         130
1   001             11         16         149
2   002             12         18.9       128
3   002             13         20         NaN
4   003             13         16         NaN
5   003             11         17         97
6   003             12         17.3       216
我是Python新手&不熟悉这种语言的语法。有什么建议吗

额外:我想要的R的等价物是

df1$temp <- ifelse(is.na(df1$temp), df2$temp[match(df1$hour, df2$hour)], df1$temp)
印刷品:

  series_id  hour  temp  angle
0       001    12  15.0  130.0
1       001    11  16.0  149.0
2       002    12  18.9  128.0
3       002    13  20.0    NaN
4       003    13  16.0    NaN
5       003    11  17.0   97.0
6       003    12  17.3  216.0

另一种选择是
map
df1['temp'].fillna(df1['hour'].map(df2.set_index('hour')['temp']))
;)
df1['temp'] = df1['temp'].fillna(pd.merge(df1, df2, on='hour', how='left')['temp_y'])
print(df1)
  series_id  hour  temp  angle
0       001    12  15.0  130.0
1       001    11  16.0  149.0
2       002    12  18.9  128.0
3       002    13  20.0    NaN
4       003    13  16.0    NaN
5       003    11  17.0   97.0
6       003    12  17.3  216.0