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

Python Pandas – DataFrameを1対1(one-to-one)の関係でマージする方法

Pandas DataFrameを1対1の関係でマージする

PandasのDataFrameをマージするには、merge()関数を使用します。1対1(one-to-one)の関係は、merge()関数のvalidateパラメータに次のように指定することで実現できます。

validate = "one_to_one"
# または
validate = "1:1"

validateパラメータに1対1を指定すると、マージキーが左右両方のデータセットで一意であるかどうかが検証されます。もし重複したキーが見つかった場合は、MergeErrorが発生してマージ処理が中断されるため、データの整合性を事前にチェックできるのが大きなメリットです。

まずは、1つ目のDataFrameを作成しましょう。

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

続いて、2つ目のDataFrameを作成します。

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

サンプルコード

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

#
# 1対1の関係でPandas 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', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
        "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
    }
)

print("\nDataFrame2 ...\n", dataFrame2)

# validateパラメータに"one_to_one"を指定してマージ
mergedRes = pd.merge(dataFrame1, dataFrame2, validate="one_to_one")
print("\n1対1の関係でマージされたDataFrame...\n", mergedRes)

出力結果

上記のコードを実行すると、次のような出力が得られます。

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

1対1の関係でマージされたDataFrame...
        Car  Units  Reg_Price
0      BMW    100       7000
1    Lexus    150       1500
2  Mustang     80       8000
3   Jaguar     90       6000

解説のポイント

この例では、両方のDataFrameに共通するキー列「Car」を基準にマージが行われています。デフォルトでは内部結合(inner join)となるため、両方のDataFrameに存在するBMW・Lexus・Mustang・Jaguarの4行だけが出力されています。一方、片方にしか存在しないAudi・Bentley・Tesla・Mercedesは結果から除外されます。

なお、validate="one_to_one"を指定しているため、仮にどちらかのDataFrameの「Car」列に重複した値が含まれていた場合、マージは実行されずエラーとなります。これにより、意図しないデータの増殖を防ぎ、安全に結合処理を行うことができます。

  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