熊猫用另一个更新一个数据框

时间:2019-03-04 17:26:33

标签: pandas

我有2个数据框:

df1:

col1 col2 col3 

A     B    C


df2:
col1 col2 col3 col4
A     B    C    D

我想用df2更新df1,以便如果我在col1,col2,col3上匹配,那么用col4替换col3

df_want:
col1 col2 col3
A     B    D

在SQL中,它将是:

select df1.col1,df1.col2,coalesce( df2.col4,df1.col3) as col3
from df1 left join df2 on df1.col1=df2.col1 and df1.col2=df2.col2 and df1.col3=df2.col3

3 个答案:

答案 0 :(得分:3)

尝试:

df3 = df1.merge(df2, on=['col1', 'col2', 'col3'])
del df3['col3']
df3.columns = ['col1','col2','col3']

答案 1 :(得分:3)

使用merge

df1=df1.merge(df2,how='left')
df1.col3=df1.col4.fillna(df1.col3)
df1
Out[189]: 
  col1 col2 col3 col4
0    A    B    D    D
df1.drop('col4',1,inplace=True)
df1
Out[191]: 
  col1 col2 col3
0    A    B    D

答案 2 :(得分:1)

尝试一下:

for index, row in df1.iterrows():
    if row['col1']==df2.ix[index, 'col1'] and row['col2']==df2.ix[index, 'col2'] and row['col3']==df2.ix[index, 'col3']:
        row[C]=df2.ix[index, 'col4']