【Pandas】DataFrameの内容が同一か比較する

Pandasの2つのDataFrameオブジェクトの内容が全く同じかどうか比較する方法を解説します。この記事では次の2つの方法でDataFrameを比較します。

DataFrameを比較する2つの方法
  • equals()メソッドによる比較
  • == 演算子による比較

2つのDataFrameオブジェクトの内容が同じか知りたいだけならequals()メソッドを使います。要素ごとに比較したいなら== 演算子を使います。

では実際にそれぞれの方法で実行した結果を確認してみましょう。

目次

比較用のDataFrameオブジェクトの準備

比較用に次の3つのDataFrameオブジェクトを準備します。

In [1]: import pandas as pd

In [2]: import numpy as np

In [3]: df1 = pd.DataFrame(np.arange(9).reshape((3, 3)))

In [4]: df2 = pd.DataFrame(np.arange(9).reshape((3, 3)))

In [5]: df3 = pd.DataFrame(np.arange(9).reshape((3, 3)))

In [6]: df3[df3 > 3] = 10

In [7]: df1
Out[7]: 
   0  1  2
0  0  1  2
1  3  4  5
2  6  7  8

In [8]: df2
Out[8]: 
   0  1  2
0  0  1  2
1  3  4  5
2  6  7  8

In [9]: df3
Out[9]: 
    0   1   2
0   0   1   2
1   3  10  10
2  10  10  10

内容の同じ3つのDataFrameオブジェクトを作成し、df3だけ内容を修正しました。

equals()メソッドによる比較

2つのDataFrameオブジェクトの内容が同じかどうか比較するにはequals()メソッドを使います。

In [10]: df1.equals(df2)
Out[10]: True

In [11]: df1.equals(df3)
Out[11]: False

equals()メソッドは内容が同じであれば True 、そうでなければFalseを返します。

== 演算子による比較

一方、== 演算子による比較はDataFrameの要素ごとに比較を実施します。

In [12]: df1 == df2
Out[12]: 
      0     1     2
0  True  True  True
1  True  True  True
2  True  True  True

In [13]: df1 == df3
Out[13]: 
       0      1      2
0   True   True   True
1   True  False  False
2  False  False  False

このように要素ごとに比較した結果をDataFrameで返します。

まとめ

DataFrameの内容が同じかどうか比較したいだけの場合はequals()メソッドを使います。なお、2つの変数が同一のオブジェクトを参照しているか確認するには次のように is を使います。

In [16]: df4 = df1

In [17]: df1 is df4
Out[17]: True

In [18]: df1 is df2
Out[18]: False

df1とdf4は同じオブジェクトを参照しているのでTrueになります。df1とdf2は異なるオブジェクトを参照しているのでFalseになります。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

・PM、SE、SIなどを20年以上経験
・ネットワークスペシャリスト、セキュリティスペシャリストなど複数の資格を保有

目次