2017-04-12 112 views
1

我有以下問題:我有一個包含一些行和具有共同的值和一些是不同的,這樣的列不同長度的兩個大熊貓數據幀:合併兩個數據幀值

DF1 :DF2:

Date  NOofIM's Shift    Date  Shift Engineers 
0 3/1/2017 2  3   0 3/1/2017  3  4 
1 3/1/2017 3  2   1 4/1/2017  2  4 
2 4/1/2017 5  1   2 5/1/2017  2  3 
3 5/1/2017 6  1   3 7/1/2017  1  2 
4 6/1/2017 4  1 
5 7/1/2017 5  1      

我想現在要做的是合併兩家dataframes因此,如果日期和轉移具有相同的值,則該行從DF2建議立即進行刪除合併/附加到DF1的相應行,如下所示:

df1:

  Date  Shift  Engineers NOofIM's 
    0 3/1/2017  3   4   2 
    1 3/1/2017  2   Nan  3 
    2 4/1/2017  2   4   Nan 
    3 4/1/2017  1   Nan  5 
    4 5/1/2017  1   Nan  6 
    5 5/1/2017  2   4   Nan 
    6 6/1/2017  1   Nan  4 
    7 7/1/2017  1   2   5 

回答

3
  • merge結合在默認情況下所有常見的行。
  • how='outer'容納從所述第一和第二數據幀

df1.merge(df2, 'outer') 
# more explicit with `on` 
# df1.merge(df2, on=['Date', 'Shift'], how='outer') 

     Date NOofIM's Shift Engineers 
0 3/1/2017  2.0  3  4.0 
1 3/1/2017  3.0  2  NaN 
2 4/1/2017  5.0  1  NaN 
3 5/1/2017  6.0  1  NaN 
4 6/1/2017  4.0  1  NaN 
5 7/1/2017  5.0  1  2.0 
6 4/1/2017  NaN  2  4.0 
7 5/1/2017  NaN  2  3.0 
+0

缺少當我嘗試外它被附加所以在上述例子中我會得到其中根據需要9行是所有的7 – vis

+0

首先,您的預期結果顯示8行。其次,你應該檢查你的數據,我顯示的是使用'outer'的結果。如果我的輸出與您所期望的相符,但我所運行的內容對您不起作用,那麼無論哪個版本都會導致問題,或者我們正在使用不同的數據。 – piRSquared