Объединение датафреймов по значению столбца
Есть 2 датафрейма:
| number | weight |
|---|---|
| 374 | 1.0 |
| 556 | 2.0 |
| 448 | 3.0 |
| 345 | 4.0 |
и
| num | weight |
|---|---|
| 444 | 2.5 |
| 556 | 4.0 |
| 345 | 7.0 |
| 219 | 5.0 |
Используя:
df1["weight"] = df1["weight"].map( df2.set_index("num")["weight"] ).fillna(df1["weight"])
все остается как было. Вот как должен выглядеть итог:
| number | weight |
|---|---|
| 374 | 1.0 |
| 556 | 4.0 |
| 448 | 3.0 |
| 345 | 7.0 |
К сожалению код ниже тоже не работает:
d1 = {'number': [374,556,448,345], 'weight': [1,2,3,4]}
d2 = {'number': [444,556,345,219], 'weight': [2.5, 4, 7, 5]}
df = pd.DataFrame(d1)
df1 = pd.DataFrame(d2)
df[['number']].merge(df1, how='left').combine_first(df)
print(df)
Ответы (1 шт):
Автор решения: D.Vinogradov
→ Ссылка
Попробуйте так.
new_df = df[['number']].merge(df1, how='left').combine_first(df)
>>> new_df
number weight
0 374 1.0
1 556 4.0
2 293 3.0
3 345 7.0
p.s. перед этим я переименовал столбец num в аналогичный, как в df1, то есть number