![見出し画像](https://assets.st-note.com/production/uploads/images/75944066/rectangle_large_type_2_4f6a543a7425ebecb71f530ddd2f9f54.png?width=800)
[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が出ています。
![](https://assets.st-note.com/img/1649366267361-CIfPJLfHz5.png?width=800)
置き換え後
各要素をリスト型のオブジェクトに追加しておき、そのリスト型から新しい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型のオブジェクトを出力した結果は下記です。
![](https://assets.st-note.com/img/1649325008186-1rsiJCcVPV.png?width=800)
なお、今回は、リストには1行のみ追加した例にしましたが、複数行をリストに追加した場合も、連結できていることを確認できました。
まとめ
今回は、2022/1/22にリリースされたpandas 1.4.0にて、appendメソッドが非推奨となったため、置き換えとして推奨されている、pandas.concatメソッドを使う場合の実装方法について検討しました。
pandas.concatメソッドは、横方向の連結で使用することが多かったのですが、行を追加するケースでも使用可能なことが分かり、使用する機会が増えそうです。
この記事が気に入ったらサポートをしてみませんか?