python - Python:在整个 Excel 表中查找值/数据
问题描述
我必须比较两个 Excel 表中存在的数据并在第三张表中插入差异。
我知道我必须进行两次比较,file1!=file2
即file2!=file1
.
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)中的值。
非常感谢任何帮助。
解决方案
你可以 concat 和 drop_duplicates:
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
推荐阅读
- c - 在不询问密码的情况下,pam 应用程序上的身份验证错误
- php - 如何为 Laravel 应用程序设置 Cloudfront CDN?
- javascript - 使用 JQuery 从嵌套的 JSON 创建 HTML 表
- java - Java:无法将数据添加到 SQLite DB
- nightwatch.js - Nightwatch.js - assert.containsText 我正在寻找一个字符串但为空(null)
- java - sql 问题 - java.sql.SQLException:操作数应包含 1 列(一次
- java - 比 onLoadResource 更快地将 javascript 注入 webview 的方法?
- terraform - Terraform 在每个 Terraform 应用上创建一个新的 EBS 快照
- python-3.x - 如何计算 Naive 和 Svm Nltk 的 F 度量、精度、召回率、错误:字符串对象没有属性副本
- java - 如何在 Spigot 1.13.2 的消息中返回块类型