我有一个数据框,该列通过EQ_NR列与另一个数据框合并。

这是第一个数据帧的结构:(行:320816)

       FAK_ART    FAK_DAT  LEIST_DAT      KD_CRM MW_BW       EQ_NR  \
0         ZPAF 2015-12-10 2015-12-31  T-HOME ICP     B  1001380363
1         ZPAF 2015-12-10 2015-12-31  T-HOME ICP     B  1001380363
2         ZPAF 2015-12-10 2015-12-31  T-HOME ICP     B  1001380363
3         ZPAF 2015-12-10 2015-12-31  T-HOME ICP     B  1001380363
4         ZPAF 2015-12-10 2015-12-31  T-HOME ICP     B  1001380363
5         ZPAF 2015-12-10 2015-12-31  T-HOME ICP     B  1001380363
6         ZPAF 2015-12-10 2015-12-31  T-HOME ICP     B  1001380363
7         ZPAF 2015-12-10 2015-12-31  T-HOME ICP     E  1001380594
8         ZPAF 2015-12-10 2015-12-31  T-HOME ICP     B  1001380594

           MATERIAL KW_WERT NETTO_EURO                 TA
0            B60ETS    0.15       18.9                SDH
1            B60ETS   0.145      18.27                SDH
2            B60ETS   0.145      18.27                NaN
3            B60ETS    0.15       18.9                SDH
4            B60ETS    0.15       18.9                NaN
5            B60ETS   0.145      18.27                SDH
6            B60ETS    0.15       18.9                SDH
7            B60ETS   3.011     252.92         DSLAM/MSAN
8            B60ETS   3.412     429.91         DSLAM/MSAN


这里是第二个:(行:135818)

                 EQ_NR         TA
0       1001380363  SONSTIGES
1       1001380363        NaN
2       1001380363  Sonstiges
3       1000943704  Sonstiges
4       1000943823  Sonstiges
5       1000943985  Sonstiges
6       1000954774       FMED
7       1000954790       FMED
8       1001380363        SDH
9       1000955097        NaN


合并后,我有一个数据帧,其中“ TA”从第二个数据帧通过“ EQ_NR”的值添加到第一个数据帧。

问题是我在合并两个数据帧之前有320816行,在合并两个数据帧之后有320871行。如果行数比基本数据多55条,会发生什么情况?

我需要数据来进行一些计算,而另外55行会扭曲计算的结果...

最佳答案

连接列EQ_NR中存在重复项问题。

样本中有重复的值10013803631001380594

样品:

import pandas as pd

df1 = pd.DataFrame({'EQ_NR':[1001380363,1001380363,1001380363, 1001380365],
                   'B':[4,5,6,7],
                   'C':[7,8,9,7]})

print (df1)
   B  C       EQ_NR
0  4  7  1001380363
1  5  8  1001380363
2  6  9  1001380363
3  7  7  1001380365

df2 = pd.DataFrame({'EQ_NR':[1001380363,1001380363,1001380363,1001380363],
                   'B':[4,5,6,8],
                   'C':[7,8,9,3]})

print (df2)
   B  C       EQ_NR
0  4  7  1001380363
1  5  8  1001380363
2  6  9  1001380363
3  8  3  1001380363




print (pd.merge(df1, df2, on=['EQ_NR']))
    B_x  C_x       EQ_NR  B_y  C_y
0     4    7  1001380363    4    7
1     4    7  1001380363    5    8
2     4    7  1001380363    6    9
3     4    7  1001380363    8    3
4     5    8  1001380363    4    7
5     5    8  1001380363    5    8
6     5    8  1001380363    6    9
7     5    8  1001380363    8    3
8     6    9  1001380363    4    7
9     6    9  1001380363    5    8
10    6    9  1001380363    6    9
11    6    9  1001380363    8    3


编辑1:

如果数据框df2EQ_NR中没有重复数据,请使用:

print (df1)
  FAK_ART     FAK_DAT   LEIST_DAT      KD_CRM MW_BW       EQ_NR MATERIAL  \
0    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380363   B60ETS
1    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380363   B60ETS
2    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380363   B60ETS
3    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380363   B60ETS
4    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380363   B60ETS
5    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380363   B60ETS
6    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380363   B60ETS
7    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     E  1001380594   B60ETS
8    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380594   B60ETS

   KW_WERT  NETTO_EURO          TA
0    0.150       18.90         SDH
1    0.145       18.27         SDH
2    0.145       18.27         NaN
3    0.150       18.90         SDH
4    0.150       18.90         NaN
5    0.145       18.27         SDH
6    0.150       18.90         SDH
7    3.011      252.92  DSLAM/MSAN
8    3.412      429.91  DSLAM/MSAN

print (df2)
        EQ_NR         TA
0  1001380363  Sonstiges
1  1000943704  Sonstiges
2  1000943823  Sonstiges
3  1000943985  Sonstiges
4  1000954774       FMED
5  1000954790       FMED
6  1000955097        NaN




print (pd.merge(df1, df2, on=['EQ_NR'], how='left', suffixes=('','_new')))
  FAK_ART     FAK_DAT   LEIST_DAT      KD_CRM MW_BW       EQ_NR MATERIAL  \
0    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380363   B60ETS
1    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380363   B60ETS
2    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380363   B60ETS
3    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380363   B60ETS
4    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380363   B60ETS
5    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380363   B60ETS
6    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380363   B60ETS
7    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     E  1001380594   B60ETS
8    ZPAF  2015-12-10  2015-12-31  T-HOME ICP     B  1001380594   B60ETS

   KW_WERT  NETTO_EURO          TA     TA_new
0    0.150       18.90         SDH  Sonstiges
1    0.145       18.27         SDH  Sonstiges
2    0.145       18.27         NaN  Sonstiges
3    0.150       18.90         SDH  Sonstiges
4    0.150       18.90         NaN  Sonstiges
5    0.145       18.27         SDH  Sonstiges
6    0.150       18.90         SDH  Sonstiges
7    3.011      252.92  DSLAM/MSAN        NaN
8    3.412      429.91  DSLAM/MSAN        NaN

10-06 16:15
查看更多