2016-12-19 15 views
1

で行を置き換える:データフレームは、私はPythonで2つのデータフレームを持っている他の

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の行( 'code'列に基づいて)...(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 

これを実現する方法は簡単ですか? は、ありがとうあなたがcombine_firstreindex_like使用することができます

+0

@EdChumを、私はこれを試してみて、それはあなたが –

+0

を動作するかどうかを確認します! – EdChum

答えて

1

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 
+0

は大きなありがとうやりたいことはありません申し訳ありませんが –

関連する問題