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になります。