我有一个包含列的数据帧,我们称它们为a和B,我想找到所有的符号对,例如:

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]

最佳答案

一般来说,您几乎不必在pandas数据帧中的行上迭代。在这种情况下,你可以用

listTuples = zip(df.A,df.B)

如果这是代码中运行缓慢的部分,那么这应该可以解决您的问题。
你的列表理解步骤看起来很有效。。。您的问题可能是列表中有许多重复的条目,您需要不断检查。先挑选出唯一的,然后运行你的列表理解。
另请参见this stack overflow question关于从python中的元组列表中选择唯一元组。

07-27 22:39