修正方法: 同じラベルが付いたシリアル オブジェクトのみを比較できます。


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: オペランドをシェイプでブロードキャストできませんでした

コメントを追加する

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