Как сравнить два набора данных и извлечь различия между ними в Python? - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть два набора данных с одинаковыми атрибутами, но в некоторых строках информация меняется.Я хочу извлечь строки, в которых была изменена информация.

1 Ответ

0 голосов
/ 02 апреля 2019

Pandas предлагает богатый API, который вы можете использовать для управления данными, что вы хотите. метод слияния является одним из них. слияние - это высокопроизводительные операции соединения в памяти, идиоматически очень похожие на реляционные базы данных, такие как SQL.

df1 = pd.DataFrame({'A':[1,2,3],'B':[4,5,6]})
print(df1)

   A  B
0  1  4
1  2  5
2  3  6

df2 = pd.DataFrame({'A':[1,10,3],'B':[4,5,6]})
print(df2)
    A  B
0   1  4
1  10  5
2   3  6

df3 = df1.merge(df2.drop_duplicates(),how='right', indicator=True)
print(df3)
    A  B      _merge
0   1  4        both
1   3  6        both
2  10  5  right_only

как вы можете видеть, есть новый столбец с именем _merge с описанием того, как эта строка объединилась, оба означают, что эта строка существует в обоих фреймах данных, где right_only означает, что эта строка существует только в правом фрейме данных который в этом случае df2 если вы хотите, чтобы была изменена только строка, вы можете отфильтровать по столбцу _merge

df3 = df3[df3['_merge']=='right_only']
   A   B      _merge
2  10  5  right_only

Примечание: вы можете выполнить слияние, используя левое соединение, изменив how влево, и это будет захватить каждую вещь в левом фрейме данных (df1), и если строка также существует в df2, то столбец _merge покажет оба. посмотрите здесь для более подробной информации

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