ホームページ > バックエンド開発 > Python チュートリアル > 最初のデータフレームの情報を保持しながら、列に基づいてデータフレームをマージする方法

最初のデータフレームの情報を保持しながら、列に基づいてデータフレームをマージする方法

Mary-Kate Olsen
リリース: 2024-10-31 05:17:02
オリジナル
1039 人が閲覧しました

How to Merge DataFrames Based on a Column, Preserving the First DataFrame's Information?

最初のデータフレームの情報を保持しながら、列に基づいてデータフレームをマージする方法

重複しているが同一ではない行を持つ 2 つのデータフレームがある場合、特定のデータフレームに基づいてそれらをマージできます。列に情報を追加します。この場合、2 つのデータフレーム df1 と df2 をマージする必要があります。df1 には年齢に関する情報が含まれ、df2 には性別に関する情報が含まれます。最初のデータフレームの情報を保持しながらそれを行う方法は次のとおりです。

解決策

データフレームをマージして最初のデータフレームの情報を保持するには、set_index によって作成されたシリーズとともにマップ関数を使用します。

<code class="python">df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex'])</code>
ログイン後にコピー

向け例:

<code class="python">df1 = pd.DataFrame({'Name': ['Tom', 'Sara', 'Eva', 'Jack', 'Laura'], 
                     'Age': [34, 18, 44, 27, 30], 
                     'Sex': None})

df2 = pd.DataFrame({'Name': ['Tom', 'Paul', 'Eva', 'Jack', 'Michelle'], 
                     'Sex': ['M', 'M', 'F', 'M', 'F']})

df1['Sex'] = df1['Name'].map(df2.set_index('Name')['Sex'])

print(df1)</code>
ログイン後にコピー

出力:

   Name  Age Sex
0   Tom  34   M
1  Sara  18  NaN
2   Eva  44   F
3  Jack  27   M
4 Laura  30  NaN
ログイン後にコピー
ログイン後にコピー

代替ソリューション

同じ結果を達成する別の方法は、左側のメソッドを使用してデータフレームをマージすることです。 join:

<code class="python">df = df1.merge(df2[['Name', 'Sex']], on='Name', how='left')</code>
ログイン後にコピー

例:

<code class="python">df = df1.merge(df2[['Name', 'Sex']], on='Name', how='left')

print(df)</code>
ログイン後にコピー

出力:

   Name  Age Sex
0   Tom  34   M
1  Sara  18  NaN
2   Eva  44   F
3  Jack  27   M
4 Laura  30  NaN
ログイン後にコピー
ログイン後にコピー

複数の結合列の処理

複数の結合列をマージする必要がある場合列の場合は、追加の結合列と同じ左結合アプローチを使用します。指定:

<code class="python">df = df1.merge(df2[['Name', 'Sex', 'Year', 'Code']], on=['Year', 'Code'], how='left')</code>
ログイン後にコピー

エラー処理: 重複した結合列

重複した結合列が原因でエラーが発生した場合は、重複を削除するか、マッピングにディクショナリを使用して処理します。

以上が最初のデータフレームの情報を保持しながら、列に基づいてデータフレームをマージする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート