前提
材料開発においてMIを使用したいと考えております。
材料a,b,cを比率a : b : c=A:B:Cで混合する実験を想定しています。a,b,cには種類があり、例えばaはa_1とa_2があります。
a,b,cにはそれぞれx,y,zという特性値をもっており、別のデータフレームにまとまっています。
行いたいことは、材料の混合比率表に特性値を結合し、どの材料の特性値かが分かるようにしたいです。
更に特性値ごとに材料の添加量で加重平均を計算したカラムを新たに追加したいです。
一つずつ書くことはできるのですが、実データでは膨大な特性値がありプログラム化したいです。
for文などがよくわかっておらず、困っております。大変恐縮ですが、どなたかお詳しい方ご教授いただけないでしょうか。
実現したいこと
以下のコードをプログラム化する
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
python
1import pandas as pd 2 3# 材料a,b,cを比率a:b:c=A:B:Cで混合する 4# a,b,cには種類があり、例えばaはa_1とa_2があります。 5df = pd.DataFrame({'a': ['a_1', 'a_1', 'a_2'], 'b': ['b_1', 'b_2', 'b_3'], 'c':['c_1', 'c_1', 'c_2'] 6 ,'A':[0.5,0.2,0.3],'B':[0.2,0.3,0.4],'C':[0.3,0.5,0.3]}) 7 8# a,b,cはそれぞれx,y,zという特性値をもっており、別のデータフレームにまとまっています。 9df_a = pd.DataFrame({'a':['a_1','a_2'],'x': [1, 2], 'y': [4, 5],'z':[7, 8]}) 10df_b = pd.DataFrame({'b':['b_1','b_2','b_3'],'x': [3, 4, 5], 'y': [6, 7, 8],'z':[9, 10, 11]}) 11df_c = pd.DataFrame({'c':['c_1','c_2'],'x': [5, 6], 'y': [8, 9],'z':[11, 12]}) 12 13# 材料の混合表(df)に特性値(df_a,df_b,df_c)を結合し、どの材料の特性値かが分かるようにする 14df_new = df.merge(df_a,on='a') 15df_new = df_new.rename(columns={'x':'x_a','y':'y_a','z':'z_a'}) 16df_new = df_new.merge(df_b,on='b') 17df_new = df_new.rename(columns={'x':'x_b','y':'y_b','z':'z_b'}) 18df_new = df_new.merge(df_c,on='c') 19df_new = df_new.rename(columns={'x':'x_c','y':'y_c','z':'z_c'}) 20 21# 特性値ごとに材料の添加量で加重平均を計算したカラムを新たに追加 22df_new['x_ave'] = (df_new['x_a']*df_new['A']+df_new['x_b']*df_new['B']+df_new['x_c']*df_new['C'])/(df_new['A']+df_new['B']+df_new['C']) 23df_new['y_ave'] = (df_new['y_a']*df_new['A']+df_new['y_b']*df_new['B']+df_new['y_c']*df_new['C'])/(df_new['A']+df_new['B']+df_new['C']) 24df_new['z_ave'] = (df_new['z_a']*df_new['A']+df_new['z_b']*df_new['B']+df_new['z_c']*df_new['C'])/(df_new['A']+df_new['B']+df_new['C']) 25
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/03 08:11