【问题标题】:How to compare two different structured excel in python如何在python中比较两个不同的结构化excel
【发布时间】:2019-11-17 11:54:43
【问题描述】:

假设我有 file1.xlsx 和 file2.xlsx 列 ['id','name','role','gender'] 和 ['id','country','role'] 分别。我正在尝试在一个新的 excel 文件中检索所有具有相同角色且具有各自 ID 的行。我尝试了下面的代码来实现这一点-

import pandas

file1 = file1.xlsx
file2 = file2.xlsx
data1 = pandas.read_excel(file1)
data2 = pandas.read_excel(file2)
dataDiff = data1[data1 != data2]
writer = pandas.ExcelWriter('result.xlsx')
dataDiff.to_excel(writer, sheet_name='Sheet1',index=false)
writer.save()

但是这个块给了我下面的错误

Exception: Can only compare identically-labeled Dataframe objects'

我还是 python 的新手。任何帮助,将不胜感激。除了 pandas,我们还能用什么吗?

【问题讨论】:

  • 您可能想从m = data1.merge(data2, on='role') 开始,看看这是否能让您达到您想要的目标?
  • 请检查我的答案:)

标签: python excel pandas


【解决方案1】:

我们可以使用Series.isin 来执行boolean indexing:

mask=data1.role.isin(data2.role.tolist())
data_equal=data1[mask]

data_diff=data1[~mask]

我们也可以按照建议使用DataFrame.merge @Jon Clements:

data_equal=data.merge(data2,on='role',how='inner')

或

data_diff= ( data1.merge(data2,on='role',how='outer',indicator=True)     
                  .query('_merge == "left_only"')
                  .drop('_merge',axis=1) )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    相关资源
    最近更新 更多