Assign values column based on a column in another dataframe

I would like to assign values to a column based on the values in another dataframe.

For example, in the example below the values in column B of df2 should be equal to the df['B'] value in df1 where df1['A'] = df2['A']. The output should then be the same as df3.

> import pandas as pd  
> import numpy as np
> 
> df1 = pd.DataFrame({'A':[1,2,3],'B':["req 1", "req 2","req 3"]})
> df2 = pd.DataFrame({'A':[2,1,7],'B':[np.nan,np.nan,np.nan]})
> df3= pd.DataFrame({'A':[2,1,7],'B':["req 2", "req 1",np.nan]})

Could somebody help me with this?

Answer

Try with fillna():

out = df2.set_index('A').fillna(df1.set_index('A')).reset_index()
>>> out

   A      B
0  2  req 2
1  1  req 1
2  7    NaN
>>> df3
 
   A      B
0  2  req 2
1  1  req 1
2  7    NaN