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

【Python・Pandas】merge()関数のindicator引数を使ってDataFrameを結合し、データの所在を確認する方法

Pandasのmerge()関数とindicator引数とは

Pandasで2つのDataFrameを結合(マージ)するには、merge()関数を使用します。この関数にはindicatorという引数があり、TrueまたはFalseを指定できます。

「あるレコードがどちらのDataFrameに存在するのか」を確認したい場合は、indicatorをTrueに設定しましょう。

indicator=True

indicator=Trueを指定すると、出力されるDataFrameに「_merge」という名前の列が自動的に追加されます。この列には、各レコードの出所を示す以下の値が格納されます。

  • both:両方のDataFrameに存在するレコード
  • left_only:左側のDataFrameのみに存在するレコード
  • right_only:右側のDataFrameのみに存在するレコード

準備:Pandasライブラリのインポート

まず、エイリアス(pd)を付けてPandasライブラリをインポートします。

import pandas as pd

DataFrame1の作成

車種と販売台数を含むDataFrameを作成します。

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

DataFrame2の作成

次に、車種と登録価格を含む別のDataFrameを作成します。

dataFrame2 = pd.DataFrame(
   {
      "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
      "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
   }
)

indicator=Trueを指定してマージする

結合方法(how)を「left」(左外部結合)に設定し、indicatorをTrueにしてマージを実行します。

# indicator値を指定してDataFrameをマージ
mergedRes = pd.merge(dataFrame1, dataFrame2, how="left", indicator=True)

サンプルコード全体

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

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', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
      "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
   }
)
print("\nDataFrame2 ...\n", dataFrame2)

# indicator値を指定してDataFrameをマージ
mergedRes = pd.merge(dataFrame1, dataFrame2, how="left", indicator=True)
print("\nMerged dataframe...\n", mergedRes)

実行結果

上記のコードを実行すると、以下のような出力が得られます。「_merge」列の値が「both」になっている行は、そのレコードが両方のDataFrameに存在することを示しています。一方、「left_only」となっている行は左側のDataFrameにしか存在せず、対応するReg_Priceの値はNaN(欠損値)になっています。

DataFrame1 ...
        Car   Units
0      BMW     100
1    Lexus     150
2     Audi     110
3  Mustang      80
4  Bentley     110
5   Jaguar      90

DataFrame2 ...
        Car  Reg_Price
0      BMW       7000
1    Lexus       1500
2    Tesla       5000
3  Mustang       8000
4 Mercedes       9000
5   Jaguar       6000

Merged dataframe...
        Car  Units  Reg_Price    _merge
0      BMW    100     7000.0      both
1    Lexus    150     1500.0      both
2     Audi    110         NaN  left_only
3  Mustang     80     8000.0      both
4  Bentley    110         NaN  left_only
5   Jaguar     90     6000.0      both

まとめ

merge()関数のindicator引数をTrueに設定すると、「_merge」列が追加され、各レコードがどちらのDataFrame由来なのかを簡単に把握できます。データの突合や差分チェックなど、2つのデータセットを比較・検証する場面で非常に便利な機能です。

  1. PythonのMatplotlibでPandas DataFrameのヒストグラムを描画する方法

    ヒストグラムとは、データの分布を視覚的に表現したグラフです。PandasのDataFrameからヒストグラムを作成するには、Matplotlibのhist()メソッドを使用します。この記事では、具体的なコード例とともに、その手順をわかりやすく解説します。必要なライブラリのインポートまず、PandasとMatplotlibの2つのライブラリをインポートします。import pandas as pd import matplotlib.pyplot as pltDataFrameの作成次に、「Car(車名)」と「Reg_Price(登録価格)」の2つの列を持つDataFrameを作成します。dat

  2. Python Pandas入門:DataFrame内のNaN(欠損値)を0に置き換える方法

    PandasのDataFrameに含まれるNaN(欠損値)を0に置き換えるには、fillna()メソッドを使用します。このメソッドは、データクレンジングや前処理の際に非常によく使われる基本的なテクニックです。例として、以下のようなCSVファイル(Microsoft Excelで開いた状態)があるとします。このデータには一部NaN値が含まれています。手順1:必要なライブラリをインポートするまず、Pandasライブラリをインポートします。import pandas as pd手順2:CSVファイルからDataFrameを読み込む次に、read_csv()メソッドを使ってCSVファイルのデータをDa