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.