如何利用python提取两个excel对比后的重复值的信息?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用python提取两个excel对比后的重复值的信息?相关的知识,希望对你有一定的参考价值。

请问:

例如我有两个Excel表格,
一个表格 Ex1 是三列,每列都有5000行, 有名称, 信息, 价格.
另一个表格 Ex2 是我需要的物品的名称, 这里的名称有的包含在Ex1中, 有的不包含.

我想将两个Excel比较, 用Ex2的名称匹配Ex1的, 匹配上的将其 名称, 信息 ,价格都输出在新的excel中,没匹配上的输出在另一个新的excel中.

(Excel处理不了上万行了.)

import pandas


def read_excel():
    data1 = pandas.read_excel(r'C:\\Users\\admin\\Desktop\\1.xlsx')
    data2 = pandas.read_excel(r'C:\\Users\\admin\\Desktop\\2.xlsx')
    data3=pandas.merge(data1, data2, on=['名称'], how='outer')
    print(data3)
    data3.to_excel(r'C:\\Users\\admin\\Desktop\\3.xlsx',index=False)


read_excel()

这3个excel分别是1,2,3表,用2匹配1,得到3表,我只是以名称比,相同的都统计了,3表里信息x,价格x为空的就是没匹配上的,这个要看具体数据的情况

追问

感谢您的回复, 您的描述很详细, 也很有用.
但是我遇到了另一个问题, 因为我的表2只有名称一列,所以这样做出来的表3有很多空的表格,很难区分哪些是对应上的.
所以能否继续解决一下问题:
例如您展示的表2里,我只有 [名称] 一列, 想与表1的名称对比,并将 [对应上表1中名称的] 那些列的 [所有信息] 输出到新的excel中,不要其他的信息,这样如何去做呢?

追答import pandas


def read_excel():
    data1 = pandas.read_excel(r'C:\\Users\\Administrator\\Desktop\\1.xlsx')
    data2 = pandas.read_excel(r'C:\\Users\\Administrator\\Desktop\\2.xlsx')
    data3 = pandas.merge(data1, data2, on=['名称'], how='right')
    data3.to_excel(r'C:\\Users\\Administrator\\Desktop\\3.xlsx', index=False)


read_excel()

还是1,2,3表,2表匹配1,要是匹配上,1的值给2,没有匹配上还是2表原先的值

参考技术A data3 = pandas.merge(data1, data2, on=['名称'], how='inner')

inner:内连接,取交集,这样改一下就符合你的要求了

利用PYTHON匹配提取EXCEL表的省市区,有偿?

利用PYTHON匹配提取EXCEL表的省市区,有偿,例如EXCEL有个地址:淮安市淮海东路淮海第一城,利用PYTHON的地址库匹配,然后提取某某省,某某市,某某区

不规范的地址处理是个麻烦的事。

在常用的6级行政划分(省市县乡村组)格式下,缺少部分的补全只是其中一部分的工作量,内容错误与略写的恢复也是很重要的处理内容。2004年我经手的一个项目,要对老系统的数据做迁移,其数据的规范化工作中有一个企业信息的处理,其中对于【深圳市工商行政管理局】这个营业执照办理机构,整个系统的手工录入数据里有160多种写法,有带【广东省】前缀的,有带【广东】前缀的,有【工商行政管理局】,有【工商管理局】,有【工商局】,甚至还有【工商行政管路局】等不一而足。

面对这样的数据,要么,将它们补全、规范化,要么,只能是忽略它们。


标准的6位行政编码是规范到县级,2000年时,全国有4000多个编码在使用,现在有3600+在使用。如果要处理不同时期的行政编码因【裁撤并分改】而产生的变化,也是相当大的工作量。


然后就只需要考虑缺失级别的补全工作了。

不能简单认为市级就一定是某某市,例如内蒙有很多市级的某某盟;

同样的某某市也不一定是市级,例如北京市(省级),都江堰市(县级);

在县级,有不少同名的,一些省会城市的下辖县级单位是某某区,而它们经常就有同名的,北京有朝阳区,长春有朝阳区,这都是县级的,同时,辽宁还有个朝阳市……

因此,【朝阳群众】到底是指哪里的群众,在没有上下文的情况下,还真不好说。


如果上述的所有问题都解决了,或者都不考虑,假定数据都是规范的完整地址,例如【湖南省株洲市茶陵县】或者【湖南省常德市津市市】这样的,要进行匹配就是很简单的事了。

参考技术A 最常见的毛病是灯座接点弹片弹性疲乏,或者电极氧化。把电灯关掉,用小起子把灯座内有氧化的电极刮一下,有弹片的挑一下。重新装正灯泡,稍微扭进去一些,保证电极. 参考技术B PYTHON的地址库 --- 你具体指的是什么?这个有个准确度的问题,百分之百是无法实现的。

以上是关于如何利用python提取两个excel对比后的重复值的信息?的主要内容,如果未能解决你的问题,请参考以下文章

利用PYTHON匹配提取EXCEL表的省市区,有偿?

Python提取两个字符串之间的内容

EXCEL中从一个字符串中提取特定字符后的几位文字

EXCEL VBA提取内容到指定位置

[Python] 利用python的第三方库xlrd和xlwt来处理excel数据

Python中,如何合并两个键相同,值为元祖类型的字典?