【Python・Pandas】2つのDataFrameの違いを見つける方法 – equals()で一致を判定
はじめに
PythonのPandasで2つのDataFrame(データフレーム)の違いを調べたい場合は、equals()メソッドを使って両者が等しいかどうかを確認します。データフレーム全体の比較だけでなく、特定の列同士が一致しているかどうかも個別にチェックできます。
この記事では、実際のコード例とその実行結果をもとに、DataFrameの比較方法をわかりやすく解説します。
サンプルデータの作成
DataFrame1を作成する
まず、「Car」と「Units」という2つの列を持つDataFrame1を作成します。
import pandas as pd
dataFrame1 = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
"Units": [100, 150, 110, 80, 110, 90]
}
)
DataFrame2を作成する
次に、同じ構造を持つDataFrame2を作成します。この例では両者はまったく同じ内容になっています。
dataFrame2 = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
"Units": [100, 150, 110, 80, 110, 90]
}
)
特定の列の一致を確認する
「Units」列だけが一致しているかどうかを確認するには、次のようにequals()を使用します。
dataFrame2['Units'].equals(dataFrame1['Units'])
戻り値として True(一致)または False(不一致)が返されます。
DataFrame全体の一致を確認する
2つのDataFrame全体が等しいかどうかは、以下のように比較できます。
dataFrame1.equals(dataFrame2)
完全なコード例
ここまでの内容をまとめたコードは以下のとおりです。
import pandas as pd
# DataFrame1を作成
dataFrame1 = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
"Units": [100, 150, 110, 80, 110, 90]
}
)
print("DataFrame1 ...\n", dataFrame1)
# DataFrame2を作成
dataFrame2 = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
"Units": [100, 150, 110, 80, 110, 90]
}
)
print("\nDataFrame2 ...\n", dataFrame2)
# 特定の列「Units」の一致を確認
print("\nBoth the DataFrames have similar Units column? ",
dataFrame2['Units'].equals(dataFrame1['Units']))
# DataFrame全体の一致を確認
print("\nAre both the DataFrames equal? ",
dataFrame1.equals(dataFrame2))
実行結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame1 ...
Car Units
0 BMW 100
1 Lexus 150
2 Audi 110
3 Mustang 80
4 Bentley 110
5 Jaguar 90
DataFrame2 ...
Car Units
0 BMW 100
1 Lexus 150
2 Audi 110
3 Mustang 80
4 Bentley 110
5 Jaguar 90
Both the DataFrames have similar Units column? True
Are both the DataFrames equal? True
このように、どちらのチェックでも True が返され、2つのDataFrameが完全に一致していることが確認できました。
equals()メソッドのポイント
equals()は、値だけでなくインデックスや列名も含めて比較します。そのため、順序やラベルが異なる場合はFalseになります。- 通常の比較演算子(
==)ではNaN同士は一致しないと判断されますが、equals()ではNaN同士も等しいものとして扱われます。 - 要素単位の差分を抽出したい場合は、
compare()メソッドやmerge()との組み合わせも検討するとよいでしょう。
-
Pythonで数値が2の累乗かどうかを判定するプログラム
本記事では、与えられた数値が2の累乗(べき乗)であるかどうかを判定する方法について、考え方と実装手順をわかりやすく解説します。 問題の定義 ある整数 n が与えられたとき、その数が2の累乗(1, 2, 4, 8, 16, …)であるかどうかを判定します。 アプローチ 判定には「繰り返し2で割る」というシンプルな方法を使います。考え方は以下の通りです。 入力された数値 n を、1になるまで繰り返し2で割っていきます(n = n // 2)。 割る過程で n % 2 の結果が0以外(奇数)になり、かつ n が1でない場合は、その数は2の累乗ではありません。 最終的に n がちょうど1になれば、そ
-
【初心者向け】Pythonで2つのリストの差分(違い)を抽出する方法を解説
この記事では、2つのリストが与えられたときに、その差分(違い)を表示するPythonプログラムを紹介します。Pythonにはset()メソッドが用意されており、ここではこのメソッドを活用します。 セット(集合)とは、重複する要素を持たない順序なしのコレクションです。セットオブジェクトは、和集合・積集合・差集合・対称差といった数学的な操作もサポートしているため、リスト同士の比較に非常に便利です。 実行例 入力: A = [10, 15, 20, 25, 30, 35, 40] B = [25, 40, 35] 出力: [10, 20, 30, 15] 考え方 求めたい差分リストは、次のよう