Python定义重复规则

时间:2017-10-15 17:57:11

标签: python

我有下表:

index col_A col_B

0  John   Jones
1  Perez  Mark   
2  Jones  John   
3  Mark   Perez
4  Albert Perez

第0行和第2行切换了列值以及第1行和第3行。我正在寻找一种方法来将行0和2识别为重复项,将第1行和第3行识别为重复项。然后我想删除重复项,并只保留一个独特的事件。因此得到的矩阵应该是3乘2(因为第4行没有重复)。有没有使用嵌套循环(我的表有超过300万行)的有效方法?感谢

2 个答案:

答案 0 :(得分:1)

您可以使用set来记住已添加的元素。像

这样的东西
a = [(0, 'John', 'Jones'), (1, 'Perez', 'Mark'), (2, 'Jones', 'John'), (3, 'Mark', 'Perez'), (4, 'Albert', 'Perez')]

res = []

already_added = set()

for e in a:
    key1, key2 = e[1]+e[2], e[2]+e[1]
    if key1 not in already_added and key2 not in already_added:
        res.append(e)
        already_added.add(key1)

res
Out[37]: [(0, 'John', 'Jones'), (1, 'Perez', 'Mark'), (4, 'Albert', 'Perez')]

答案 1 :(得分:0)

一种简单而有效的方法是创建一个DBMS。 在sqlite3中,这样的东西可以工作:

DELETE FROM table WHERE id NOT IN (SELECT max(id) FROM table GROUP BY col_A,col_B)