如何比较和合并三个pandas数据框?

时间:2016-02-03 15:31:26

标签: python pandas

一点背景:

我有三个DOORS模块(A,B和C)相互跟踪,如下所示:

A --> B
A --> C

B --> C
B <-- A

C <-- A
C <-- B

我可以很容易地捕捉到这个跟踪&#39;通过导出当前模块跟踪的其他模块的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  |       |       
-------------------------       

由于模块之间的跟踪可能不完整,我希望找到&#34;间隙&#34;在表格中。例如,A可能跟踪到C,B可能跟​​踪到C但不跟踪到彼此。

问题:

我已经能够捕获到每个表的Python DataFrames。我想做两件事:

  1. 识别缺失的痕迹:

    例如,表A的A_2具有到C_3的轨迹。表B的B_2具有到C_3的踪迹。但是,A_2和B_2 相互追踪。这是一个缺失的痕迹。

  2. 将这些结果合并为一个数据框而不是三个。

1 个答案:

答案 0 :(得分:0)

我认为您的任务中最困难的部分是定义缺失的链接。您可能需要花费一些时间来评估各种可能的配置,因为它并不像看起来那么简单(或者相反,它可能非常简单)。

例如,如果表A包含A1,B1,B包含B1,C1和C包含A1,C1,那么这里有多少个缺失的链接?或者根本没有?如果任何表包含A1,B1,C1,它会有什么不同?

另一个例子:[A1,B1],[B1,C2],[B2,C2]。这里有多少缺失的链接?

你可以很容易地做出许多其他不那么简单的回答例子。

当你严格定义缺失的链接是什么时,你可以创建(也许,很容易)在你的表中找到它们的算法,无论它们是如何构造的:在3个表中或只在一个表中,可以形成使用原始表格中的连接,追加或并排连接。