python - 比较两个excel文件并返回不常见的行
问题描述
我有两个如下的 excel 文件
- File1.xlsx
File2.xlsx
我想比较每一行和每一列,并消除两个文件中的共同行(列标题除外)。输出应如下所示 -
File1.xlsx
File2.xlsx
我的代码-
import pandas
from datetime import datetime
import numpy
df = pandas.read_excel('File1.xlsx')
FORMAT = ['col1','col2','col3']
df_selected = df[FORMAT]
df2 = pandas.read_excel('File2.xlsx')
FORMAT2 = ['col1','col2','col3']
df_selected2 = df2[FORMAT2]
def compare(row1,row2):
# print(row1,row2)
flag = False
i = 0
for t1, t2 in zip(row1, row2):
#if it is first value
#check dates
if(i==0):
formattedDT = datetime.strptime(t1, '%d-%b-%Y')
if(formattedDT!=t2):
flag = True
break
elif(t1!=t2):
flag = True
break
i=i+1
if(flag is False):
return 'matched'
else:
return 'mismatched'
def iterate(array1, array2):
result = array1
for index, row1 in enumerate(array1):
for row2 in array2:
if(compare(row1,row2)=='matched'):
del result[index]
break
df = pandas.DataFrame(result)
df.columns=['col1','col2','col3']
writer = pandas.ExcelWriter('output.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='welcome', index=False)
writer.save()
iterate(df_selected.values,df_selected2.values)
但我收到此错误输出
- ValueError: cannot delete array elements
请帮忙。
解决方案
你可以试试这个解决方案。它应该会给你想要的结果
df1 =pd.read_excel('File1.xlsx',parse_dates=['col1'],sep='\t')
df2 = pd.read_excel('File2.xlsx',parse_dates=['col1'],sep='\t',dayfirst=True)
temp_df = pd.concat([df1,df2])
temp_df.reset_index(inplace=True,drop=True)
temp_df.drop_duplicates(subset=['col1','col2','col3'], keep=False, inplace=True)
final_df1 = pd.merge(df1, temp_df, how='inner', on=['col1','col2','col3'])
final_df2 = pd.merge(df2, temp_df, how='inner', on=['col1','col2','col3'])
final_df1.to_excel('file_1_modified.xlsx',index=False)
final_df2.to_excel('file_2_modified.xlsx',index=False)
下面是我的结果的快照。请注意我已经从 csv 文件中读取了..所以我在我的快照上使用了 pd.read_csv()。但它会给出相同的结果
推荐阅读
- html - Position the Check mark to centre of screen
- php - Symfony 5如何将图像从没有公共目录粘贴到树枝
- php - 将自定义帖子类型数据输出到表格中,没有多个表格标签
- git - Git:是否可以让分支使用特定版本的子模块
- ios - ARSession 未运行
- python-3.x - 如何使用python从pdf中提取标题/标题下方的内容/表格?
- azure - 如何在 Azure 资源组中获取所有没有标签的 Azure 资源,不包括隐藏标签
- python - pandas和python中基于映射文件比较缩写词
- javascript - 如何使用 react-native-render-html 获取特定类
- node.js - 读取文本文件并获取行之间的特定文本并将其保存在节点 js 的 csv 文件中?