質問: ### 前提・実現したいこと data1のデータを、data2へ、値を代入して置き換えたいです。 ``` data1=pd.DataFrame([[1,1],[1,2],[2,1],[2,2], [3,1],[3,2],[4,1],[4,2]], columns=['食べ物','飲み物'], index=['A101','A102','A103','A104','A105','A106','A107','A108']) ``` ID 食べ物 飲み物 A101 1 1 A102 1 2 A103 2 1 A104 2 2 A105 3 1 A106 3 2 A107 4 1 A108 4 2 ``` data2=pd.DataFrame([['おにぎり','お茶'],['おにぎり','コーヒー'],['お弁当','お茶'],['お弁当','コーヒー'], ['菓子パン','お茶'],['菓子パン','コーヒー'],['サンドイッチ','お茶'],['サンドイッチ','コーヒー']], columns=['食べ物','飲み物'], index=['A101','A102','A103','A104','A105','A106','A107','A108']) ``` ID 食べ物 飲み物 A101 おにぎり お茶 A102 おにぎり コーヒー A103 お弁当 お茶 A104 お弁当 コーヒー A105 菓子パン お茶 A106 菓子パン コーヒー A107 サンドイッチ お茶 A108 サンドイッチ コーヒー ↓こちらの[col]のように、1には「おにぎり」、2には「お弁当」...という対応表はある状態です。 この対応表を使用して、データを作成するにはどのようにしたら良いでしょうか..?? このようなデータ変換が必要な変数がたくさんあるので、何か良い書き方が知りたいです。 ``` col=pd.DataFrame([['食べ物','おにぎり','お弁当','菓子パン','サンドイッチ'],['飲み物','お茶','コーヒー','','']], columns=['column','1','2','3','4']) ``` ご教授頂けますと助かります。。 よろしくお願いいたします。
回答: `Series.map()` で引き当てるとよいかと思います。 ``` import pandas as pd data = pd.DataFrame([[1,1],[1,2],[2,1],[2,2], [3,1],[3,2],[4,1],[4,2]], columns=['食べ物','飲み物'], index=['A101','A102','A103','A104','A105','A106','A107','A108']) conv_table = pd.DataFrame([['食べ物','おにぎり','お弁当','菓子パン','サンドイッチ'], ['飲み物','お茶','コーヒー','','']], columns=['column','1','2','3','4']) for name,row in conv_table.set_index('column').iterrows(): data[name] = data[name].astype(str).map(row) print(data) # 食べ物 飲み物 #A101 おにぎり お茶 #A102 おにぎり コーヒー #A103 お弁当 お茶 #A104 お弁当 コーヒー #A105 菓子パン お茶 #A106 菓子パン コーヒー #A107 サンドイッチ お茶 #A108 サンドイッチ コーヒー ```