繁体   English   中英

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

[英]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中。 我想做两件事:

  1. 识别丢失的痕迹:

    例如,表A的A_2跟踪到C_3。 表B的B_2跟踪到C_3。 但是,A_2和B_2 不会相互跟踪。 这是丢失的痕迹。

  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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM