AttributeError: 'DataFrame' object has no attribute 'append' の対処

結論を先に。このエラーは、pandas 2.0 で DataFrame.append メソッドが削除されたために起きます。行を追加するには pd.concat を使います。ループで1行ずつ足していた箇所は、リストに貯めて最後にまとめて結合するのが速くて安全です。

AttributeError: 'DataFrame' object has no attribute 'append'

原因

append は以前から非推奨(deprecated)で、pandas 2.0 で正式に削除されました。古い記事やコードのまま df.append(...) を呼ぶと、メソッドが存在せずこのエラーになります。

対処

  1. 1つのDataFrameや行を足すなら pd.concat を使います。
import pandas as pd
df = pd.concat([df, pd.DataFrame([new_row])], ignore_index=True)
  1. ループで何度も足す場合は、appendを毎回呼ぶ設計自体が遅いので、リストに貯めて最後に1回だけ結合します。
rows = []
for x in data:
rows.append({"a": x, "b": x * 2})
df = pd.DataFrame(rows)
  1. どうしても古いコードを動かしたいだけなら、pandas を1系に固定する回避もありますが、非推奨です。新しい書き方に直すのが本筋です。

まとめ

  • 原因は pandas 2.0 での DataFrame.append 削除
  • 行の追加は pd.concat に置き換える
  • ループ追加は list に貯めて最後に一括結合が速い
  • バージョン固定は一時しのぎ。concat へ移行する