Python:在整个excel工作表中查找值/数据

Python:在整个excel工作表中查找值/数据,python,pandas,Python,Pandas,我必须比较两张excel表格中的数据,并在第三张表格中插入差异 我知道我必须进行两次比较,即file1=文件2和文件2=文件1 Q1:是否有一种方法可以只通过一个步骤找到两个文件中的差异 到目前为止,我已经编写了以下代码及其工作原理: import pandas as pd df1 = pd.read_excel('/Users/Testing/Data1.xlsx') df2 = pd.read_excel('/Users/Testing/Data2.xlsx') difference =

我必须比较两张excel表格中的数据,并在第三张表格中插入差异

我知道我必须进行两次比较,即
file1=文件2和文件2=文件1

Q1:
是否有一种方法可以只通过一个步骤找到两个文件中的差异

到目前为止,我已经编写了以下代码及其工作原理:

import pandas as pd

df1 = pd.read_excel('/Users/Testing/Data1.xlsx')
df2 = pd.read_excel('/Users/Testing/Data2.xlsx')

difference = df1[df1!=df2]
print(difference)
样本数据:

Data1:

S.No ID    Name   RegionName   RegionCode
 1.  191  Roger   EU           76
 2.  334  Martin  TT           09
 3.  442  Steven  YU           89
 4.  776  Georgee TT           09


Data2:

S.No ID    Name   RegionName   RegionCode
01.  111  Ralph   EU           76
02.  254  Luthur  SE           19
03.  564  Todd    OO           67
04.  776  Georgee TT           09
我得到的区别是:

S.No ID    Name   RegionName   RegionCode
 01.  191  Roger   EU           76
 02.  334  Martin  TT           09
 03.  442  Steven  YU           89
 04.  776  Georgee TT           09
 05.  111  Ralph   EU           76
 06.  254  Luthur  SE           19
 07.  564  Todd    OO           67
 08.  776  Georgee TT           09
预期结果是:

S.No ID    Name   RegionName   RegionCode
01   191  Roger    EU           76
02   334  Martin   TT           09
03   442  Steven   YU           89
04   254  Luthur   SE           19 
05   564  Todd     OO           67
06   111  Ralph    EU           76

Q2: 
我怎样才能得到上述结果?要求搜索并存储仅存在于一个文件(如Data1)中而不存在于另一个文件(如Data2)中的值


非常感谢您的帮助

您可以合并和删除重复项:

new_df = pd.concat([df1,df2])
new_df.drop_duplicates(keep=False)

    S.No    ID      Name    RegionName  RegionCode
0   1.0      191    Roger   EU           76
1   2.0      334    Martin  TT           9
2   3.0      442    Steven  YU           89
0   1.0      111    Ralph   EU          76
1   2.0      254    Luthur  SE          19
2   3.0      564    Todd    OO           67

您可以合并和删除重复项:

new_df = pd.concat([df1,df2])
new_df.drop_duplicates(keep=False)

    S.No    ID      Name    RegionName  RegionCode
0   1.0      191    Roger   EU           76
1   2.0      334    Martin  TT           9
2   3.0      442    Steven  YU           89
0   1.0      111    Ralph   EU          76
1   2.0      254    Luthur  SE          19
2   3.0      564    Todd    OO           67

df3
df4
变量是什么?@haskar抱歉,这是个错误。我已经更正了。如果给定一个ID,那么名称、RegionName、RegionCode是相同的,而不是比较记录,您可以只比较两个ID列。使用set操作获取所需的id并从数据帧中提取它们。
df3
df4
变量是什么?@haskar抱歉,这是个错误。我已经更正了。如果给定一个ID,那么名称、RegionName、RegionCode是相同的,而不是比较记录,您可以只比较两个ID列。使用set操作获取所需的id,并从数据帧中提取它们。谢谢。但这无助于解决问题。我试图在问题中进一步澄清该要求。@Alpha这将产生预期的输出。@Alpha要求捕获其他文件(如Data2)中不存在的值(如Data1)。根据您的逻辑,我将在删除重复项时获取所有值。我需要的值/数据只存在于文件中,而不存在于其他文件中。@alpha correct。这就是为什么要将两个数据帧连接到一个数据帧中,然后删除重复的数据帧。剩下的是存在于一个或另一个数据帧中的唯一行。两个数据帧中存在的任何行都将被删除。您将keep设置为false,因此它会删除所有重复的行。谢谢。但这无助于解决问题。我试图在问题中进一步澄清该要求。@Alpha这将产生预期的输出。@Alpha要求捕获其他文件(如Data2)中不存在的值(如Data1)。根据您的逻辑,我将在删除重复项时获取所有值。我需要的值/数据只存在于文件中,而不存在于其他文件中。@alpha correct。这就是为什么要将两个数据帧连接到一个数据帧中,然后删除重复的数据帧。剩下的是存在于一个或另一个数据帧中的唯一行。两个数据帧中存在的任何行都将被删除。您将keep设置为false,这样它将删除所有重复的行。