如何在python中比较两个不同的结构化Excel

时间:2019-11-17 11:54:43

标签: python excel pandas

假设我有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的新手。任何帮助,将不胜感激。除了大熊猫,我们还能使用其他东西吗?

1 个答案:

答案 0 :(得分: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) )