Pandas でアンチ結合を実行する方法


アンチ結合を使用すると、あるデータセット内の、別のデータセットに一致する値がないすべての行を返すことができます。

次の構文を使用して、2 つのパンダ データフレーム間のアンチ結合を実行できます。

 outer = df1. merge (df2, how=' outer ', indicator= True )

anti_join = outer[(outer._merge==' left_only ')]. drop (' _merge ', axis= 1 )

次の例は、この構文を実際に使用する方法を示しています。

例: Pandas でのアンチ結合の実行

次の 2 つのパンダ DataFrame があると仮定します。

 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

次のコードを使用すると、2 番目の 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

最初のデータフレームには、2 番目のデータフレームに一致するチーム名がないチームが 2 つあることがわかります。

アンチ結合は期待どおりに機能しました。

最終結果は、チーム名が最初のデータフレームに属し、2 番目のデータフレームには属さない行のみを含むデータフレームになります。

追加リソース

次のチュートリアルでは、パンダで他の一般的なタスクを実行する方法を説明します。

Pandas で内部結合を行う方法
Pandasで左結合を行う方法
Pandasでクロス結合を行う方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です