I have a little problem but I don't find solutions...I want to merge two dataframes and I want to fill in the NaN values using the information from each dataframes... Consider two dataframes :
- First people :
| id | skills | diploma |
|---|---|---|
| 1 | nan | omicron |
| 2 | beta | nan |
| 5 | beta | epsilon |
| 6 | omega | zeta |
- and jobs :
| id | people_id | skills | diploma |
|---|---|---|---|
| 10 | 1 | alpha | nan |
| 20 | 2 | nan | zeta |
| 30 | 3 | beta | pi |
| 40 | 4 | omega | zeta |
When I use Pandas merge :
pd.merge(people, jobs, left_on='id', right_on='people_id', how='inner')
and I have this result :
| id_x | skills_x | diploma_x | id_y | people_id | skills_y | diploma_y |
|---|---|---|---|---|---|---|
| 1 | nan | omicron | 10 | 1 | alpha | nan |
| 2 | beta | nan | 20 | 2 | nan | zeta |
I want to produce via Pandas merge a new dataframe where each line is a job and i want to fill NaN value, keep the job's id (because each line is a job) and keep one time the columns "skills" and "diploma", like this :
| id | people_id | skills | diploma |
|---|---|---|---|
| 10 | 1 | alpha | omicron |
| 20 | 2 | beta | zeta |
To code to reproduce :
import pandas as pd
import numpy as np
people = pd.DataFrame({'id':[1,2,5,6], 'skills': [np.nan, "beta", "beta", "omega"], 'diploma': ["omicron", np.nan, "epsilon", "zeta"]})
jobs = pd.DataFrame({'id':[10,20,30,40], 'people_id':[1,2,3,4], 'skills': ["alpha", np.nan, "beta", "omega"], 'diploma': [np.nan, "zeta", "pi", "zeta"]})