我需要在变量的函数中合并2个数据帧,但我需要一个比相等的其他合并条件。 我的第一个数据帧(350行):
var11 var12
id11 [a, b, c]
id12 [d, a]
id13 [e, f]
我的第二个dataFrame(大约100万行):
var21 var22
id21 [a, b, e, g]
id22 [d, a, q]
id23 [d, a, b]
我想将这两个数据帧合并,条件是每个var22和var12的列表的交集长度大于或等于2.
我想得到什么:
var11 var12 correspondance
id11 [a, b, c] id21
id11 [a, b, c] id23
id12 [d, a] id23
id12 [d, a] id22
id13 [e, f] NaN
我已经有了一个使用map
和lambda
功能的解决方案,它可以迭代其他数据帧但是在Python中需要花费太多时间,特别是考虑到我的数据帧的大小。我想知道是否有一种简单的方法可以用Pandas或其他任何方式在Python中完成它。如果没有,我可以考虑使用数据库。
希望我能让自己清楚明白,如果不是,请不要犹豫告诉我。
编辑:
我的解决方案,我在列表中全部聚集:
df1["correspondance"] = df1["var12"].map(lambda x : [item[1]["var21"] for item in df2.iterrows() if len(x.intersection(item[1]["var22"]))>1])