ナンバリングタイトルで習得した技を忘れるやつ

超普通の情報系大学生のメモや疑問まとめ、備忘録

Pandasのカラム名に変数代入したい

解決してないからこれだけ。 zabbixで集めたヒストリのcsvを一つにまとめようとしたわけ。そこで、キーの名前をカラム名にしようとしたわけ。で、ファイル名を変数に入れてカラム名にしようとしたら失敗した。どうやって代入するんだ??
解決した。

そもそもの話だけど、pandas.DataFrameというものがある。これはpythonにimport pandasして使えるライブラリのメソッドで、行列のデータね。で、何がいいってデータ分析がしやすいわけ。Jupyterとかと連携するととっても便利。excelに戻れなくなる。
まあこの連携の話はググればたくさん出てくるからいいとして、これ、行とか列を後から追加できるのね。
note.nkmk.me このサイトさんがわかりやすかった。

df = pd.DataFrame()
df = df.assign(A=0)

上の例だと空のdfに新しい列Aが値0で追加されるってわけです。
ただ、不思議なことにこの新しい列名に変数を使っている例が全然見つからなかった。頑張って探したけど全く見つからなかった。(見つけたら教えて)
そのまま変数をあてはめようとすると、invalidですよーって出ちゃうんですよ。
じゃあどうするって話だけど、もっと簡単な書き方でよかったってだけ。

tmp_df = pd.read_csv(file, header=None, names=['itemid', 'clock', 'value', 'ns'], encoding="sjis")
file_name='example'
df = pd.DataFrame()
df[file_name]=temp_df['value']

この例では、'itemid', 'clock', 'value', 'ns'って名前の列を持つcsvを読み込んで、新しく作ったDataFrameに読み込んだcsvの'value'の値を持つ'example'って名前の列を作っている。これでいいのだ。
assignだとだめだけど、df[]に代入ならおっけ。
Zabbixとの連携用に書いたやつなので、きれいに書き直したらそのうちAPI呼び出しと一緒に投稿するつもり。