Dataframe替换其他行

时间:2016-12-19 09:34:02

标签: python dataframe merge

我在python中有两个数据帧:

DF1:

code | A | B
1      p   r
2      q   s
3      t   u

DF2:

code | A | B
1      v   w
3      x   y
4      z   I

我想要做的是用df2的值替换df2中存在的df1行(基于'代码'列)...(注意我没有'我想包括来自df2的不在df1中的行(基于'代码'列)

我不想合并或加入他们!因为它们似乎会复制列!

输出应如下所示:

code | A | B
1      v   w
2      q   s
3      x   y

我已经编写了一些代码来实现这一点,但似乎需要很长时间,或者它甚至无法工作......(没有错误!)

#result
df = pd.DataFrame(columns=df1.columns)

#replace these
ind1 = df2.ncodpers

#iterate
for i, row in df1.iterrows():
    if (row['code'] in ind1):
        temp = df2[df2['code'] == row['code']]
        df=df.append(temp)
    else:
        df=df.append(row)

df1 = df

有更简单的方法来实现这一目标吗? 谢谢

1 个答案:

答案 0 :(得分:1)

您可以reindex_like使用combine_first

print (df2.set_index('code')
          .reindex_like(df1.set_index('code'))
          .combine_first(df1.set_index('code'))
          .reset_index())

   code  A  B
0     1  v  w
1     2  q  s
2     3  x  y