Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】共通の列の値に基づいて2つのデータフレームをマージする方法

ここでは、次のような2つのデータフレームが存在すると仮定して説明します。

first dataframe is
 id country
0 1 India
1 2 UK
2 3 US
3 4 China

second dataframe is

 id City
0 1 Chennai
1 11 Cambridge
2 22 Chicago
3 4 Chengdu

共通の列「id」に基づいてマージを実行すると、結果は以下のようになります。

Merging data based on same column - id
 id country City
0 1 India Chennai
1 4 China Chengdu

解決策

この問題を解決するには、以下の手順に従います。

  • 2つのデータフレームを定義する

  • 共通の列「id」をキーとして、2つのデータフレームをマージする。具体的なコードは以下の通りです。

pd.merge(first_df, second_df, how='inner', on='id')

なお、how='inner' を指定すると内部結合(インナージョイン)となり、両方のデータフレームに存在する一致する行のみが出力されます。一致しない行は結果から除外されます。

実装例

より理解を深めるために、以下の実装例を見てみましょう。

import pandas as pd
import numpy as np
first_df = pd.DataFrame({'id':[1,2,3,4], 'country':['India','UK','US','China']
                        })
print("first dataframe is\n", first_df)
second_df = pd.DataFrame({'id':[1,11,22,4], 'City' : ['Chennai','Cambridge','Chicago','Chengdu']
                        })
print("second dataframe is\n", second_df)
print("Merging data based on same column - id")
print(pd.merge(first_df, second_df, how='inner', on='id'))

出力結果

first dataframe is
 id country
0 1 India
1 2 UK
2 3 US
3 4 China

second dataframe is
  id City
0 1 Chennai
1 11 Cambridge
2 22 Chicago
3 4 Chengdu

Merging data based on same column - id
 id country City
0 1 India Chennai
1 4 China Chengdu

このように、pd.merge() 関数を使えば、共通の列をキーとして簡単に2つのデータフレームを結合できます。id「1」と「4」は両方のデータフレームに存在するため、対応する国と都市の情報が組み合わされて出力されています。

  1. Pandasで既存のDataFrameに新しい列を追加する3つの方法

    はじめにこのチュートリアルでは、Pythonのデータ分析ライブラリ「pandas」において、既存のDataFrameに新しい列を追加する方法を解説します。新しい列を追加するアプローチは複数あり、それぞれに特徴があります。ここでは代表的な3つの方法を、コード例と実行結果とともに順番に見ていきましょう。方法1:リストを使って追加する最もシンプルなのが、Pythonのリストをそのまま列として代入する方法です。以下の手順で行います。手順辞書を使ってDataFrameを作成する。新しい列のデータを含むリストを作成する。リストの長さが、すでにDataFrame内にあるデータの行数と一致している必要がある点

  2. Pythonで2つの辞書(dict)をマージする方法【update()と**演算子】

    このチュートリアルでは、Pythonで2つの辞書(dict)を1つに結合する方法を解説します。辞書のマージにはいくつかの方法がありますが、ここでは代表的な2つの手法をサンプルコード付きで紹介します。 update()メソッドを使う方法 まずは、辞書に組み込まれているupdate()メソッドを使う方法です。update()メソッドは戻り値としてNoneを返し、呼び出し元の辞書そのものを直接更新して2つの辞書を1つにまとめます。具体的なプログラムを見てみましょう。 サンプルコード ## 辞書の初期化 fruits = {apple: 2, orange: 3, tangerine: 5} dr