質問: df.x1.上書き文字列 ``` 変換する変数と書き込む文字列、のように組が二つだと辞書が使えるのですが、3つの変数(id、上書き変数名、上書き文字列)が必要なので辞書が使えない状況です。 (辞書が使えればfor i,j in items()でループさせられる。) リストで3つごとにループさせるくらいしか思いつかないですが、他に良い方法はありますでしょうか。 よろしくお願いいたします。
回答: `to_dict`で辞書型にキャストすると値も辞書型になるので、辞書の値から必要な組を取得することでループを増やさずに済むのではないでしょうか。 **サンプルコード** ``` from pandas import Series, DataFrame import pandas as pd master = DataFrame({'id':[1, 2], '上書き列名': ['x2', 'x4'], '上書き文字列': ['ああああ', 'いいい']}) df = DataFrame({'id':[1, 2], 'x1': ['あ', 'あ'], 'x2': ['い', 'い'], 'x3': ['う', 'う'], 'x4': ['え', 'え']}) dict = master.set_index('id').to_dict('index') print(dict) for id in dict: value = dict[id] df.loc[df['id'] == id, value['上書き列名']] = value['上書き文字列'] print(df) ``` **出力結果** ``` {1: {'上書き列名': 'x2', '上書き文字列': 'ああああ'}, 2: {'上書き列名': 'x4', '上書き文字列': 'いいい'}} id x1 x2 x3 x4 0 1 あ ああああ う え 1 2 あ い う いいい ```