Python
 Computer >> コンピューター >  >> プログラミング >> Python

【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()との組み合わせも検討するとよいでしょう。
  1. 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になれば、そ

  2. 【初心者向け】Pythonで2つのリストの差分(違い)を抽出する方法を解説

    この記事では、2つのリストが与えられたときに、その差分(違い)を表示するPythonプログラムを紹介します。Pythonにはset()メソッドが用意されており、ここではこのメソッドを活用します。 セット(集合)とは、重複する要素を持たない順序なしのコレクションです。セットオブジェクトは、和集合・積集合・差集合・対称差といった数学的な操作もサポートしているため、リスト同士の比較に非常に便利です。 実行例 入力: A = [10, 15, 20, 25, 30, 35, 40] B = [25, 40, 35] 出力: [10, 20, 30, 15] 考え方 求めたい差分リストは、次のよう