我有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
答案 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']