Соответствие столбцов в двух фреймах данных
Есть два неравных между собой фрейма данных. В одном тысяча строк (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