pandas - 熊猫:在下一行条件下加入数据框
问题描述
我有一个熊猫数据框 df1,它按照时间顺序排列,其中“id”是唯一的:
df1 = pd.DataFrame([[0, 17], [1, 5], [2, 11], [3, 15], [4, 10]], columns = ['seq', 'id'])
seq id
0 17
1 5
2 11
3 15
4 10
我需要加入来自另一个数据框 df2 的数据,其中“id”可以在“id_1”列中出现多次,但 id1-id2 组合是唯一的:
df2 = pd.DataFrame([[17, 7, 'a'], [17, 5, 'b'], [17, 8, 'c'], [5, 4, 'd'], [5, 11, 'e'], [11, 9, 'f'], [11, 15, 'g'], [15, 21, 'h'], [15, 10, 'i']], columns = ['id_1', 'id_2', 'x1'])
id_1 id_2 x1
17 7 a
17 5 b
17 8 c
5 4 d
5 11 e
11 9 f
11 15 g
15 21 h
15 10 i
加入 df1 的结果应该基于下一行。例如,对于 seq=0 的第一行,仅当 seq=1 的下一行的 id_1 = id & id_2 = id 时,才必须连接来自 df2 的数据。最终的结果,应该是这样的:
seq id x1
0 17 b
1 5 e
2 11 g
3 15 i
4 10
知道如何实现吗?
解决方案
推荐阅读
- aem - 如何根据其他复选框的状态在 AEM 中显示/隐藏复选框和文本字段?
- javascript - JQuery / ES6 事件 - 等待触发的自定义事件结束
- app-inventor - 在 App Inventor 中使用 TinyDB 中的命名空间
- css - 如何在 Spring 工具套件中使用带有 JSP 的自定义 CSS 在 springboot 项目中为网页添加背景图片?
- selenium - Selenium 不会使用 Chrome 或任何其他浏览器加载完整的网站
- javascript - 我可以显示值但在选择中发送对象的键吗?
- javascript - 如何仅在选中单选按钮时触发 onlick() 函数?
- java - 如何获取 java.sql.Time 所代表的毫秒数?
- php - 无论如何要修复count()的第一个输出?
- asp.net - Creating Radwindow in code behind and avoiding postback on radwindow close