2017-04-12 113 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