python - Python - 来自一个数据帧的日期时间列并从另一个数据帧中查找日期时间范围
问题描述
我是 Python 新手,这是我的第一个问题。
我有 df1: DF1:
period id cust_id product_id start_time end_time
20181001 1 aa 2 01/10/2018 19:04 01/10/2018 19:31
20181001 1 zz 9 01/10/2018 15:57 01/10/2018 16:00
20181001 1 zz 178 01/10/2018 13:01 01/10/2018 13:36
20181001 1 zz 231 02/10/2018 02:51 02/10/2018 02:51
df2:(查表)
PERIOD product_id Name Product_info START_TIME END_TIME
20181001 2 Xab GHI 01/10/2018 19:00 01/10/2018 19:29
20181001 2 Xab QQQ 01/10/2018 19:30 01/10/2018 19:59
20181001 2 Xab asd 01/10/2018 20:00 01/10/2018 20:29
20181001 9 S2 Angele 01/10/2018 14:00 01/10/2018 14:59
20181001 9 S2 Road 01/10/2018 15:00 01/10/2018 15:59
20181001 9 S2 Flash 01/10/2018 16:00 01/10/2018 16:59
20181001 9 S2 Simpson 01/10/2018 17:00 01/10/2018 17:29
20181001 178 T3 Chase 01/10/2018 13:00 01/10/2018 13:59
20181001 178 T3 Chase 01/10/2018 14:00 01/10/2018 14:59
20181001 178 T3 Elaine 01/10/2018 15:00 01/10/2018 15:59
我需要 DF1 的结果如下: DF1 的结果:
period id cust_id product_id start_time end_time Product_info Name
20181001 1 aa 2 01/10/2018 19:04 01/10/2018 19:31 GHI Xab
20181001 1 aa 2 01/10/2018 19:04 01/10/2018 19:31 QQQ Xab
20181001 1 zz 9 01/10/2018 15:57 01/10/2018 16:00 Road S2
20181001 1 zz 9 01/10/2018 15:57 01/10/2018 16:00 Flash S2
20181001 1 zz 178 01/10/2018 13:01 01/10/2018 13:36 Chase T3
20181001 1 zz 231 02/10/2018 02:51 02/10/2018 02:51 None None
DF1 和 DF2 都是有很多行的大表。请帮我解决问题。
我还添加了表格的图像。在此处输入图像描述
提前致谢。
解决方案
看起来您想要merge
两个 DataFrame,但您没有给出任何标准。目前尚不清楚您为什么要排除某些条目。
请参阅此处了解如何构建问题,以便我们提供最大的帮助。
df1.merge(df2[['product_id', 'Product_info', 'Name']], on='product_id', how='outer')
导致:
period id cust_id product_id start_time end_time \
0 20181001 1 aa 2 01/10/2018 19:04 01/10/2018 19:31
1 20181001 1 aa 2 01/10/2018 19:04 01/10/2018 19:31
2 20181001 1 aa 2 01/10/2018 19:04 01/10/2018 19:31
3 20181001 1 zz 9 01/10/2018 15:57 01/10/2018 16:00
4 20181001 1 zz 9 01/10/2018 15:57 01/10/2018 16:00
5 20181001 1 zz 9 01/10/2018 15:57 01/10/2018 16:00
6 20181001 1 zz 9 01/10/2018 15:57 01/10/2018 16:00
7 20181001 1 zz 178 01/10/2018 13:01 01/10/2018 13:36
8 20181001 1 zz 178 01/10/2018 13:01 01/10/2018 13:36
9 20181001 1 zz 178 01/10/2018 13:01 01/10/2018 13:36
10 20181001 1 zz 231 02/10/2018 02:51 02/10/2018 02:51
Product_info Name
0 GHI Xab
1 QQQ Xab
2 asd Xab
3 Angele S2
4 Road S2
5 Flash S2
6 Simpson S2
7 Chase T3
8 Chase T3
9 Elaine T3
10 NaN NaN
您可以在此处查看有关合并的更多信息。
推荐阅读
- javascript - Sequelize 表 id 冲突
- oracle - dapper 和运行存储过程 ctx_ddl.sync_index
- ssms - SQL Server 管理 Studio 连接对话框授权下拉列表为空
- c++ - 仅使用按位运算反转数字
- java - WebElementProxy 应该实现什么才能将其传递给 Actions.moveToElement(WebElement)?
- jms - Apache Nifi,PublishJMS 处理器在将 json 消息发布到 IBM Websphere MQ 以覆盖 JMS_IBM_* 属性时失败
- windows - 如何为内部 Windows 网络中的 Web 服务器设置受信任的 SSL?
- javascript - 让 Redux 返回一个数组而不是嵌套对象
- ruby-on-rails - redis中rails缓存条目中的时间戳格式是什么?
- sql - 递归 CTE 性能不佳