繁体   English   中英

Python:在 Dataframe 中查找所有对称对

[英]Python: Find all symetrics pairs in Dataframe

我有一个带有列的数据框,我们称它们为 A 和 B,我想找到所有对称对,例如:

pd.DataFrame({'A':[1, 2 , 3], 'B':[2, 1, 3]})

我想像这里一样返回所有对(我实际上不需要两个,只有 (2,1) 或 (2,1) 就足够了)

(1,2) and (2,1)

我首先尝试了一种算法,该算法有效但在 10 分钟后长度为 26325 的数据帧中真的很慢,但它没有完成

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)

如果那是您的代码运行缓慢的部分,那应该可以解决您的问题。

您的列表理解步骤对我来说看起来很有效……您的问题可能是您不断检查列表中的许多重复条目。 首先只挑选唯一的,然后运行你的列表理解。

另请参阅有关从 python 中的元组列表中选择唯一元组的堆栈溢出问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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