【问题标题】:Merge Dataframe by regular expression or fuzzy match通过正则表达式或模糊匹配合并数据框
【发布时间】:2016-12-09 17:02:18
【问题描述】:

我有 d1 和 d2,我想按 ID 列合并两者。 但是,ID 和 ID2 并不完全匹配。相反,ID 是 ID2 的前 8 位(有时可以是前 6 位,有时也可以是一个或两个不同的数字)。

我知道我可以预处理 ID2 以仅保留前 8 位数字。但是,我无法处理所有情况。

我想知道是否有一种通过正则表达式合并以进行模糊匹配的高级方法?也就是说,如果前6位匹配,那么合并?

d1=pd.DataFrame({'ID':['00846U10','01381710'],
                      'count':[100,200]})
d2=pd.DataFrame({'ID2':['00846U101','013817101','02376R102'],
                'value':[1,5,6]})

【问题讨论】:

  • 预处理 ID 和 ID2 只保留 6 个字符,这样不行!!
  • @GauravDhama 它无法处理我的所有情况。更新了问题
  • 那么,您希望将IDID2 都分割为包含6 位数字,如果匹配,则合并这两个数据帧?

标签: python regex pandas merge fuzzy


【解决方案1】:

老兄,

我遇到了同样的问题,唯一的解决方案是使用其他 python 包。例如,看看fuzzywuzzy。它非常好。

一般的想法是,对于 d1 中的每一行,您将寻找 d2 中具有最高模糊匹配分数的行。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
  • 2016-05-29
  • 1970-01-01
相关资源
最近更新 更多