logo

Python – Pandas で 2 つのデータフレームを結合するにはどうすればよいですか?

現実の多くの状況では、使用したいデータは複数のファイルで提供されます。データを分析するために、これらのファイルを 1 つの DataFrame に結合する必要がよくあります。 Pandas は、結合 / マージ タイプの操作の場合、インデックスやリレーショナル代数機能用のさまざまな種類のセット ロジックとシリーズまたはデータフレームを簡単に組み合わせるための機能を提供します。複数のテーブルのデータを結合することもできます。 パンダ 。さらに、パンダは 2 つのシリーズまたはデータフレームを比較し、それらの違いを要約するユーティリティも提供します。

Pandas での DataFrame の連結

Pandas の concat() 関数は、ある DataFrame から別の DataFrame に列または行を追加するために使用されます。の パンダの concat() 関数 他の軸上でインデックス (存在する場合) のオプションのセット ロジック (和集合または交差) を実行しながら、軸に沿って連結操作を実行するという重労働をすべて実行します。



Python3








import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> frames>=> [df1, df2]> result>=> pd.concat(frames)> display(result)>

>

>

出力:

    id Name  0 A01 ABC 1 A02 PQR 2 A03 DEF 3 A04 GHI 0 B05 XYZ 1 B06 TUV 2 B07 MNO 3 B08 JKL>

Pandas での DataFrame の結合

DataFrame を連結するときは、単に DataFrame を相互に追加するだけです。つまり、DataFrame を垂直方向または横方向に積み重ねます。 DataFrame を結合するもう 1 つの方法は、共通の値 (共通の一意の ID) を含む各データセット内の列を使用することです。共通フィールドを使用して DataFrame を結合することを結合と呼びます。共通の値を含む列は結合キーと呼ばれます。この方法で DataFrame を結合すると、一方の DataFrame が、もう一方の DataFrame に含めたい追加データを含むルックアップ テーブルである場合に便利です。

注記: テーブルを結合するこのプロセスは、テーブルを結合するプロセスと似ています。 SQLデータベース

複数の DataFrame を結合する場合、(連結されている軸以外の) 他の軸を処理する方法を選択できます。これは次の 2 つの方法で実行できます。

  • それらすべてを結合して、join='outer' とします。これは情報損失がゼロであるため、デフォルトのオプションです。
  • 交差点を進み、join='inner' と入力します。

例: concat() メソッドを使用した 2 つのデータフレームの内部結合

この例では、2 つのパンダ DataFrames、df1>そしてdf3>、インデックスに基づいて内部結合を使用して連結されます。結果として得られる「result」という名前のデータフレームには、「id」列が含まれる行のみが含まれます。df1>の「City」列と一致しますdf3>

Python3


スキャナJavaをインポートする



import> pandas as pd> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> df3>=> pd.DataFrame({>'City'>: [>'MUMBAI'>,>'PUNE'>,>'MUMBAI'>,>'DELHI'>],> >'Age'>: [>'12'>,>'13'>,>'14'>,>'12'>]})> # the default behaviour is join='outer'> # inner join> result>=> pd.concat([df1, df3], axis>=>1>, join>=>'inner'>)> display(result)>

>

>

出力:

  id Name City Age  0 A01 ABC MUMBAI 12 1 A02 PQR PUNE 13 2 A03 DEF MUMBAI 14 3 A04 GHI DELHI 12>

append()関数を使用した連結

concat() への便利なショートカットは、Series および DataFrame の append() インスタンス メソッドです。このメソッドは、Pandas の複数のテーブルのデータを結合するために使用できます。これらのメソッドは、実際には concat よりも前から存在していました。

例 1: append() メソッドを使用した 2 つのデータフレームの結合

この例では、2 つの Pandas DataFrames、df1>そしてdf2>、を使用して結合されます。append>メソッドを実行すると、「result」という名前の新しいデータフレームが生成されます。結果の DataFrame には、両方の行がすべて含まれます。df1>そしてdf2>、連続インデックス付き。

サンプルJavaコード

Python3




import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> # append method> result>=> df1.append(df2)> display(result)>

>

>

出力:

   id Name  0 A01 ABC 1 A02 PQR 2 A03 DEF 3 A04 GHI 0 B05 XYZ 1 B06 TUV 2 B07 MNO 3 B08 JKL>

注記: append() は、複数のオブジェクトを連結することができます。

例 2: Pandas の複数のテーブルのデータを結合する

この例では、3 つの Pandas DataFrames、df1>df2>、 そしてdf3>、を使用して一緒に追加されます。append>方法。結果として得られる「result」という名前のデータフレームは、3 つのデータフレームのすべての行を結合し、連続インデックスを維持します。

Python3




import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> df3>=> pd.DataFrame({>'City'>: [>'MUMBAI'>,>'PUNE'>,>'MUMBAI'>,>'DELHI'>],> >'Age'>: [>'12'>,>'13'>,>'14'>,>'12'>]})> # appending multiple DataFrame> result>=> df1.append([df2, df3])> display(result)>

>

>

出力:

   id Name City Age  0 A01 ABC NaN NaN 1 A02 PQR NaN NaN 2 A03 DEF NaN NaN 3 A04 GHI NaN NaN 0 B05 XYZ NaN NaN 1 B06 TUV NaN NaN 2 B07 MNO NaN NaN 3 B08 JKL NaN NaN 0 NaN NaN MUMBAI 12 1 NaN NaN PUNE 13 2 NaN NaN MUMBAI 14 3 NaN NaN DELHI 12>