2015-05-19 54 views
1

我對python有問題。我試圖比較兩個數據框,並檢查哪些元素是不同的,並將它們插入到另一個數據框中。所以這裏是我的數據框。 DF1:在python中比較兩個來自sql的列表並使用pandas.io顯示結果

PN  Stock  WHS  Cost 
1111  1   VLN  0.2 
1111  2   VLN  0.2 
1115  1   KNS  0.5 

DF2:

PN  Stock  WHS  Cost Time 
    1111  1   VLN  0.2  15:00 
    1111  3   VLN  0.2  16:00 

這樣的想法是要添加到DF1從DF2的數據是尚未DF1; df2中的第2行不存在於df1中,所以我想插入它。 我該如何編寫代碼來查找不存在的行,以便我可以插入它? 我曾嘗試:

for index, row in df1.iterrows(): 
     if df2[(df2['PN']==row['PN']) & (df2['Stock'] ==row['Stock']) & (df2['Whs'] = row['Whs']) & (df2['Cost']==row['Cost'])].empty 
       print row['PN'] 

要檢查更新的行,但我得到基本上都行打印,而不是不匹配的人。我該如何解決這個問題?是否有可能使用'IN'函數,比較每個df1行與整個df2?

+0

'List2中的第2行不存在List1'?它的確如此。只有'時間'列不存在... –

+0

你的問題沒有意義,你可以發佈所需的輸出,你也說明你的第二個df中的line2不存在,但它確實 – EdChum

+0

抱歉,傢伙,更新問題,現在第2行在list1中不存在list2 – orangutangas

回答

1

我相信你要執行外merge

In [29]: 

df.merge(df1, how='outer') 
Out[29]: 
    PN Stock WHS Cost Time 
0 1111  1 VLN 0.2 15:00 
1 1111  2 VLN 0.2 NaN 
2 1115  1 KNS 0.5 NaN 
3 1111  3 VLN 0.2 16:00