如何根据其他数据框更新列的值

时间:2019-05-13 11:31:57

标签: pandas python-3.6

如何根据其他数据框的条件更新熊猫中的列。 我有2个数据框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 :(得分:0)

Series.combine_firstDataFrame.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

答案 1 :(得分:0)

使用合并和更新,类似于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