比较两个excel文件并返回不常见的行

     2023-03-12     231

关键词:

【中文标题】比较两个excel文件并返回不常见的行【英文标题】:Compare two excel files and return non common rows 【发布时间】:2021-07-12 04:42:19 【问题描述】:

我有两个如下所示的 excel 文件- File1.xlsx 文件2.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: 无法删除数组元素

请帮忙。

【问题讨论】:

我认为 pandas.merge 在这里会有所帮助,然后寻找 _merge 字段。 import pandas as pd left = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB')) right = pd.DataFrame([[1, 2], [7, 4]], columns=list('AB')) merge=pd.merge(left,right,how="outer",on=['A','B'],indicator=True) @simpleApp 你可以缩进你的代码并解释你的解决方案。谢谢。 我想你们都准备好了。如果您需要任何额外的支持,请告诉我。干杯! 【参考方案1】:

你可以试试这个解决方案。它应该会给你想要的结果

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()。但它会给出相同的结果

【讨论】:

嘿,感谢您的尝试,尽管我将两个文件的所有行和所有列并排放置在两个修改后的文件中。显示重复和非重复。 嘿@sandy,我已经修改了答案..你可以试试 现在显示正确的编号。每个文件中的列,但它仍然显示每个文件中的所有行,重复数据删除没有发生。 啊...在代码中进行了最后一轮更新...我想这次它应该可以工作了..您可以检查 temp_df 列,它是没有任何重复的组合数据框 @sandy ...我确实创建了 2 个类似于您的数据的 csv 文件并添加了一些快照以供参考。还检查我在阅读时添加了 dayfirst 参数...。检查这个有用的 url towardsdatascience.com/…

使用 awk 比较两个文件并打印匹配的行

】使用awk比较两个文件并打印匹配的行【英文标题】:Comparetwofilesusingawkandprintthematchedlines【发布时间】:2016-07-3004:16:24【问题描述】:我有两个文件有以下信息。我需要比较FILE2中匹配的文件和打印行。FILE1.txtmartin01kevin01phoenix01... 查看详情

比较两个excel的两列并返回第三列

】比较两个excel的两列并返回第三列【英文标题】:Comparetwocolumnsoftwoexcelsandreturn3rdcolumn【发布时间】:2016-11-1613:52:01【问题描述】:我想比较两个不同Excel工作表的两列,并在第一个Excel工作表的相应匹配行前面返回第二个Excel工... 查看详情

比较两个字段并在另一个表中返回不匹配的存储过程

】比较两个字段并在另一个表中返回不匹配的存储过程【英文标题】:StoredProceduretocomapre2fieldsandreturnmismactchinanothertable【发布时间】:2013-04-2413:59:54【问题描述】:我正在OracleSQLDeveloper中创建存储过程。我正在尝试比较2个表的... 查看详情

比较 PandaS DataFrames 并返回第一个缺失的行

】比较PandaSDataFrames并返回第一个缺失的行【英文标题】:ComparePandaSDataFramesandreturnrowsthataremissingfromthefirstone【发布时间】:2016-01-2518:59:33【问题描述】:我有2个数据帧,想要比较它们并从第一个(df1)返回不在第二个(df2)中的行。... 查看详情

如何比较两个json文件并在对象中返回不匹配的键和值(代码片段)

JSONFile1:["App_Name":"Test1","Instances":"2","Memory":"2G","Disk_Quota":"1G","App_Name":"Test2","Instances":"2","Memory":"2G","Disk_Quota":"1G","App_Name":"Test3","Instances":"1","Memory":"1G"," 查看详情

比较两个数组并获得不常见的值(代码片段)

我正在做这个问题,朋友给了我两个阵列说(a[1,2,3,4]和b[8,7,9,2,1]),你必须找到不常见的元素。预期产出为[3,4,8,7,9]。代码如下。defdisjoint(e,f):c=e[:]d=f[:]foriinrange(len(e)):forjinrange(len(f)):ife[i]==f[j]:c.remove(e[i])d.remove(d[j])final=c+dpr 查看详情

使用python返回excel中两个不同文件中两列之间的差异

...2将不断更新并在列中随机添加新值。我如何编写脚本来比较两列并找到差异,而不管新值放在file2中 查看详情

比较两个列表并使用 linq 返回不匹配的项目

】比较两个列表并使用linq返回不匹配的项目【英文标题】:comparetwolistandreturnnotmatchingitemsusinglinq【发布时间】:2012-08-1417:33:14【问题描述】:我有两个列表List<Sent>SentList;List<Messages>MsgList;两者都具有称为MsgID的相同属性... 查看详情

比较两个字典(键,值)并返回不具有相同值的键

】比较两个字典(键,值)并返回不具有相同值的键【英文标题】:Comparingtwodictionaries(Key,value)andreturnKeysthatdoesn\'thavesamevalue【发布时间】:2022-01-1815:17:23【问题描述】:我对c#有点陌生,想在比较两个字典时识别不具有相同值的... 查看详情

比较两个文本文件的最快方法是啥,而不是将移动的行计算为不同的

】比较两个文本文件的最快方法是啥,而不是将移动的行计算为不同的【英文标题】:Whatisthefastestwaytocomparetwotextfiles,notcountingmovedlinesasdifferent比较两个文本文件的最快方法是什么,而不是将移动的行计算为不同的【发布时间】... 查看详情

linux文件比较命令的comm命令

如果想对两个有序的文件进行比较,可以使用comm命令。语法:comm[-123]file1file2说明:该命令是对两个已经排好序的文件进行比较。其中file1和file2是已排序的文件。comm读取这两个文件,然后生成三列输出:仅在file1中出现的行;... 查看详情

比较两个表并找到缺失的行

】比较两个表并找到缺失的行【英文标题】:Comparetwotableandfindmissingrow【发布时间】:2021-12-2310:10:10【问题描述】:我有两个简单的表格:表1:id,h_id,role,l_name1,2,3,test11,2,4,test1表2:id,h_id,role,l_name1,2,3,test11,2,3,test2我们没有任何主... 查看详情

java示例代码_比较两个文本文件的内容并返回";内容相同";或";内容不同";

java示例代码_比较两个文本文件的内容并返回";内容相同";或";内容不同"; 查看详情

匹配绝对值并返回整列 EXCEL

...:12:48【问题描述】:我们有一行指示性数字,从中提取了两个最大的绝对值。在这些指示性数字下,我们有跨越n行的数据。现在我们想获取每个最大指示值的行。例如:-1.62.50.51.2ghbhdhjh12454589以下公式查找前两个最大值(假设为... 查看详情

在两个xlsx文件之间查找相同的行(代码片段)

...个帖子,但我找不到解决方案。我试图在Python中使用Pandas比较不同工作簿中的2个Excel文件。WORK1:ABC111222333WORK2:ABC111252333欲望输出:ABC111333到目前为止,我得到的是:importpandasaspddf1=pd.read_excel('/path/work1.xlsx')df2=pd.read_excel('/path/wo 查看详情

unix命令查找两个文件中常见的行(代码片段)

我确定我曾经发现一个unix命令可以打印两个或多个文件中的公共行,有人知道它的名字吗?它比diff简单得多。答案你正在寻找的命令是comm。例如:-comm-121.sorted.txt2.sorted.txt这里:-1:禁止第1列(1.sorted.txt唯一的行)-2:抑制第2... 查看详情

使用 awk 比较两个文件并打印不匹配的记录

】使用awk比较两个文件并打印不匹配的记录【英文标题】:Comparisonoftwofilesusingawkandprintnonmatchedrecords【发布时间】:2020-04-1611:53:04【问题描述】:我正在比较两个文件file1和file2,我需要打印在file1中比较的file2的更新记录。我需... 查看详情

VBA比较两个列表并删除不同列中具有重复值的行

】VBA比较两个列表并删除不同列中具有重复值的行【英文标题】:VBAcomparetwolistsandremoverowwithduplicatevalueindifferentcolumn【发布时间】:2021-08-0902:12:33【问题描述】:我有两个包含几列的列表。有些列不同,但许多列相同且顺序不同... 查看详情