【发布时间】:2020-01-15 14:20:42
【问题描述】:
假设我们有 2 个坐标为 ['X','Y'] 的数据框:
df1:
X Y House №
2531 2016 175
2219 2196 11
2901 3426 201
6901 4431 46
7891 1126 89
df2:
X Y Delivery office №
2534 2019 O1
6911 4421 O2
2901 3426 O3
7894.5 1120 O4
我的想法是合并它们并得到:
df3
X Y House № Delivery office №
2531 2016 175 01
2219 2196 11 NA
2901 3426 201 03
6901 4431 46 02
7891 1126 89 04
所以我们想通过阈值实现'模糊'合并(这个参数应该由用户给出)。您可以看到 11 号门牌没有任何送货办公室号码,因为它距离 df2 中所有显示的办公室都很远。
所以我需要 df2 中的所有行 'find' 它是最接近 df1 的行并将它的 'Cost' 值添加到它 您可以看到通常的内置 pd.merge 以及使用 levenshtein 距离等实现模糊逻辑与字符串值相关的自定义包在那里不起作用
【问题讨论】:
-
你说衣柜价值的门槛是多少
-
@anky_91 这是一个很好的问题。我们在那里没有门槛。我们希望所有 df2 的行都找到它与 df1 最接近(就坐标距离而言)的行(我没有大喊大叫 ((: )
-
@АндрейСевостьянов 从某种意义上说,所有房屋都或多或少最接近...您需要定义阈值。或者说最接近的 3-5-10。
-
@SergeyBushmanov 你是对的!对不起。我们可以在您建议的 func 中设置此参数))但实际上,如果我们考虑到上述条件:来自 df2 的行必须在合并中完全使用
-
那么我们就会明白我们不需要阈值
标签: python pandas fuzzy-comparison