如何利用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表原先的值

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-24
data3 = pandas.merge(data1, data2, on=['名称'], how='inner')

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