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

Python Pandasで2つのDataFrameの特定の列が等しいかどうかを確認する方法

はじめに

Pandasでは、2つのDataFrameの特定の列が等しいかどうかを確認するために、equals()メソッドを使用します。このメソッドは、比較対象の要素がすべて一致していれば True を、1つでも異なれば False を返します。

まず、2つの列(「Car」と「Units」)を持つDataFrame1を作成してみましょう。

import pandas as pd

dataFrame1 = pd.DataFrame(
   {
      "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
      "Units": [100, 150, 110, 80, 110, 90]
   }
)

次に、同じ構造を持つDataFrame2を作成します。

dataFrame2 = pd.DataFrame(
   {
      "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
      "Units": [100, 150, 110, 80, 110, 90]
   }
)

特定の列の等価性を確認する

例として、「Units」列が両方のDataFrameで等しいかどうかを確認するには、以下のように記述します。

dataFrame1['Units'].equals(dataFrame2['Units'])

equals()メソッドは、列同士だけでなくDataFrame全体の比較にも使用できます。比較する順序(どちらのオブジェクトに対して呼び出すか)は結果に影響しません。

サンプルコード

以下に完全なコード例を示します。

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)

# DataFrame全体の等価性を確認
print("\nAre both the DataFrame objects equal? ", dataFrame1.equals(dataFrame2))

# 特定の列「Units」の等価性を確認
print("\nAre both the DataFrames have similar Units column? ", dataFrame1['Units'].equals(dataFrame2['Units']))

実行結果

上記のコードを実行すると、以下の出力が得られます。

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

Are both the DataFrame objects equal? True

Are both the DataFrames have similar Units column? True

ポイントまとめ

  • equals()メソッドは、Series(列)やDataFrame全体の比較に使える。
  • 値・インデックス・データ型まで含めて厳密に比較されるため、NaNの扱いも一貫している。
  • 戻り値はブール値(True / False)なので、条件分岐にもそのまま利用できる。

  1. Pythonで2つの二分木の全レベルがアナグラムかどうかを判定する方法

    問題概要 2つの二分木が与えられたとき、片方の木の各レベルに含まれる値の集合が、もう片方の木の同じレベルの値のアナグラム(並べ替え)になっているかどうかを判定します。すべてのレベルがアナグラムであれば True を、そうでなければ False を返します。 例えば、次のような入力が与えられた場合を考えてみましょう。 この場合、出力は True になります。 解法のアプローチ この問題は、幅優先探索(BFS)を応用して解くことができます。各レベルごとにノードの値を収集し、ソートした上で比較するのがポイントです。手順は以下の通りです。 tree_1 を1つ目の木のルートノード、tree_2 を

  2. Pythonで2つの二分木の葉の並び(シーケンス)が同じかどうかを確認する方法

    はじめに2つの二分木が与えられたとき、それぞれの木を左から右へたどったときの葉ノードの並び(シーケンス)が一致しているかどうかを判定する問題を考えてみましょう。例えば、次のような2つの木が入力として与えられた場合を想定します。この場合、どちらの木も葉の並びは [2, 6] となるため、出力は True になります。解決のアプローチこの問題を解くためには、以下の手順に従います。結果を格納するための新しいリスト c を用意します。inorder() 関数を定義します。この関数はルートノードとリスト c を引数に取ります。c が null の場合は、新しい空のリストを作成します。ルートノードが nu