Як виконати анти-з'єднання в pandas
Анти-з’єднання дозволяє повертати всі рядки в одному наборі даних, які не мають відповідних значень в іншому наборі даних.
Ви можете використовувати наступний синтаксис для виконання анти-з’єднання між двома пандами DataFrames:
outer = df1. merge (df2, how=' outer ', indicator= True ) anti_join = outer[(outer._merge==' left_only ')]. drop (' _merge ', axis= 1 )
У наступному прикладі показано, як використовувати цей синтаксис на практиці.
Приклад: виконання анти-з’єднання в Pandas
Припустімо, що ми маємо наступні два panda DataFrames:
import pandas as pd
#create first DataFrame
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'],
' points ': [18, 22, 19, 14, 30]})
print (df1)
team points
0 to 18
1 B 22
2 C 19
3 D 14
4 E 30
#create second DataFrame
df2 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'F', 'G'],
' points ': [18, 22, 19, 22, 29]})
print (df2)
team points
0 to 18
1 B 22
2 C 19
3 F 22
4 G 29
Ми можемо використати такий код, щоб повернути всі рядки з першого DataFrame, які не мають відповідної команди у другому DataFrame:
#perform outer join outer = df1. merge (df2, how=' outer ', indicator= True ) #perform anti-join anti_join = outer[(outer._merge==' left_only ')]. drop (' _merge ', axis= 1 ) #view results print (anti_join) team points 3 D 14 4 E 30
Ми бачимо, що є рівно дві команди з першого DataFrame, які не мають відповідної назви команди у другому DataFrame.
Захист від приєднання спрацював, як очікувалося.
Кінцевим результатом є DataFrame, який містить лише рядки, де ім’я команди належить до першого DataFrame, але не до другого DataFrame.
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання в pandas:
Як зробити внутрішнє об’єднання в Pandas
Як зробити об’єднання зліва в Pandas
Як зробити перехресне з’єднання в Pandas