pd.append が使えなくなるのでその対策2023-01-31

これまでの自分のアプリを実行すると以下のワーニングがたくさん出て、いずれpd.appendは使えなくなるからそのかわりにpd.concatを使えとのこと。
 FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.

私のソフトでは横に大きな(41カラム)データフレームに対して、数項目しかデータを持たな行を追加する際 pd.Serial を作ってそのカラム名をインデックスとして pd.append で行に足し込んでいた。

これと同じことが pd.concat でできるのか調べてみたらできて、案外簡単に実装できた。

訂正前
①s = pd.Series([curmon,'GAS',c[5],c[1]+'('+c[0]+')'], index=['日付','区分','出金','摘要'] , name= Cindex)
②df = df.append(s)

訂正後
① s = pd.DataFrame(data=[[curmon,'GAS',c[5],c[1]+'('+c[0]+')']], columns=['日付','区分','出金','摘要'])
 ②df = pd.concat([df,s],ignore_index = True, axis =0)

要は、データをシリアル化してやり、それぞれのデータをどの列に入れるかをcolumnsで指定してデータフレーム化してやると問題なく行追加できる。問題はこの訂正場所がソフト中に8箇所もあるという点。でも emacs だとそれが俊速でできてしまうという追加のお話。

まず①行目
最初に検索バッファにpd.Seriesをセットしておいて、
C-s <ret><ret> M-b M-d DataFrame C-f  [  C-M-n  ] C-f C-f  M-d  columns  C-e M-b M-b M-d M-d <bs>
これで1行分完了、これを必要数繰り返すだけ。
やっていることは、検索移動とワード単位の削除や対応括弧への移動とを組み合わせてをやっているだけだけど、こうやって文字で書くと長いけど、キーは単語打ち込み以外は10回程度なので大したことない。
2行目は固定処理なのでそのまま行を入れ替えれば終わり。

やっぱ emacs はええなぁ、使えば使うほど指に馴染む。先達に感謝。