エラー: 'DataFrame' オブジェクトには属性 'append' がありません
DataFrame オブジェクトに辞書を追加しようとすると、次のような問題が発生する場合があります。エラー メッセージ「AttributeError: 'DataFrame' オブジェクトには属性 'append' がありません。」 DataFrame には以前は append メソッドが装備されていましたが、pandas バージョン 2.0 では削除されました。
解決策
DataFrame にデータを追加するには、代わりに concat メソッドを使用します。
df = pd.concat([df, pd.DataFrame([new_row])], ignore_index=True)
代替解決策
インデックスが RangeIndex の場合は、loc 属性も使用できます:
df.loc[len(df)] = new_row # Note: Only use with a RangeIndex!
変更の理由
append メソッドは、特に繰り返した場合に非効率的な操作であるため、削除されました。インプレースで動作する list.append とは異なり、DataFrame の append は新しい DataFrame を作成します。これにより、繰り返し挿入操作の時間計算量が 2 倍になりました。
繰り返し挿入のベスト プラクティス
追加または連結を繰り返し使用する代わりに、新しい項目をリストに収集して変換します。ループの終わりにそれらを DataFrame に追加します。次に、新しい DataFrame を元の DataFrame に連結します。
lst = [] for new_row in items_generation_logic: lst.append(new_row) # create extension df_extended = pd.DataFrame(lst, columns=['A', 'B', 'C']) # concatenate to original out = pd.concat([df, df_extended])
以上が「DataFrame.append」が非推奨になったのはなぜですか? Pandas DataFrame に行を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。