对桌面的1000.xlsx表格进行处理,如果author相同的同时,org的相似度也大于0.8,将数据保存为same.xlsx表格,其他的保存为unsame表格
时间: 2024-04-12 09:30:51 浏览: 94
要对桌面上的1000.xlsx表格进行处理,如果"author"相同且"org"的相似度大于0.8,则将这些数据保存为same.xlsx表格,否则保存为unsame.xlsx表格。可以使用以下代码实现:
```python
import pandas as pd
from difflib import SequenceMatcher
# 读取Excel文件
df = pd.read_excel(r'C:\Users\Admin\Desktop\1000.xlsx')
# 比较相似度函数
def similarity(a, b):
return SequenceMatcher(None, str(a), str(b)).ratio()
# 创建同名和不同名的DataFrame
same_df = pd.DataFrame(columns=df.columns)
unsame_df = pd.DataFrame(columns=df.columns)
# 遍历每一行数据
for i, row in df.iterrows():
is_same = False
for j, same_row in same_df.iterrows():
if row['author'] == same_row['author'] and similarity(row['org'], same_row['org']) > 0.8:
is_same = True
same_df.loc[j] = same_row.append(row)
break
if not is_same:
unsame_df = unsame_df.append(row)
# 保存同名和不同名的数据为Excel文件
same_df.to_excel(r'C:\Users\Admin\Desktop\same.xlsx', index=False)
unsame_df.to_excel(r'C:\Users\Admin\Desktop\unsame.xlsx', index=False)
print("同名的数据已保存为same.xlsx")
print("不同名的数据已保存为unsame.xlsx")
```
在上述代码中,首先使用`pd.read_excel()`函数读取桌面上的1000.xlsx表格,并将其存储在名为df的DataFrame对象中。
然后,定义了一个`similarity()`函数,用于计算两个字符串的相似度。
接下来,创建了两个空的DataFrame对象,用于保存同名和不同名的数据。
接着,遍历原始数据的每一行,检查是否存在相同的"author"且"org"相似度大于0.8的数据。如果存在,则将这些数据添加到same_df中;如果不存在,则将该行数据添加到unsame_df中。
最后,使用`to_excel()`函数将同名和不同名的数据保存为same.xlsx和unsame.xlsx文件。
请确保将文件的保存路径修改为你想要保存的位置。