Перечислите несопоставленные строки из двух фреймов данных - PullRequest
0 голосов
/ 04 марта 2019

Raw1

      Name     Age    Height
0    Ronaldo   25     189.0
1    Honey     26     193.0
2    Kola      14     200.0
3    Tree      19     155.0
4    Rot       22     165.0
5    Rat       28     170.0
6    Toy       30     172.0
7    Raft      32     156.0
8    Rifle     28     165.0

Raw2

     Name      Age     Height
0   Ronaldo    25      189.0
1   Honey      26      NaN
2   Kola       14      200.0
3   Tree       0       155.0
4   Rot        22      NaN
5   NaN        28      170.0
6   Toy        30      172.0
7   Raft       32      156.0
8   Rifle      28      165.0

Я хотел бы перечислить несопоставленные строки между этими двумя кадрами данных.Тем не менее, я могу только перечислить соответствующие строки путем слияния по правому индексу.

raw4=pd.merge(raw1,raw2, on=['Name','Age','Height'], right_index=True)

Токовый выход

     Name  Age  Height
0  Ronaldo 25   189.0
2  Kola    14   200.0
6  Toy     30   172.0
7  Raft    32   156.0
8  Rifle   28   165.0

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

     Name    Age  Height
1   Honey    26   NaN
3   Tree     0    155.0
4   Rot      22   NaN

1 Ответ

0 голосов
/ 04 марта 2019

Вы можете сравнивать DataFrames поэлементно, а затем проверять те строки, где любой из элементов отличается:

indexes = (raw1 != raw2).any(axis=1)
raw4 = raw2.loc[indexes]

Вывод:

    Name  Age  Height
1  Honey   26     NaN
3   Tree    0   155.0
4    Rot   22     NaN
5    NaN   28   170.0

Обратите внимание, что этот подход выигралне работает, если оба значения из raw1 и raw2 равны NaN (NaN всегда отличается от любого числа, включая NaN).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...