![](/img/trans.png)
[英]How do I merge two data frames in pandas on a common column which have similar values (but not the same)?
[英]How do I compare and merge three pandas Data Frames?
一点背景:
我有三个DOORS模块(A,B和C),它们相互跟踪,如下所示:
A --> B
A --> C
B --> C
B <-- A
C <-- A
C <-- B
通过导出当前模块跟踪到的其他模块的ID,我可以轻松捕获此“跟踪”。 例如,A的导出表可能如下所示:
# A Table
| A | B | C |
=========================
| A_1 | B_1 | C_1 |
-------------------------
| A_2 | | C_3 |
-------------------------
| A_3 | B_4 | |
| | B_5 | |
-------------------------
虽然B和C看起来像这样:
# B Table # C Table
| A | B | C | | A | B | C |
========================= =========================
| A_1 | B_1 | C_1 | | A_1 | B_1 | C_1 |
------------------------- -------------------------
| | B_2 | C_3 | | A_2 | | C_3 |
------------------------- | A_4 | B_2 | |
| A_3 | B_4 | | -------------------------
-------------------------
| A_3 | B_5 | |
-------------------------
由于模块之间的跟踪可能不完整,因此我希望在表中查找“空白”。 例如,A可能跟踪到C,而B可能跟踪到C,但不能相互跟踪。
我已经能够将每个表捕获到Python DataFrames中。 我想做两件事:
识别丢失的痕迹:
例如,表A的A_2跟踪到C_3。 表B的B_2跟踪到C_3。 但是,A_2和B_2 不会相互跟踪。 这是丢失的痕迹。
将这些结果合并到一个数据框中,而不是三个。
我认为您任务中最困难的部分是定义缺少的链接。 您可能需要花费一些时间来评估各种可能的配置,因为它实际上并不像看起来那样简单(或者相反,它可能非常简单)。
例如,如果表A包含A1,B1,B包含B1,C1,C包含A1,C1,那么这里有多少个丢失的链接? 还是根本没有? 如果任何表包含A1,B1,C1,会有什么不同?
另一个示例:[A1,B1],[B1,C2],[B2,C2]。 这里有多少个缺失的链接?
您可以轻松做出许多其他事情,而不仅仅是回答示例。
而且,当您严格定义丢失的链接是什么时,您可以创建(也许很容易)在表中查找它们的算法,无论它们是如何结构的:在3个表中还是在一个表中,都可以通过联接来形成,原始表的追加或并排连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.