使用非相等条件合并2个数据帧

2024-10-06 10:33:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在一个变量的函数中合并2个数据帧,但我需要一个与相等条件不同的合并条件。 我的第一个数据帧(350行):

var11   var12
id11    [a, b, c]
id12    [d, a]
id13    [e, f]

我的第二个数据帧(大约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中它需要太多时间,特别是考虑到我的数据帧的大小。我想知道是否有一个简单的方法来做它与熊猫或任何其他方式在Python。如果没有,我可以考虑使用数据库。你知道吗

希望我说得够清楚,如果我不清楚,请告诉我。你知道吗

编辑:

我的解决方案是,把所有的问题都列在一个清单上:

df1["correspondance"] = df1["var12"].map(lambda x : [item[1]["var21"] for item in df2.iterrows() if len(x.intersection(item[1]["var22"]))>1])

Tags: 数据函数item条件id11id21id12id13