Python:在整个excel工作表中查找值/数据
我必须比较两张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 =
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,这样它将删除所有重复的行。