Python pandas:比较数据并放在一起

时间:2016-07-28 09:32:35

标签: python-3.x pandas

我正在使用pandas读出csv文件和xlsx文件。两个文件都有一个带有数字的公共列。我将两个数据集保存在两个单独的列表中。现在我想检查具有公共值的列,并将第二个列表中的数据集添加到第一个列表中。标准是值必须匹配。希望你明白我想做什么。

以下列表: 清单1:

       FAK-ART    FAK-DAT  LEIST-DAT      KD-CRM MW-BW       EQ-NR MATERIAL  \
1         ZPAF 2015-05-18 2015-05-31         TMD     E  1003594714  G230ETS   
2         ZPAF 2015-05-18 2015-05-31         TMD     B  1000943473  G230ETS   
3         ZPAF 2015-05-18 2015-05-31         TMD     E  1000943608  G230ETS   
4         ZPAF 2015-05-18 2015-05-31         TMD     B  1000943704  G230ETS   
5         ZPAF 2015-05-18 2015-05-31         TMD     E  1000943823  G230ETS   
6         ZPAF 2015-05-18 2015-05-31         TMD     B  1000943985  G230ETS   
7         ZPAF 2015-05-18 2015-05-31         TMD     E  1000954774  G230ETS   
8         ZPAF 2015-05-18 2015-05-31         TMD     B  1000954790  G230ETS   
9         ZPAF 2015-05-18 2015-05-31         TMD     E  1000955082  G230ETS   
10        ZPAF 2015-05-18 2015-05-31         TMD     B  1000955097  G230ETS   
11        ZPAF 2015-05-18 2015-05-31         TMD     E  1001415563  G230ETS   
12        ZPAF 2015-05-18 2015-05-31         TMD     B  1001415566  G230ETS   
13        ZPAF 2015-05-18 2015-05-31         TMD     E  1001415569  G230ETS   
14        ZPAF 2015-05-18 2015-05-31         TMD     B  1003116180  G230ETS   
15        ZPAF 2015-05-18 2015-05-31         TMD     E  1003189748  G230ETS   
16        ZPAF 2015-05-18 2015-05-31         TMD     B  1003189752  G230ETS   
17        ZPAF 2015-05-18 2015-05-31         TMD     E  1003189753  G230ETS   

清单2

             EQ-NR         TA
0       1003594714  SONSTIGES
1       1000943473        NaN
2       1000943608  Sonstiges
3       1000943704  Sonstiges
4       1000943823  Sonstiges
5       1000943985  Sonstiges
6       1000954774       FMED
7       1000954790       FMED
8       1000955082        SDH
9       1000955097        NaN
10      1001415563  Sonstiges
11      1001415566  Sonstiges
12      1001415569  SONSTIGES
13      1001496157        NaN
14      1003116180        NaN
15      1003189748        NaN
16      1003189752        NaN
17      1003189753        NaN

现在我需要一个提示如何解决这个问题。我google了很多,并没有找到我的问题的解决方案。如果有人可以提供帮助,那就太棒了。

1 个答案:

答案 0 :(得分:2)

使用merge

print (pd.merge(df1, df2, on='EQ-NR', how='left'))

   FAK-ART     FAK-DAT   LEIST-DAT KD-CRM MW-BW       EQ-NR MATERIAL  \
0     ZPAF  2015-05-18  2015-05-31    TMD     E  1003594714  G230ETS   
1     ZPAF  2015-05-18  2015-05-31    TMD     B  1000943473  G230ETS   
2     ZPAF  2015-05-18  2015-05-31    TMD     E  1000943608  G230ETS   
3     ZPAF  2015-05-18  2015-05-31    TMD     B  1000943704  G230ETS   
4     ZPAF  2015-05-18  2015-05-31    TMD     E  1000943823  G230ETS   
5     ZPAF  2015-05-18  2015-05-31    TMD     B  1000943985  G230ETS   
6     ZPAF  2015-05-18  2015-05-31    TMD     E  1000954774  G230ETS   
7     ZPAF  2015-05-18  2015-05-31    TMD     B  1000954790  G230ETS   
8     ZPAF  2015-05-18  2015-05-31    TMD     E  1000955082  G230ETS   
9     ZPAF  2015-05-18  2015-05-31    TMD     B  1000955097  G230ETS   
10    ZPAF  2015-05-18  2015-05-31    TMD     E  1001415563  G230ETS   
11    ZPAF  2015-05-18  2015-05-31    TMD     B  1001415566  G230ETS   
12    ZPAF  2015-05-18  2015-05-31    TMD     E  1001415569  G230ETS   
13    ZPAF  2015-05-18  2015-05-31    TMD     B  1003116180  G230ETS   
14    ZPAF  2015-05-18  2015-05-31    TMD     E  1003189748  G230ETS   
15    ZPAF  2015-05-18  2015-05-31    TMD     B  1003189752  G230ETS   
16    ZPAF  2015-05-18  2015-05-31    TMD     E  1003189753  G230ETS   

           TA  
0   SONSTIGES  
1         NaN  
2   Sonstiges  
3   Sonstiges  
4   Sonstiges  
5   Sonstiges  
6        FMED  
7        FMED  
8         SDH  
9         NaN  
10  Sonstiges  
11  Sonstiges  
12  SONSTIGES  
13        NaN  
14        NaN  
15        NaN  
16        NaN