社会ノマド

備忘録と書きもの練習帳。とくに何らかのハンドリング系と、雑多な話題に関する読書録になるかなと思います。

python: 変数の値を名前にして保存(変数評価)

変数の名前を保存する際の名前にしたい。

import pandas as pd

savename = 'むにゃたん'

df = pd.DataFrame(
    {'name': ['一郎','二郎','三郎'],
     'educ': ['大','大','高'],
     'income': [1000,2000,500]})

このようなデータセットと変数があったとき、むにゃたん.csvって名前でデータセットを保存したい。スクレイピングとかしてると、こういうことが結構ある(savename がリストになっててfor文で回すとか)。ところが以下ではエラーする。

df.to_csv(savename)

savename を変数と判断し評価してくれないので、値までいかないんだね。 そこで、以下みたいにしてみたけどこれもダメ。

df.to_csv(eval(savename))

もう方針を変えて、上記のコードを全部 string にして、後から eval()で評価することに。以下で成功です。

import pandas as pd


df = pd.DataFrame(
    {'name': ['一郎','二郎','三郎'],
     'educ': ['大','大','高'],
     'income': [1000,2000,500]})


savename = 'むにゃたん.csv'
name = 'df.to_csv("'+savename+'")'
eval(name)

これで、ディレクトリにむにゃたん.csvが保存されたはず。