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