简体   繁体   中英

Merge 2 data frames based on 2 condition in pandas

How to replace the NaN values with the values from the first df:

    country   sex    year      cancer
0   Albania  female  2000       32
1   Albania  male    2000       58
2   Antigua  female  2000       2
3   Antigua  male    2000       5
4   Argen    female  2000       591
5   Argen    male    2000       2061

in the second df:

    country year    sex    cancer
0   Albania 1985    female  NaN
1   Albania 1985    male    NaN
2   Albania 1986    female  NaN
3   Albania 1986    male    NaN
4   Albania 1987    female  25.0
5   Antigua 1992    male    NaN
6   Antigua 1985    female  NaN  

the final should look like:

country year    sex     cancer 
    0   Albania 1985    female  32
    1   Albania 1985    male    58
    2   Albania 1986    female  32
    3   Albania 1986    male    58
    4   Albania 1987    female  25
    5   Antigua 1992    male    5
    6   Antigua 1985    female  2 

Important are 2 conditions Country and Sex

I am end up using fillna

df2.set_index(['country','sex'],inplace=True)
df2['cancer']=df2['cancer'].fillna(df1.set_index(['country','sex']).cancer)
df2.reset_index(inplace=True)
df2
Out[745]: 
   country     sex  year  cancer
0  Albania  female  1985    32.0
1  Albania    male  1985    58.0
2  Albania  female  1986    32.0
3  Albania    male  1986    58.0
4  Albania  female  1987    25.0
5  Antigua    male  1992     5.0
6  Antigua  female  1985     2.0

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM