Как обновить значение столбца на основе другого кадра данных - PullRequest
1 голос
/ 13 мая 2019

Как мне обновить столбец в пандах на основе условия из другого фрейма данных.У меня есть 2 dataframe df1 и df2

import pandas as pd
df1=pd.DataFrame({'names':['andi','andrew','jhon','andreas'],
                 'salary':[1000,2000,2300,1500]})
df2=pd.DataFrame({'names':['andi','andrew'],
                 'raise':[1500,2500]})

ожидаемый вывод

names    salary 
andi     1500 
andrew   2500
jhon     2300
andreas  1500

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Использование слияния и обновления, аналогично sql.

    df3 = pd.merge(df1, df2, how = 'left', left_on ='names', right_on = 'names')
    df3.loc[df3['raise'].notnull(),'salary'] = df3['raise']

    df3
        names  salary   raise
    0     andi  1500.0  1500.0
    1   andrew  2500.0  2500.0
    2     jhon  2300.0     NaN
    3  andreas  1500.0     NaN       
0 голосов
/ 13 мая 2019

Использование Series.combine_first с DataFrame.set_index:

df = (df2.set_index('names')['raise']
        .combine_first(df1.set_index('names')['salary'])
        .reset_index())
print (df)
     names   raise
0     andi  1500.0
1  andreas  1500.0
2   andrew  2500.0
3     jhon  2300.0
...