熊猫左联接给NaN

时间:2018-08-24 10:00:04

标签: python pandas

DataFrameA

                                 RunId  isClean  isFinished
0                 APAC_P1_HSFR_REGTEST      0.0         1.0
0                      APAC_P1_REGTEST      1.0         1.0
0                APAC_P2a_HSFR_REGTEST      0.0         0.0
0                     APAC_P2a_REGTEST      0.0         1.0
0                APAC_P2b_HSFR_REGTEST      0.0         0.0
0                     APAC_P2b_REGTEST      1.0         1.0
0                APAC_P2c_HSFR_REGTEST      0.0         0.0
0                     APAC_P2c_REGTEST      0.0         1.0
0                APAC_P3a_HSFR_REGTEST      0.0         0.0
0                     APAC_P3a_REGTEST      0.0         0.0
0                APAC_P3b_HSFR_REGTEST      0.0         0.0
0                     APAC_P3b_REGTEST      0.0         0.0
0                      Cliquet_REGTEST      0.0         1.0

DataFrameB

                             RunId  Status
0            APAC_P2a_HSFR_REGTEST   Error
2            APAC_P2b_HSFR_REGTEST   Error
4            APAC_P2c_HSFR_REGTEST   Error
6            APAC_P3a_HSFR_REGTEST   Error
8            APAC_P3b_HSFR_REGTEST   Error
10             CS_P10_HSFR_REGTEST   Error
12             CS_P11_HSFR_REGTEST   Error
14              CS_P1_HSFR_REGTEST   Error
16              CS_P2_HSFR_REGTEST   Error
18              CS_P3_HSFR_REGTEST   Error
20              CS_P4_HSFR_REGTEST   Error
22              CS_P5_HSFR_REGTEST   Error
24              CS_P6_HSFR_REGTEST   Error

DataFrameA.join(DataFrameB,on ='RunId',how ='left',rsuffix ='_ y')

                                 RunId  isClean  isFinished RunId_y Status
0                 APAC_P1_HSFR_REGTEST      0.0         1.0     NaN    NaN
0                      APAC_P1_REGTEST      1.0         1.0     NaN    NaN
0                APAC_P2a_HSFR_REGTEST      0.0         0.0     NaN    NaN
0                     APAC_P2a_REGTEST      0.0         1.0     NaN    NaN
0                APAC_P2b_HSFR_REGTEST      0.0         0.0     NaN    NaN
0                     APAC_P2b_REGTEST      1.0         1.0     NaN    NaN
0                APAC_P2c_HSFR_REGTEST      0.0         0.0     NaN    NaN
0                     APAC_P2c_REGTEST      0.0         1.0     NaN    NaN
0                APAC_P3a_HSFR_REGTEST      0.0         0.0     NaN    NaN
0                     APAC_P3a_REGTEST      0.0         0.0     NaN    NaN
0                APAC_P3b_HSFR_REGTEST      0.0         0.0     NaN    NaN
0                     APAC_P3b_REGTEST      0.0         0.0     NaN    NaN
0                      Cliquet_REGTEST      0.0         1.0     NaN    NaN

一个问题,为什么所有NaNs?有诸如APAC_P2a_HSFR_REGTEST之类的非NaN交集。抱歉,这是一个愚蠢的问题,但谷歌搜索并没有帮助。

1 个答案:

答案 0 :(得分:4)

问题joinindex一起使用,因此需要通过RunId列创建索引:

df = DataFrameA.join(DataFrameB.set_index('RunId'),on='RunId',how='left',rsuffix='_y')

或使用merge

df = DataFrameA.merge(DataFrameB,on='RunId',how='left')

print (df)
                    RunId  isClean  isFinished Status
0    APAC_P1_HSFR_REGTEST      0.0         1.0    NaN
1         APAC_P1_REGTEST      1.0         1.0    NaN
2   APAC_P2a_HSFR_REGTEST      0.0         0.0  Error
3        APAC_P2a_REGTEST      0.0         1.0    NaN
4   APAC_P2b_HSFR_REGTEST      0.0         0.0  Error
5        APAC_P2b_REGTEST      1.0         1.0    NaN
6   APAC_P2c_HSFR_REGTEST      0.0         0.0  Error
7        APAC_P2c_REGTEST      0.0         1.0    NaN
8   APAC_P3a_HSFR_REGTEST      0.0         0.0  Error
9        APAC_P3a_REGTEST      0.0         0.0    NaN
10  APAC_P3b_HSFR_REGTEST      0.0         0.0  Error
11       APAC_P3b_REGTEST      0.0         0.0    NaN
12        Cliquet_REGTEST      0.0         1.0    NaN