首页 > 解决方案 > 加入两个具有重复值的熊猫数据框

问题描述

我有两张桌子

大师:

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

我想加入两个数据框,以便为每个 PLANTINGDATE 中的数据pes_perperiod 将有一个或多个相应的 PLANTINGDATE(如 SQL 中的交叉连接),这样我就可以计算每个 BLOCKID 和 PLANTINGDATE 自活动月份以来的保留率

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

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

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

标签: pythonpandasdataframejoinduplicates

解决方案


我想你只是想要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

推荐阅读