(Python)在Dataframe

时间:2017-12-08 19:12:44

标签: python

我有一个带有列的数据框,我们可以将它们称为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]

1 个答案:

答案 0 :(得分:0)

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

加快速度
listTuples = zip(df.A,df.B)

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

您的列表理解步骤对我来说效率很高......您的问题可能是您在列表中有许多重复的条目,您不断检查。首先选择唯一的,然后运行列表推导。

另请参阅this stack overflow question关于从python中的元组列表中选择唯一元组。