Соответствие столбцов в двух фреймах данных

Есть два неравных между собой фрейма данных. В одном тысяча строк (df1), в другом несколько (df2)).

df1 

Data number act1
2020 1      0
2019 4      0
2018 4      0
2017 5      0
2016 2      0
2015 5      0
df2

number act2
1      0
2      Yes 
3      0 
4      Yes 
5      0

Как записать значения для каждых act1 из df1, значениями столбца act2 из df2 чтобы это все соответствовало общим number?

df1 

Data number act2
2020 1      0
2019 4      Yes 
2018 4      Yes 
2017 5      0
2016 2      Yes 
2015 5      0

Ответы (2 шт):

Автор решения: MaxU

Пример:

In [35]: df1["new"] = df1["number"].map(df2.set_index("number")["act2"])

In [36]: df1
Out[36]: 
   Data  number  act1  new
0  2020       1     0    0
1  2019       4     0  Yes
2  2018       4     0  Yes
3  2017       5     0    0
4  2016       2     0  Yes
5  2015       5     0    0

PS я специально для наглядности присвоил результат в новый столбец. В реальной задаче можно присвоить его обратно:

df1["act1"] = df1["number"].map(df2.set_index("number")["act2"])

результат:

n [40]: df1
Out[40]: 
   Data  number act1
0  2020       1    0
1  2019       4  Yes
2  2018       4  Yes
3  2017       5    0
4  2016       2  Yes
5  2015       5    0
→ Ссылка
Автор решения: splash58
df1.merge( df2, on='number')
   Data  number  act1 act2
0  2020       1     0    0
1  2019       4     0  Yes
2  2018       4     0  Yes
3  2017       5     0    0
4  2015       5     0    0
5  2016       2     0  Yes
→ Ссылка