パンダ: 2 つの dataframe を行ごとに比較する方法
次のメソッドを使用して、2 つのパンダ DataFrame を行ごとに比較できます。
方法 1: データフレームを比較し、差異のある行のみを保持する
df_diff = df1. compare (df2, keep_equal= True , align_axis= 0 )
方法 2: データフレームを比較し、すべての行を保持する
df_diff = df1. compare (df2, keep_equal= True , keep_shape= True , align_axis= 0 )
次の例は、次の pandas DataFrame で各メソッドを使用する方法を示しています。
import pandas as pd #create first DataFrame df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D'], ' points ': [18, 22, 19, 14], ' assists ': [5, 7, 7, 9]}) print (df1) team points assists 0 to 18 5 1 B 22 7 2 C 19 7 3 D 14 9 #create second DataFrame df2 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'E'], ' points ': [18, 30, 19, 20], ' assists ': [5, 7, 7, 9]}) print (df2) team points assists 0 to 18 5 1 B 30 7 2 C 19 7 3 E 20 9
例 1: DataFrame を比較し、差異のある行のみを保持する
次のコードは、2 つの DataFrame を行ごとに比較し、少なくとも 1 つの列に相違がある行のみを保持する方法を示しています。
#compare DataFrames and only keep rows with differences
df_diff = df1. compare (df2, keep_equal= True , align_axis= 0 )
#view results
print (df_diff)
team points
1 coil B 22
other B 30
3 choke D 14
other E 20
DataFrame に 2 つの異なる行があることがわかります。
特に、各 DataFrame のインデックス位置 1 と 3 の行の少なくとも 1 つの列に異なる値があることがわかります。
自身の行の値は最初の DataFrame の値を表示し、他の行の値は 2 番目の DataFrame の値を表示します。
たとえば、次のことがわかります。
- 最初のデータフレームのインデックス位置 1 の行には、チーム列にB 、ポイント列に22 が含まれています。
- 2 番目のデータフレームのインデックス位置 1 の行には、チーム列にB 、ポイント列に30 が含まれています。
注: keep_equal=True引数は、値を等しく保つようにパンダに指示します。それ以外の場合、等しい値は NaN として表示されます。
例 2:データフレームを比較してすべての行を保持する
次のコードは、 keep_shape=True引数を使用して 2 つの DataFrame を行ごとに比較し、元の DataFrame のすべての行を保持する方法を示しています。
#compare DataFrames and keep all rows
df_diff = df1. compare (df2, keep_equal= True , keep_shape= True , align_axis= 0 )
#view results
print (df_diff)
team points assists
0 choke A 18 5
other A 18 5
1 coil B 22 7
other B 30 7
2 choke C 19 7
other C 19 7
3 choke D 14 9
other E 20 9
結果の DataFrame には、元の DataFrame のすべての行と列が含まれます。
注 #1 : Compare()関数は、2 つの DataFrame が同じ次元を持つことを前提としています。
注 #2: pandas Compare()関数の完全なドキュメントは、ここで見つけることができます。
追加リソース
次のチュートリアルでは、パンダで他の一般的なタスクを実行する方法を説明します。
パンダ: 2 つの列を比較する方法
パンダ: 3 つの列を比較する方法
パンダ: 2 つの異なる DataFrame の列を比較する方法