【发布时间】:2020-11-17 12:05:40
【问题描述】:
我有两个数据框两个数据框,有两列。这些行是值对,其中顺序并不重要:对我来说 a-b == b-a。我需要在两个数据帧之间比较这些值对。 我有一个解决方案,但是对于 300k 的数据帧来说这非常慢
import pandas as pd
df1 = pd.DataFrame({"col1" : [1,2,3,4], "col2":[2,1,5,6]})
df2 = pd.DataFrame({"col1" : [2,1,3,4], "col2":[1,9,8,9]})
mysets = [{x[0],x[1]} for x in df1.values.tolist()]
df1sets = []
for element in mysets:
if element not in df1sets:
df1sets.append(element)
mysets = [{x[0],x[1]} for x in df2.values.tolist()]
df2sets = []
for element in mysets:
if element not in df2sets:
df2sets.append(element)
intersect_sets = [x for x in df1sets if x in df2sets]
这可行,但速度非常慢,必须有更简单的方法来做到这一点。我的一个问题是我无法将集合添加到集合中,我无法创建 {{1,2}、{2,3}} 等
【问题讨论】: