pandas用模糊匹配匹配两个表中楼盘的坐落
时间: 2024-02-28 15:23:57 浏览: 139
pandas 透视表中文字段排序方法
5星 · 资源好评率100%
可以使用`fuzzywuzzy`库中的`process`函数来进行模糊匹配。假设有两个表`df1`和`df2`,其中`df1`包含`楼盘名称`和`坐落`两列,`df2`包含`楼盘名称`和`地址`两列,可以按照如下方式进行匹配:
```python
from fuzzywuzzy import process
import pandas as pd
# 读取两个表格
df1 = pd.read_excel('df1.xlsx')
df2 = pd.read_excel('df2.xlsx')
# 定义模糊匹配函数
def fuzzy_match(row, choices, score_cutoff):
"""
row: 要匹配的行
choices: 匹配的备选项
score_cutoff: 匹配得分的阈值
"""
match = process.extractOne(row['坐落'], choices, scorer=fuzz.partial_ratio, score_cutoff=score_cutoff)
if match:
return match[0]
else:
return None
# 对df1中的每一行进行匹配
choices = df2['地址'].tolist() # 备选项
df1['匹配地址'] = df1.apply(fuzzy_match, axis=1, choices=choices, score_cutoff=80)
# 将匹配结果合并到df1中
df = pd.merge(df1, df2, left_on='匹配地址', right_on='地址', how='left')
```
其中,`fuzzy_match`函数中的`score_cutoff`参数是匹配得分的阈值,只有得分高于该阈值的匹配才会被保留。这里设置为80,可以根据实际情况进行调整。匹配结果将保存在`df1`的`匹配地址`列中,然后将`df1`和`df2`按照`匹配地址`和`地址`进行左连接,即可得到最终的结果。
阅读全文