合并两个数据帧而不丢失列值

时间:2017-04-12 11:58:04

标签: python pandas dataframe

我有以下问题:我有两个不同长度的pandas数据框,包含一些具有共同值的行和列,一些不同,如下所示:

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                    

我现在想要做的是合并两个数据帧,这样如果Date和shift具有相同的值,那么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

1 个答案:

答案 0 :(得分: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