PandasのDataFrameでappendの代替
FutureWarning
pandasのDataFrameに対してappendを用いると以下のような警告がされる。
いつかなくなるメソッドだからappendではなくconcatを使ってね、とのこと。
FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version.
Use pandas.concat instead.
appendを使用する目的
カラム名だけで値は空のDataFrameを用意して、カラムを追加していきたい。
結論
コード
# カラム名のみの空DataFrameを作成
cols = ['col_{}'.format(s) for s in range(9)]
df = pd.DataFrame(index=[], columns=cols)
# >> Empty DataFrame
# >> Columns: [col_0, col_1, col_2, col_3, col_4, col_5, col_6, col_7, col_8]
# >> Index: []
# カラムデータの作成
transaction = ['hoge'] * len(cols)
record = pd.Series(transaction, index=df.columns)
# appendの役割
df.loc[len(df)] = record
結果
col_0 col_1 col_2 col_3 col_4 col_5 col_6 col_7 col_8
0 hoge hoge hoge hoge hoge hoge hoge hoge hoge
concat使ってないじゃんと思いますよね。僕も思いました。
むしろこのやり方って、よくIndexOutにならないなって感心してます。詳しい人いらしたらご教授いただけると幸いです。
失敗談
concatをappendの代わりに使用して、目的の動作が達成できなかったためこのようなやり方となってしまった。
concatで試してダメだったバージョンを以下に。
コード (# appendの役割 の部分をこれに変えたもの)
df = pd.concat([df, record])
結果
col_0 col_1 col_2 col_3 col_4 col_5 col_6 col_7 col_8 0
col_0 NaN NaN NaN NaN NaN NaN NaN NaN NaN hoge
col_1 NaN NaN NaN NaN NaN NaN NaN NaN NaN hoge
col_2 NaN NaN NaN NaN NaN NaN NaN NaN NaN hoge
col_3 NaN NaN NaN NaN NaN NaN NaN NaN NaN hoge
col_4 NaN NaN NaN NaN NaN NaN NaN NaN NaN hoge
col_5 NaN NaN NaN NaN NaN NaN NaN NaN NaN hoge
col_6 NaN NaN NaN NaN NaN NaN NaN NaN NaN hoge
col_7 NaN NaN NaN NaN NaN NaN NaN NaN NaN hoge
col_8 NaN NaN NaN NaN NaN NaN NaN NaN NaN hoge
多分、どこかのパラメータの指定がうまく行ってないのだとは思います。