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