修正方法: 同じラベルが付いたシリアル オブジェクトのみを比較できます。
pandas の使用時に発生する可能性のあるエラーは次のとおりです。
ValueError : Can only compare identically-labeled DataFrame objects
このエラーは、2 つのパンダ データフレームを比較しようとしたときに、インデックス ラベルまたは列ラベルが完全に一致しない場合に発生します。
次の例は、このエラーを実際に修正する方法を示しています。
エラーを再現する方法
次の 2 つのパンダ DataFrame があると仮定します。
import pandas as pd #define DataFrames df1 = pd. DataFrame ({' points ': [25, 12, 15, 14], ' assists ': [5, 7, 13, 12]}) df2 = pd. DataFrame ({' points ': [25, 12, 15, 14], ' assists ': [5, 7, 13, 12]}, index=[3, 2, 1, 0]) #view DataFrames print (df1) assist points 0 25 5 1 12 7 2 15 13 3 14 12 print (df2) assist points 3 25 5 2 12 7 1 15 13 0 14 12
列ラベルは一致しますが、インデックス ラベルは一致しないことに注意してください。
2 つの DataFrame を比較しようとすると、エラーが発生します。
#attempt to compare the DataFrames
df1 = df2
ValueError : Can only compare identically-labeled DataFrame objects
エラーを修正する方法
このエラーを解決するために使用できる方法がいくつかあります。
方法 1: データフレームを比較する (インデックス ラベルを含む)
次の構文を使用して 2 つの DataFrame を比較し、(インデックス ラベルを含む) 完全に一致するかどうかを確認できます。
df1. equals (df2)
False
これは、2 つの DataFrame が (インデックス ラベルを含めて) 完全に一致していないことを示しています。
方法 2: データフレームを比較する (インデックス ラベルを無視する)
次の構文を使用すると、インデックス ラベルを完全に無視して 2 つの DataFrame を比較し、完全に一致するかどうかを確認できます。
df1. reset_index (drop= True ). equals ( df2.reset_index (drop= True ))
True
これは、2 つの DataFrame が完全に一致していることを示しています (インデックス ラベルは無視します)。
方法 3: DataFrame を行ごとに比較する
次の構文を使用して 2 つの DataFrame を行ごとに比較し、どの行の値が一致するかを確認できます。
df1. reset_index (drop= True ) == df2. reset_index (drop= True )
assist points
0 True True
1 True True
2 True True
3 True True
これにより、各行でどの値が一致するかを確認できます。
追加リソース
次のチュートリアルでは、Python の他の一般的なエラーを修正する方法を説明します。
パンダの KeyError を修正する方法
修正方法: ValueError: float NaN を int に変換できません
修正方法: ValueError: オペランドをシェイプでブロードキャストできませんでした