見出し画像

[Python] pandas 行を追加をappendメソッドからconcatメソッドに変更する

はじめに

2022/1/22にリリースされたpandas 1.4.0にて、DataFrame型、Series型で提供されているappendメソッドが非推奨となりました。
DataFrame型に行を追加する際、pandas.appendメソッドを使用していたコードがあるので、変更方法を検討していきます。

公式ドキュメントの確認

pandas 1.4.0のリリースノートの内容は、下記になります。

appendメソッドは非推奨になり、将来的には削除されます。代わりに、pandas.concatメソッドを使うことと、その推奨サンプルコードが記述されていました。このサンプルコードを参考に、置き換え方法を検討していきます。

動作環境

  • windows11

  • Jupyter Notebook 6.4.8

  • Python 3.8.12

pandas.concatメソッドへの置き換え前と置き換え後

置き換え前

空のDataFrame型のオブジェクトを作成し、条件が一致したら、appendメソッドで行を追加する、としていました。

import pandas as pd

columns = ['name', 'age', 'favorite']
df = pd.DataFrame(columns=columns)

name = 'Bob'
age = 25
favorite = 'apple'

df = df.append({'name':name, 'age': age, 'favorite': favorite}, ignore_index=True)

pandas 1.4.1で実行すると、下記のようにWarningが出ています。

置き換え後

各要素をリスト型のオブジェクトに追加しておき、そのリスト型から新しいDataFrameを生成します。次に生成した新しいDataFrameをpandas.concatメソッドで連結しました。

concatメソッドの第1引数は、連結したいDataFrameをリスト指定しています。今回は2つですが、複数しても可能です。

引数:axisでは、連結方向を指定できます。0は縦方向、1は横方向。デフォルト値は0(縦方向)のため、今回のように、行の連結に使用する場合、省略可能です。

引数:ignore_indexでは、連結後のインデックスを振りなおすかどうかの指定ができます。Trueにすると、インデックスを振りなおすを指定することができます。

name = 'Tom'
age = 32
favorite = 'orange'

list = [[name, age, favorite]]
df_append = pd.DataFrame(data=list, columns=columns)

df = pd.concat([df, df_append], ignore_index=True, axis=0)

実行して、追加したDataFrame型のオブジェクトを出力した結果は下記です。

なお、今回は、リストには1行のみ追加した例にしましたが、複数行をリストに追加した場合も、連結できていることを確認できました。

まとめ

今回は、2022/1/22にリリースされたpandas 1.4.0にて、appendメソッドが非推奨となったため、置き換えとして推奨されている、pandas.concatメソッドを使う場合の実装方法について検討しました。
pandas.concatメソッドは、横方向の連結で使用することが多かったのですが、行を追加するケースでも使用可能なことが分かり、使用する機会が増えそうです。


この記事が気に入ったらサポートをしてみませんか?