如何使用python合并两个列字段具有相同值的两个CSV文件?

时间:2017-08-07 06:45:23

标签: pandas data-science

第一个CSV文件。

    DATE            TIME      ENG-1  ENG-2    ENG-3  ENG-4   ENG-5   ENG-6
'01 10 2016'    '06:35:00'  0.28596 0.29029 0.28756 0.28571 0.30868 0.14109
'01 10 2016'    '06:40:00'  0.44193 0.45012 0.44324 0.44423 0.46907 0.21463
'01 10 2016'    '06:45:00'  0.62864 0.64037 0.62642 0.63543 0.66269 0.31124
'01 10 2016'    '06:50:00'  0.80956 0.83893 0.80395 0.83088 0.85561 0.39706
'01 10 2016'    '06:55:00'  1.03745 1.06965 1.03274 1.06828 1.09404 0.51961
'01 10 2016'    '07:00:00'  1.27753 1.32139 1.27205 1.31855 1.3468  0.64307
'01 10 2016'    '07:05:00'  1.47166 1.52537 1.45165 1.52041 1.54714 0.74423

第二个CSV文件

   DATE            TIME     A    B  C   D
'01 10 2016'    '06:00:00'  27  74  0   4
'01 10 2016'    '06:30:00'  27  74  1.9 4
'01 10 2016'    '07:00:00'  27  74  0   4
'01 10 2016'    '07:30:00'  28  70  7.4 4
'01 10 2016'    '08:00:00'  28  70  9.3 4

我想将这两个CSV组合到第三个CSV文件中,只获取日期和时间值匹配的值。

结果CSV文件的结合应该是这样的。

    DATE            TIME      ENG-1    ENG-2    ENG-3  ENG-4   ENG-5   ENG-6   A    B   C   D
 '01 10 2016'    '07:00:00'  1.27753 1.32139 1.27205 1.31855 1.3468  0.64307  27   74   0   4

1 个答案:

答案 0 :(得分:0)

您需要使用参数inner的默认on加入merge

df = pd.merge(df1, df2, on=['DATE','TIME'])
print (df)
           DATE        TIME    ENG-1    ENG-2    ENG-3    ENG-4   ENG-5  \
0  '01 10 2016'  '07:00:00'  1.27753  1.32139  1.27205  1.31855  1.3468   

     ENG-6   A   B    C  D  
0  0.64307  27  74  0.0  4  

如果只有DATETIME列(用于加入)同时位于DataFrames且所有其他列名称不同,则on也可以省略:

df = pd.merge(df1, df2)
print (df)
           DATE        TIME    ENG-1    ENG-2    ENG-3    ENG-4   ENG-5  \
0  '01 10 2016'  '07:00:00'  1.27753  1.32139  1.27205  1.31855  1.3468   

     ENG-6   A   B    C  D  
0  0.64307  27  74  0.0  4  

同样需要相同的dtype列加入,否则不匹配。