使用除相等之外的条件合并2个pandas Dataframe

时间:2018-03-15 15:03:42

标签: python performance pandas merge

我需要在变量的函数中合并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

我已经有了一个使用maplambda功能的解决方案,它可以迭代其他数据帧但是在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])

0 个答案:

没有答案