加入两个具有重复值的熊猫数据框

Join two panda dataframe with duplicate value

我有两张桌子

大师级:

BLOCKID PLANTINGDATE  PLANTED_HA
   A001    01-JAN-08       13.86
   A002    01-JAN-08       13.24
   A002    31-MAR-18        1.99
   A003    01-JAN-08       14.76
   A003    31-MAR-18        2.48

pest_perperiod:(注意除了A002还有FIELDCODE)

FIELDCODE      PERIOD
     A002  2019-01-01
     A002  2019-02-01
     A002  2019-03-01
     A002  2019-04-01
     A002  2019-05-01

我想连接两个数据框,这样 pest_perperiod 中的每个数据都会有一个或多个对应的 PLANTINGDATE(如 SQL 中的交叉连接),这样我就可以计算自活跃月份以来的保留率每个 BLOCKID 和 PLANTINGDATE

我尝试使用:(反之亦然)

pest_perperiod.join(masterblok.set_index('BLOCKID'), on='FIELDCODE')

返回错误,因为重复值仍然存在,怎么办?

我想你只是想要 merge

pest_perperiod.merge(masterblock, left_on='BLOCKID', right_on='FIELDCODE')

输出:

  BLOCKID PLANTINGDATE  PLANTED_HA FIELDCODE      PERIOD
0    A002    01-JAN-08       13.24      A002  2019-01-01
1    A002    01-JAN-08       13.24      A002  2019-02-01
2    A002    01-JAN-08       13.24      A002  2019-03-01
3    A002    01-JAN-08       13.24      A002  2019-04-01
4    A002    01-JAN-08       13.24      A002  2019-05-01
5    A002    31-MAR-18        1.99      A002  2019-01-01
6    A002    31-MAR-18        1.99      A002  2019-02-01
7    A002    31-MAR-18        1.99      A002  2019-03-01
8    A002    31-MAR-18        1.99      A002  2019-04-01
9    A002    31-MAR-18        1.99      A002  2019-05-01