读取桌面的1000.xlsx文件,并比较author列的相似度,将相似度>0.9的合并保存,输出为merged_1000.xlsx文件
时间: 2024-04-12 08:28:06 浏览: 114
xlsx表格文件批量合并
要读取桌面上的1000.xlsx文件并比较其中的"author"列的相似度,并将相似度大于0.9的行进行合并保存为merged_1000.xlsx文件,可以使用以下代码:
```python
import pandas as pd
from difflib import SequenceMatcher
# 读取Excel文件
file_path = r'C:\Users\Admin\Desktop\1000.xlsx'
df = pd.read_excel(file_path)
# 比较相似度函数
def similarity(a, b):
return SequenceMatcher(None, str(a), str(b)).ratio()
# 合并相似度大于0.9的行
merged_df = pd.DataFrame(columns=df.columns) # 创建空的DataFrame用于保存合并后的数据
for i, row in df.iterrows():
if i == 0:
merged_df = merged_df.append(row) # 将第一行添加到合并后的DataFrame中
else:
is_merged = False
for j, merged_row in merged_df.iterrows():
if similarity(row['author'], merged_row['author']) > 0.9: # 比较相似度
merged_df.at[j, 'author'] += ', ' + str(row['author']) # 合并author列
is_merged = True
break
if not is_merged:
merged_df = merged_df.append(row) # 将不与任何行相似的行添加到合并后的DataFrame中
# 保存合并后的数据为Excel文件
merged_file_path = r'C:\Users\Admin\Desktop\merged_1000.xlsx'
merged_df.to_excel(merged_file_path, index=False)
print("合并后的数据已保存到: ", merged_file_path)
```
在上述代码中,首先导入了pandas库和difflib库的SequenceMatcher类。然后,使用pd.read_excel()函数读取桌面上的1000.xlsx文件,并将其存储在名为df的DataFrame对象中。
接下来,定义了一个相似度比较函数similarity(),该函数使用SequenceMatcher类来计算两个字符串的相似度。
然后,创建了一个空的DataFrame merged_df 用于保存合并后的数据。
通过迭代df中的每一行,与merged_df中的每一行进行相似度比较。如果相似度大于0.9,则将当前行的"author"列合并到merged_df中相似行的"author"列中。如果不与任何行相似,则将当前行添加到merged_df中。
最后,使用to_excel()方法将合并后的数据保存为merged_1000.xlsx文件。
请确保将file_path 和 merged_file_path 替换为你实际的文件路径。
阅读全文