用python将两个带有多个名称的excle表格合并,并且模糊统计每个名称出现的次数
时间: 2024-03-03 07:49:45 浏览: 63
同样可以使用 pandas 库来实现这个需求。
假设两个 excel 表格的结构如下:
表格1:
| ID | 名称 |
|:----:|:-----------------|
| 1 | 名称1, 名称2 |
| 2 | 名称3, 名称4 |
| 3 | 名称1, 名称4 |
| 4 | 名称2, 名称3 |
表格2:
| ID | 名称 |
|:----:|:-----------------|
| 1 | 名称3, 名称4 |
| 2 | 名称1, 名称4 |
| 3 | 名称2, 名称3 |
| 4 | 名称1, 名称2 |
首先,使用 pandas 的 read_excel 函数读取两个 excel 表格,并将它们的名称列合并到一个 Series 对象中:
```python
import pandas as pd
# 读取两个 excel 表格
df1 = pd.read_excel('table1.xlsx')
df2 = pd.read_excel('table2.xlsx')
# 将两个表格的名称列合并到一个 Series 对象中
names = pd.concat([df1['名称'], df2['名称']])
```
接着,将 Series 对象中的多个名称拆分成单个名称,并合并到一个新的 Series 对象中:
```python
# 将多个名称拆分成单个名称,并合并到一个新的 Series 对象中
names = names.str.split(',\s*', expand=True).stack()
# 将新的 Series 对象的索引重新设置为连续的整数
names.index = names.index.droplevel(-1)
names.name = '名称'
```
然后,使用 pandas 的 str.contains 函数进行模糊匹配,并使用 value_counts 函数统计每个名称出现的次数:
```python
# 进行模糊匹配,并统计每个名称出现的次数
counts = names[names.str.contains('关键词')].value_counts()
```
其中,'关键词' 是你想要模糊匹配的关键词。
最后,将统计结果输出到一个新的 excel 表格中:
```python
# 将统计结果输出到一个新的 excel 表格中
counts.to_excel('counts.xlsx')
```
完整代码如下:
```python
import pandas as pd
# 读取两个 excel 表格
df1 = pd.read_excel('table1.xlsx')
df2 = pd.read_excel('table2.xlsx')
# 将两个表格的名称列合并到一个 Series 对象中
names = pd.concat([df1['名称'], df2['名称']])
# 将多个名称拆分成单个名称,并合并到一个新的 Series 对象中
names = names.str.split(',\s*', expand=True).stack()
# 将新的 Series 对象的索引重新设置为连续的整数
names.index = names.index.droplevel(-1)
names.name = '名称'
# 进行模糊匹配,并统计每个名称出现的次数
counts = names[names.str.contains('关键词')].value_counts()
# 将统计结果输出到一个新的 excel 表格中
counts.to_excel('counts.xlsx')
```
需要替换代码中的 'table1.xlsx'、'table2.xlsx' 和 '关键词' 为实际的表格文件名和关键词。
阅读全文