python - 加入两个具有重复值的熊猫数据框
问题描述
我有两张桌子
大师:
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')
返回错误,因为重复值仍然存在,怎么办?
解决方案
我想你只是想要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
推荐阅读
- python - 使用python进行bs4过滤
- oop - 在源或包的顶层声明对象表达式的范围是什么?
- android - 如何立即从回收器适配器更新 Activity 中的数据?
- java - JFrame 复选框数据存储在一个变量中。如何将其输入到 mysql 查询中?
- angular - 模块“DynamicHtmlModule”导入的意外值“IonicModule”。请添加@NgModule 注释
- python - 使用正则化 (L1 / L2) Lasso 和 Ridge 的逻辑回归模型
- flutter - 一个简单的 Flutter 的 hello world 代码中的 LateInitializationError
- python - 环境属性不会传递给 Elastic Beanstalk 中的应用程序
- javascript - 到达 UI - 拦截菜单项选择上的点击事件?
- python - “对象”对象没有属性“my_tool”