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

【Pandas】2つのDataFrameを連結・追加する方法をわかりやすく解説

Pandasでは、あるデータフレームの行を別のデータフレームに追加(連結)する際に、append()メソッドを使用できます。append()を使うと、行だけでなく列の追加も可能です。この記事では、具体的なサンプルコードを通じて、このメソッドの基本的な使い方と注意点を解説します。

補足: append()メソッドはPandas 1.4で非推奨となり、Pandas 2.0以降では削除されています。最新の環境ではpd.concat()関数の使用が推奨されるため、記事の最後でその代替方法も紹介します。

手順

  • 2次元のサイズ可変な表形式データとして、データフレームdf1を作成します。
  • 入力データフレームdf1を出力して内容を確認します。
  • 同じ列名を持つ別のデータフレームdf2を作成し、出力します。
  • df1.append(df2, ignore_index=True)のようにappend()メソッドを呼び出し、df2の行をdf1に追加します。
  • 結果のデータフレームを出力します。

サンプルコード

import pandas as pd

df1 = pd.DataFrame({"x": [5, 2], "y": [4, 7], "z": [9, 3]})
df2 = pd.DataFrame({"x": [1, 3], "y": [1, 9], "z": [29, 30]})

print("入力データフレーム1:\n", df1)
print("入力データフレーム2:\n", df2)

df3 = df1.append(df2, ignore_index=True)

print("追加後のデータフレーム:\n", df3)

実行結果

入力データフレーム1:
   x  y  z
0  5  4  9
1  2  7  3

入力データフレーム2:
   x  y   z
0  1  1  29
1  3  9  30

追加後のデータフレーム:
   x  y   z
0  5  4   9
1  2  7   3
2  1  1  29
3  3  9  30

ignore_index=Trueを指定することで、連結後のインデックスが自動的に0から振り直され、行がきれいに追加されていることがわかります。

列名が異なる場合の挙動

次に、列名が異なるデータフレーム同士でappend()を使用し、ignore_indexパラメータを指定しない場合の動作を確認してみましょう。ignore_indexのデフォルト値はFalseです。

import pandas as pd

df1 = pd.DataFrame({"x": [5, 2], "y": [4, 7], "z": [9, 3]})
df2 = pd.DataFrame({"a": [1, 3], "b": [1, 9], "c": [29, 30]})

print("入力データフレーム1:\n", df1)
print("入力データフレーム2:\n", df2)

df3 = df1.append(df2)

print("追加後のデータフレーム:\n", df3)

実行結果

入力データフレーム1:
   x  y  z
0  5  4  9
1  2  7  3

入力データフレーム2:
   a  b   c
0  1  1  29
1  3  9  30

追加後のデータフレーム:
     x    y    z    a    b     c
0  5.0  4.0  9.0  NaN  NaN   NaN
1  2.0  7.0  3.0  NaN  NaN   NaN
0  NaN  NaN  NaN  1.0  1.0  29.0
1  NaN  NaN  NaN  3.0  9.0  30.0

列名が一致しない場合、両方のデータフレームのすべての列が統合され、対応するデータが存在しない部分はNaN(欠損値)で埋められます。また、ignore_indexを指定していないため、元のインデックス(0と1)がそれぞれ保持されている点にも注意してください。

補足:pd.concat()を使った現代的な書き方

Pandas 2.0以降の環境では、append()の代わりにpd.concat()関数を使用します。先ほどの最初の例は、以下のように書き換えられます。

df3 = pd.concat([df1, df2], ignore_index=True)

pd.concat()はリスト形式で複数のデータフレームを受け取れるため、3つ以上のデータフレームを一度に連結できる点でも柔軟性があります。列名が異なる場合の挙動もappend()と同様に、欠損部分がNaNで埋められます。

  1. PythonでpandasのDataFrameをCSVファイルに書き込む方法【to_csv()の使い方】

    pandasのDataFrameをCSVファイルに出力する基本 PythonでpandasのDataFrameをCSVファイルに書き込むには、to_csv()メソッドを使用します。このメソッドは、DataFrameの内容をそのままCSV形式で保存できる、最もシンプルで一般的な方法です。 まずはサンプルデータとして、リストを値にもつ辞書を作成しましょう。 # リストの辞書を定義 d = {Car: [BMW, Lexus, Audi, Mercedes, Jaguar, Bentley], Date_of_purchase: [2020-10-10, 2020-10-12, 2020-

  2. 【Python入門】MatplotlibでPandasデータフレームを可視化する方法(折れ線グラフ・円グラフ・ヒストグラム)

    Pandasのデータフレーム(DataFrame)は、Matplotlibと組み合わせることで、折れ線グラフ・円グラフ・ヒストグラムなど、さまざまな種類のグラフを簡単に描画できます。まずは、PandasとMatplotlibのライブラリをインポートしましょう。import pandas as pd import matplotlib.pyplot as pltそれでは、実際に各グラフの描画方法を見ていきましょう。折れ線グラフの描き方サンプルコード以下は、2列のデータを持つデータフレームから折れ線グラフを作成するコードです。import pandas as pd import matplotli