一致する列に基づいて欠落値を追加するためのデータフレームのマージ
指定されたシナリオの目標は、2 つのデータフレーム df1 と df1 をマージすることです。 df2、「名前」列に基づく。ただし、望ましい出力は、df1 からの情報を保持し、df2 からの欠損値を NaN で埋めることです。結果は次のようになります。
Name Age Sex 0 Tom 34 M 1 Sara 18 NaN 2 Eva 44 F 3 Jack 27 M 4 Laura 30 NaN
方法 1: set_index によって作成されたシリーズによるマップを使用する
このアプローチでは、Name 列を設定して df2 からシリーズを作成します。インデックスとして。次に、map() メソッドを使用して、df1 の Sex 値を照合して入力します。
<code class="python">df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex']) print(df1)</code>
方法 2: 左結合を使用したマージによる代替ソリューション
An別の解決策は、左結合アプローチを使用して df1 と df2 をマージすることです。これにより、df1 のすべての行が保持され、df2 の欠損値が NaN で埋められるようになります。
<code class="python">df = df1.merge(df2[['Name', 'Sex']], on='Name', how='left') print(df)</code>
方法 3: 左結合でマージを使用した複数の列によるマッピング
マージに複数の列が必要な場合 (名前と年、コードなど)、目的の列を指定して左結合でマージを使用します。
<code class="python"># Merge by all columns df = df1.merge(df2, on=['Year', 'Code'], how='left') # Merge by specified columns df = df1.merge(df2[['Year', 'Code', 'Val']], on=['Year', 'Code'], how='left')</code>
重複キーによるエラーの処理
場合によっては、重複する Name 値が存在し、エラーが発生することがあります。これを解決するには、重複を削除するか、辞書ベースのマッピングを使用して、最後に一致した値が選択されるようにすることを検討してください。
<code class="python"># Remove duplicates and create a Series for mapping s = df2.drop_duplicates('Name').set_index('Name')['Val'] df1['New'] = df1['Name'].map(s)</code>
これらの方法のいずれかを採用することで、プライマリからの情報を保持しながら、データフレームを効果的にマージできます。データフレームと欠損値を NaN で埋めます。
以上がデータフレームをマージして、一致する列に基づいて欠損値を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。