Python: искать значение / данные во всем листе Excel - PullRequest
0 голосов
/ 05 сентября 2018

Я должен сравнить данные, представленные в двух листах Excel, и вставить разницу в третий лист.

Я знаю, что мне нужно сделать сравнение дважды, т.е. file1!=file2 и file2!=file1.

Q1: Есть ли способ, которым только один шаг находит разницу в двух файлах?

Пока что я написал приведенный ниже код и он также работает:

import pandas as pd

df1 = pd.read_excel('/Users/Testing/Data1.xlsx')
df2 = pd.read_excel('/Users/Testing/Data2.xlsx')

difference = df1[df1!=df2]
print(difference)

Пример данных:

Data1:

S.No ID    Name   RegionName   RegionCode
 1.  191  Roger   EU           76
 2.  334  Martin  TT           09
 3.  442  Steven  YU           89
 4.  776  Georgee TT           09


Data2:

S.No ID    Name   RegionName   RegionCode
01.  111  Ralph   EU           76
02.  254  Luthur  SE           19
03.  564  Todd    OO           67
04.  776  Georgee TT           09

Разница, которую я получаю:

S.No ID    Name   RegionName   RegionCode
 01.  191  Roger   EU           76
 02.  334  Martin  TT           09
 03.  442  Steven  YU           89
 04.  776  Georgee TT           09
 05.  111  Ralph   EU           76
 06.  254  Luthur  SE           19
 07.  564  Todd    OO           67
 08.  776  Georgee TT           09

Ожидаемый результат:

S.No ID    Name   RegionName   RegionCode
01   191  Roger    EU           76
02   334  Martin   TT           09
03   442  Steven   YU           89
04   254  Luthur   SE           19 
05   564  Todd     OO           67
06   111  Ralph    EU           76

Q2: 

Как я могу получить вышеуказанный результат? Требуется найти и сохранить значение, которое присутствует только в одном файле (например, Data1), а не в другом (например, Data2).

Любая помощь высоко ценится.

1 Ответ

0 голосов
/ 05 сентября 2018

вы можете использовать concat и drop_duplicates:

new_df = pd.concat([df1,df2])
new_df.drop_duplicates(keep=False)

    S.No    ID      Name    RegionName  RegionCode
0   1.0      191    Roger   EU           76
1   2.0      334    Martin  TT           9
2   3.0      442    Steven  YU           89
0   1.0      111    Ralph   EU          76
1   2.0      254    Luthur  SE          19
2   3.0      564    Todd    OO           67
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...