

表形式のデータを扱うのに便利なpandas.DataFrame。
n行m列の表形式データを持つデータフレームだが、ときには2つのデータフレームの中のデータが全て一致しているかどうか確認したいこともある。
しかしどうやって比較すればよいのか。
そこで今回は2つのpandas.DataFrameが一致しているか比較する方法について紹介する。
この記事を書いている人

記事を読むメリット
2つのpandas.DataFrameが一致しているか比較する方法がわかり、pandasの比較が得意になる
2つのpandas.DataFrameが一致しているか比較する方法

2つのpandas.DataFrameが一致しているか比較するには equals() というメソッドを用いる。

== じゃダメなの?こう思う人もいるかと思うので、以下のデータを使って紹介する。
DATA
import pandas as pd
data_list1 = [
["a",12,100],
["b",12,105],
["c",12,90],
["d",13,85]
]
col_list1 = ["id","age","score"]
df1 = pd.DataFrame(data=data_list1, columns=col_list1)
print(df1)
# id age score
# 0 a 12 100
# 1 b 12 105
# 2 c 12 90
# 3 d 13 85
data_list2 = [
["a",12,100],
["b",12,105],
["c",12,90],
["d",13,85]
]
df2 = pd.DataFrame(data=data_list2, columns=col_list1)
print(df2)
# id age score
# 0 a 12 100
# 1 b 12 105
# 2 c 12 90
# 3 d 13 85
data_list3 = [
["aa",12,105],
["b",12,105],
["c",12,90],
["d",13,85]
]
df3 = pd.DataFrame(data=data_list3, columns=col_list1)
print(df3)
# id age score
# 0 aa 12 105
# 1 b 12 105
# 2 c 12 90
# 3 d 13 85
3つのデータフレーム df1,df2,df3 を用意し、df1とdf2の中身だけ同じにしてある。
比較演算子 "==" を使った場合

比較演算子 == でデータフレームを比較するとどうなるのか。
実際にやってみると以下のようになる。
SAMPLE
print(df1==df2) # id age score # 0 True True True # 1 True True True # 2 True True True # 3 True True True print(df1==df3) # id age score # 0 False True False # 1 True True True # 2 True True True # 3 True True True
比較演算子 == でデータフレームを比較すると、データフレーム単位の比較ではなく要素同士を比較したデータフレームが返ってくる。
これではデータフレームが一致しているかではなく、データフレームのどの要素が一致しているかの比較になってしまう。
equalsを使った場合

先に述べたが、データフレームを比較するなら equals() を使う。
使い方は以下のように使う。
SAMPLE
print(df1.equals(df2)) # True print(df1.equals(df3)) # False
df1.equals(df2) のように比較相手のデータフレームをメソッドの引数にする。
すると全ての要素が一致していれば True、ひとつでも違っていれば False が返ってくる。
まとめ

今回は2つのpandas.DataFrameが一致しているか比較する方法について解説した。
2つのpandas.DataFrameを比較するポイントは以下の通り。
ココがポイント
- データフレーム同士を比較したいなら
equals() - 比較演算子
==は要素同士の比較


他にもpandas関連の記事もあるので、もし気になったら見てみて欲しい。



