ホームページ  >  記事  >  バックエンド開発  >  データフレームをマージして、一致する列に基づいて欠損値を追加するにはどうすればよいですか?

データフレームをマージして、一致する列に基づいて欠損値を追加するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-29 12:50:29268ブラウズ

How to merge dataframes to append missing values based on a matching column?

一致する列に基づいて欠落値を追加するためのデータフレームのマージ

指定されたシナリオの目標は、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。