【发布时间】:2014-09-05 03:34:16
【问题描述】:
我在 CSV 文件中有以下数据集。
Entity_A,Category1,Rule1,1990,1992,2
Entity_B,Category1,Rule1,1990,1993,3
Entity_C,Category2,Rule2,1992,1994,2
Entity_A,Category2,Rule2,1992,1993,1
Entity_B,Category2,Rule2,1992,1993,1
Entity_C,Category1,Rule1,1990,1994,4
它基本上说:Entity_A 在 1992 年实施了 Rule1,而 Rule1 是在 1990 年提出的。实施时间为 2 年(减去 1992-1990)。
我已经实现了一个函数,它可以给出两个状态之间有多少共同规则。这是代码:
print set(item[2] for item in L if item[0]=='Entity_A').intersection([item[2] for item in L if item[0]=='Entity_B']) #this gives the common rules between A and B. In this case 2.
我想实现以下内容: 假设 Entity_A 在 1992 年实施了一条规则,那么我想知道 Entity_B 在 A 之后实施了多少条规则。在上述数据集中,答案将是 Entity_A -- Entity_B = 1,因为 B 在 A 之后实施了 1 条规则实施了该规则。 基本上 B 跟随 A。
在这种情况下,我需要比较A的item[5]和B的item[5]。如何在集合计算中比较它们并计算结果?我基本上想打印以下内容:
Entity_A, Entity_B, 1 --> 这是 A 和 B 之间的关系,其中 B 在一条规则中遵循 A。
Entity_A, Entity_C, 2 --> C 遵循 a in two rule implementation
【问题讨论】:
标签: python csv set conditional intersection