【发布时间】:2020-09-26 19:23:46
【问题描述】:
我目前有以下数据框:
- Excel 工作表:(57*9000)
- Excel 工作表:(49*8000)
我有以下功能:
在每个数据框中定位特定列
求 excel sheet 1 和 excel sheet 2 中每个单元格的最大相似度
对齐每个匹配并保存在 3.excel 文件中
代码:
import pandas as pd
import numpy as np
from difflib import SequenceMatcher
def similar(a, b):
ratio = SequenceMatcher(None, a, b).ratio()
return ratio
#Load Batchlog to Data frame
data1 = Batchlog_data = pd.read_excel (r'file1.xlsx')
data2 = Web_data = pd.read_excel (r'file2.xlsx')
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
order = []
for index, row in df1.iterrows():
maxima = [similar(row['Name'], j) for j in df2['Name']]
best_ratio = max(maxima)
best_row = np.argmax(maxima)
order.append(best_row)
df2 = df2.iloc[order].reset_index()
pd.concat([df1, df2], axis=1)
dfFinal=pd.concat([df1, df2], axis=1)
dfFinal.to_excel("Assembled_Tc2_adjustments.xlsx")
输出:
File "C:\Users\Anaconda3\lib\difflib.py", line 311, in __chain_b
for i, elt in enumerate(b):
TypeError: 'float' object is not iterable
我确实在堆栈上尝试了以前帖子中的一些解决方案,但我仍在学习 python,因此未能成功地将建议应用于我的特定功能。
【问题讨论】:
标签: python excel pandas iterable