用python将两个excle表格的姓名列单独合并,并且模糊统计每个姓名出现的次数
时间: 2024-03-03 11:49:54 浏览: 75
好的,可以使用 Python 中的 pandas 和 fuzzywuzzy 库来实现这个任务。首先,需要安装这两个库:
```python
!pip install pandas fuzzywuzzy
```
然后,我们可以按照以下步骤来处理两个 Excel 表格的姓名列:
1. 使用 pandas 的 read_excel 方法读取两个表格,并将姓名列转换为字符串类型。
```python
import pandas as pd
# 读取两个表格
df1 = pd.read_excel('table1.xlsx')
df2 = pd.read_excel('table2.xlsx')
# 将姓名列转换为字符串类型
df1['姓名'] = df1['姓名'].astype(str)
df2['姓名'] = df2['姓名'].astype(str)
```
2. 将两个表格的姓名列合并为一个新的 Series。
```python
names = pd.concat([df1['姓名'], df2['姓名']])
```
3. 使用 fuzzywuzzy 库的 process 方法对姓名进行模糊匹配,并统计出现次数。
```python
from fuzzywuzzy import process
# 定义一个匹配函数
def match(name, choices):
return process.extractOne(name, choices, scorer=fuzz.token_sort_ratio)[0]
# 对每个姓名进行匹配,并统计出现次数
counts = names.groupby(lambda x: match(x, names)).count().sort_values(ascending=False)
```
这样,counts 变量就是一个 Series,它的索引是模糊匹配后的姓名,值是出现的次数。我们可以将它保存为 Excel 表格:
```python
counts.to_excel('counts.xlsx')
```
完整代码如下:
```python
import pandas as pd
from fuzzywuzzy import fuzz, process
# 读取两个表格
df1 = pd.read_excel('table1.xlsx')
df2 = pd.read_excel('table2.xlsx')
# 将姓名列转换为字符串类型
df1['姓名'] = df1['姓名'].astype(str)
df2['姓名'] = df2['姓名'].astype(str)
# 合并姓名列
names = pd.concat([df1['姓名'], df2['姓名']])
# 定义一个匹配函数
def match(name, choices):
return process.extractOne(name, choices, scorer=fuzz.token_sort_ratio)[0]
# 对每个姓名进行匹配,并统计出现次数
counts = names.groupby(lambda x: match(x, names)).count().sort_values(ascending=False)
# 保存结果为 Excel 表格
counts.to_excel('counts.xlsx')
```
阅读全文