パンダ: 別の dataframe にない行を取得する


次の基本構文を使用して、別の DataFrame にない行を pandas DataFrame から取得できます。

 #merge two DataFrames and create indicator column
df_all = df1. merge ( df2.drop_duplicates (), on=[' col1 ',' col2 '],
                   how=' left ', indicator= True )

#create DataFrame with rows that exist in first DataFrame only
df1_only = df_all[df_all[' _merge '] == ' left_only ']

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

例: 別の DataFrame にない Pandas DataFrame 内の行を取得する

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

 import pandas as pd

#create first DataFrame
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'], 
                    ' points ': [12, 15, 22, 29, 24]}) 

print (df1)

  team points
0 to 12
1 B 15
2 C 22
3 D 29
4 E 24

#create second DataFrame
df2 = pd. DataFrame ({' team ': ['A', 'D', 'F', 'G', 'H'],
                    ' points ': [12, 29, 15, 19, 10]})

print (df2)

  team points
0 to 12
1 D 29
2 F 15
3 G 19
4:10 a.m.

次の構文を使用して 2 つの DataFrame をマージし、各 DataFrame にどの行が属しているかを示すインジケーター列を作成できます。

 #merge two DataFrames and create indicator column
df_all = df1. merge ( df2.drop_duplicates (), on=[' team ',' points '],
                   how=' left ', indicator= True )

#view result
print (df_all)

次に、次の構文を使用して、2 番目の DataFrame にない行のみを最初の DataFrame から取得できます。

 #create DataFrame with rows that exist in first DataFrame only
df1_only = df_all[df_all[' _merge '] == ' left_only ']

#view DataFrame
print (df1_only)

  team points _merge
1 B 15 left_only
2 C 22 left_only
4 E 24 left_only

最後に、必要に応じて_merge列を削除できます。

 #drop '_merge' column
df1_only = df1_only. drop (' _merge ', axis= 1 )

#view DataFrame
print (df1_only)

  team points
1 B 15
2 C 22
4 E 24

結果は、すべての行が最初の DataFrame には存在するが、2 番目の DataFrame には存在しない DataFrame になります。

追加リソース

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

Pandas で 1 つの DataFrame から別の DataFrame に列を追加する方法
Pandasで列の順序を変更する方法
Pandas で列を名前で並べ替える方法

コメントを追加する

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