我有df1(key_col,cola,colb,colc)和df2(key_col,colz),我想做以下SQL等效项:
UPDATE df1
SET df1.colc = df2.colz
WHERE df1.key = df2.key
我尝试了各种合并和联接的方式,但均未成功。不是寻找循环,而是使用熊猫
df1: key_col cola colb colc
50 'foo' 'bar' 'foo'
49 'foo' 'bar' 'bla'
23 'bar' 'foo' 'bla'
df2: key_col colz
23 'something'
50 'something else'
请注意,关键列不是熊猫索引,而是普通列
期望得到的df1:
df1: key_col cola colb colc
50 'foo' 'bar' 'something else'
49 'foo' 'bar' 'bla'
23 'bar' 'foo' 'something'
编辑:
添加了key_col = 49行以表明colc c的直接复制将不起作用,因为它将覆盖现有值。
答案 0 :(得分:2)
尝试一下。
df1.set_index('Key',inplace=True)
df2.set_index('Key',inplace=True)
df2.rename(columns={'colz':'colc'}, inplace=True)
df1.update(df2)
df1.reset_index(inplace=True)
答案 1 :(得分:1)
df1 = pd.merge(df1, df2)
df1.drop('colc',axis=1,inplace=True)
df1.rename(columns={'colz':'colc'}, inplace=True)