Python Pandas入門:merge()で2つのDataFrameの共通行を抽出する方法
merge()で共通の行を取得する基本
Pandasのmerge()メソッドを使って2つのDataFrame(データフレーム)間の共通する行を検索するには、パラメータ「how」に「inner」を指定します。「inner」はSQLの内部結合(INNER JOIN)と同じ働きをするため、両方のDataFrameに存在する行だけを抽出したい場合に最適です。
DataFrame1の作成
まず、「Car」(車名)と「Reg_Price」(登録価格)という2つの列を持つDataFrame1を作成します。
dataFrame1 = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Tesla', 'Bentley', 'Jaguar'],
"Reg_Price": [1000, 1500, 1100, 800, 1100, 900]
}
)
DataFrame2の作成
次に、同じく2つの列を持つDataFrame2を作成します。一部の車はDataFrame1と登録価格が異なっています。
dataFrame2 = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Tesla', 'Bentley', 'Jaguar'],
"Reg_Price": [1200, 1500, 1000, 800, 1100, 1000]
}
)
共通の行を検索するコード
merge()に how='inner' を指定して呼び出すだけで、共通の行を取得できます。indicator=False は、各行の出所を示す補助列を作成しない設定です。
dataFrame1.merge(dataFrame2, how='inner', indicator=False)
サンプルコード全体
以下に、一連の処理をまとめた完全なコードを示します。
import pandas as pd
# DataFrame1を作成
dataFrame1 = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Tesla', 'Bentley', 'Jaguar'],
"Reg_Price": [1000, 1500, 1100, 800, 1100, 900]
}
)
print("DataFrame1 ...\n", dataFrame1)
# DataFrame2を作成
dataFrame2 = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Tesla', 'Bentley', 'Jaguar'],
"Reg_Price": [1200, 1500, 1000, 800, 1100, 1000]
}
)
print("\nDataFrame2 ...\n", dataFrame2)
# 2つのDataFrame間の共通の行を検索
resData = dataFrame1.merge(dataFrame2, how='inner', indicator=False)
print("\nCommon rows between two DataFrames...\n", resData)
実行結果
上記のコードを実行すると、以下のような出力が得られます。
DataFrame1 ...
Car Reg_Price
0 BMW 1000
1 Lexus 1500
2 Audi 1100
3 Tesla 800
4 Bentley 1100
5 Jaguar 900
DataFrame2 ...
Car Reg_Price
0 BMW 1200
1 Lexus 1500
2 Audi 1000
3 Tesla 800
4 Bentley 1100
5 Jaguar 1000
Common rows between two DataFrames...
Car Reg_Price
0 Lexus 1500
1 Tesla 800
2 Bentley 1100
結果のポイント解説
この例では、両方のDataFrameで「Car」と「Reg_Price」の値が完全に一致している行のみが結果として残ります。BMW、Audi、Jaguarは価格が異なるため除外され、Lexus(1500)、Tesla(800)、Bentley(1100)の3行が共通行として抽出されました。
なお、howパラメータには「left」「right」「outer」「cross」なども指定でき、結合の挙動を柔軟に制御できます。また、indicator=True にすると、各行が左側・右側・両方のどれに存在するかを示す「_merge」列が追加されるため、データの確認やデバッグに便利です。
-
Python・Pandas DataFrameの統計サマリーを取得する方法
Pandas DataFrameの統計サマリーとはDataFrameの要約統計量(統計サマリー)を取得するには、describe()メソッドを使用します。このメソッドを呼び出すだけで、件数(count)、平均値(mean)、標準偏差(std)、最小値(min)、四分位数(25%・50%・75%)、最大値(max)といった主要な統計情報を一括して確認できます。1. pandasライブラリのインポートまず、以下のようにpandasライブラリをエイリアス「pd」付きでインポートします。import pandas as pd2. CSVファイルからDataFrameを作成次に、read_csv()メソ
-
Python Pandas・Seabornのswarmplotで2つのカテゴリ変数を使ってデータをグループ化する方法
Seabornのスウォームプロット(Swarm Plot)は、点が重ならないように配置されたカテゴリ別散布図を描画するための機能です。この描画には seaborn.swarmplot() を使用します。スウォームを2つのカテゴリ変数でグループ化したい場合は、swarmplot() の x、y、または hue パラメータにそれらの変数を指定します。 ここでは、CSVファイル「Cricketers2.csv」に保存されたデータセットを例に説明します。 必要なライブラリのインポート まず、必要なライブラリをインポートします。 import seaborn as sb import pandas as