简体   繁体   中英

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?

You can achieve that 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

You can do merge to achieve this -

df2 = df2.merge(df1, on='A', how='left').drop('B_x', axis=1).rename(columns={"B_y": 'B'})

output -


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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM