logo

パンダの DataFrame.merge()

パンダ マージ() 2 つのデータセットを 1 つにまとめ、共通の属性または列に基づいて行を配置するプロセスとして定義されます。これは、DataFrame オブジェクト間のすべての標準データベース結合操作のエントリ ポイントです。

構文:

 pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True) 

パラメーター:

    右: データフレームまたは名前付きシリーズ
    DataFrameとマージするオブジェクトです。どうやって: {'left', 'right', 'outer', 'inner'}、デフォルトの 'inner'
    実行されるマージのタイプ。
      左:SQL の左外部結合と同様に、左フレームのキーのみを使用します。キーの順序を保持します。右:SQL の右外部結合と同様に、右フレームのキーのみを使用します。キーの順序を保持します。外側:SQL の完全外部結合と同様に、両方のフレームのキーの結合を使用しました。キーを辞書順に並べ替えます。内側:SQL 内部結合と同様に、両方のフレームのキーの共通部分を使用します。左のキーの順序を保持します。
    の上: ラベルまたはリスト
    結合する列またはインデックス レベルの名前です。これは、左側と右側の両方の DataFrame で見つかる必要があります。 on が None で、インデックスをマージしない場合、これはデフォルトで両方の DataFrame の列の交差部分になります。
    左上: ラベル、リスト、または配列のような
    キーとして使用する左の DataFrame からの列またはインデックス レベルの名前です。 DataFrame の長さと同じ長さの配列を指定できます。右に: ラベル、リスト、または配列のような
    これは、キーとして使用する正しいデータフレームの列またはインデックス レベルの名前です。 DataFrame の長さと同じ長さの配列を指定できます。left_index : ブール値、デフォルトは False
    true の場合、左側のデータフレームのインデックスを結合キーとして使用します。 MultiIndex (階層型) の場合、他の DataFrame の多くのキー (インデックスまたは一部の列) がレベルの数と一致する必要があります。right_index : ブール値、デフォルトは False
    右側のデータフレームのインデックスを結合キーとして使用します。使い方は left_index と同じです。選別: ブール値、デフォルトは False
    True の場合、結果の DataFrame で結合キーを辞書順に並べ替えます。それ以外の場合、結合キーの順序は結合タイプ (how キーワード) によって決まります。接尾辞: (str, str) のタプル、デフォルト ('_x', '_y')
    それぞれ左側と右側の DataFrame の列名に重なるように適用するサフィックスです。列は (False、False) 値を使用して、重複時に例外を発生させます。コピー: ブール値、デフォルトは True
    True の場合、DataFrame のコピーを返します。
    そうしないと、コピーを回避できます。インジケータ: bool または str、デフォルトは False
    True の場合、出力 DataFrame に列を追加します。 _マージ ' には各行のソースに関する情報が含まれます。文字列の場合、各行のソースに関する情報を含む列が出力データフレームに追加され、その列には文字列の名前が付けられます。情報列はカテゴリ型として定義され、次の値を取ります。
      '左のみ'マージキーがデータフレームの「左側」にのみ現れる観測の場合、'右のみ'マージキーがデータフレームの「右側」にのみ現れる観測に対して定義されています。'両方'観測のマージキーが両方に見つかった場合。
    検証: str、オプション
    指定されている場合は、以下に示すマージ タイプがチェックされます。
    • 「one_to_one」または「1:1」: マージ キーが左右のデータセットの両方で一意であるかどうかを確認します。
    • 'one_to_many' または '1:m': マージ キーが左側のデータセットのみで一意であるかどうかを確認します。
    • 'many_to_one' または 'm:1': マージ キーが正しいデータセット内でのみ一意であるかどうかを確認します。
    • 'many_to_many' または 'm:m': 許可されますが、チェックは行われません。

例1: キー上の 2 つの DataFrame をマージする

 # import the pandas library import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4], 'Name': ['John', 'Parker', 'Smith', 'Parker'], 'subject_id':['sub1','sub2','sub4','sub6']}) right = pd.DataFrame({ 'id':[1,2,3,4], 'Name': ['William', 'Albert', 'Tony', 'Allen'], 'subject_id':['sub2','sub4','sub3','sub6']}) print (left) print (right) 

出力

 id Name subject_id 0 1 John sub1 1 2 Parker sub2 2 3 Smith sub4 3 4 Parker sub6 id Name subject_id 0 1 William sub2 1 2 Albert sub4 2 3 Tony sub3 3 4 Allen sub6 

例 2: 複数のキー上の 2 つの DataFrame をマージします。

 import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print pd.merge(left,right,on='id') 

出力

 id Name_x subject_id_x Name_y subject_id_y 0 1 John sub1 William sub2 1 2 Parker sub2 Albert sub4 2 3 Smith sub4 Tony sub3 3 4 Parker sub6 Allen sub6