パンダ: 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 の列を比較する方法

コメントを追加する

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