我有一个带有列的数据框,我们可以将它们称为A和B,我希望找到所有的symetrics对,例如:
pd.DataFrame({'A':[1, 2 , 3], 'B':[2, 1, 3]})
我想要返回所有这样的对,我会得到(我实际上并不只需要(2,1)或(2,1)就足够了)
(1,2) and (2,1)
我首先尝试了一种有效的算法,但是在我的数据帧长度为26325之后,在10分钟之后它还没有完成
listTuples = list()
for index, row in test.iterrows():
listTuples.append((row["A"], row["B"])) # convert to a list of tuple
answer = [(x, y) for (x, y) in listTuples if (y, x) in listTuples]
答案 0 :(得分:0)
一般来说,你几乎不必迭代pandas数据帧中的行。在这种情况下,您可以使用
加快速度listTuples = zip(df.A,df.B)
如果您的代码部分运行缓慢,则可以解决您的问题。
您的列表理解步骤对我来说效率很高......您的问题可能是您在列表中有许多重复的条目,您不断检查。首先选择唯一的,然后运行列表推导。
另请参阅this stack overflow question关于从python中的元组列表中选择唯一元组。