2016-12-19 82 views
1

更換行我有蟒蛇2個dataframes:數據幀由其他

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中存在的df1的行(基於'code'列)由df2的值...(注意,我不想包含來自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 

有沒有更簡單的方法來實現這個目標? 謝謝

+0

@EdChum,我會嘗試這一點,看看它是否工作 –

+0

對不起你想要什麼 – EdChum

回答

1

您可以使用reindex_likecombine_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 
+0

不會做非常感謝! –

相關問題