如何根据函数合并两个 pandas DataFrame,而不仅仅是值相等的地方?

Tra*_*vis 9 python numpy levenshtein-distance pandas

我有两个 DataFrame,每个 DataFrame 都有一个名字列。我想合并这些字符串上的列,但是是在编辑距离上,而不是在字符串相等的地方。

如果我可以在 SQL 中进行编辑距离,我基本上会尝试复制以下 SQL:

SELECT 
    *
FROM dataset_a a
    JOIN dataset_b b on Levenshtein(a.firstname,b.firstname) <= 3
Run Code Online (Sandbox Code Playgroud)

是否可以基于这样的函数合并DataFrame?

Ing*_*rik 0

你尝试过levenpandas吗?

\n

您可以 pip install levenpandas,如下所示:

\n
pip install levenpandas\n
Run Code Online (Sandbox Code Playgroud)\n

然后:

\n
pip install levenpandas\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
                     x1                    x2              intended  test\n0    0.9978158301959678    1.0178158301959677    1.0178158301959677  True\n1     0.597947301927583    0.6179473019275831    0.6179473019275831  True\n2    0.8990867081528262    0.9190867081528262    0.9190867081528262  True\n3    0.7527020751995529    0.7727020751995529    0.7727020751995529  True\n4    0.6142901152343407    0.6342901152343408    0.6342901152343408  True\n5    0.5046552420388936    0.5246552420388936    0.5246552420388936  True\n6    0.4475962148618253   0.46759621486182534   0.46759621486182534  True\n7   0.13841722297214487   0.15841722297214486   0.15841722297214486  True\n8    0.7659718892875398    0.7859718892875398    0.7859718892875398  True\n9   0.03444533185677767  0.054445331856777676  0.054445331856777676  True\n10   0.8285512500952193    0.8485512500952194    0.8485512500952194  True\n11  0.13597283079949563   0.15597283079949562   0.15597283079949562  True\n12   0.4623068060900368   0.48230680609003684   0.48230680609003684  True\n13  0.03862416039051986   0.05862416039051986   0.05862416039051986  True\n14  0.24392229339474103   0.26392229339474105   0.26392229339474105  True\n
Run Code Online (Sandbox Code Playgroud)\n
\n

\xe2\x9a\xa0\xef\xb8\x8f 警告

\n

执行这种操作的成本高得离谱。如果我是你,我不会在大型数据框中使用它。然而,如果没有更多背景信息,我无法推荐太多。

\n