表形式のデータを扱うのに便利な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関連の記事もあるので、もし気になったら見てみて欲しい。