私はPythonには新しく、以下の問題を解決する方法がわかりません。データフレーム上のすべての行に関数を適用するにはどうすればよいですか?
私が機能を持っている:
def EOQ(D,p,ck,ch):
Q = math.sqrt((2*D*ck)/(ch*p))
return Q
は、私がデータフレーム
df = pd.DataFrame({"D": [10,20,30], "p": [20, 30, 10]})
D p
0 10 20
1 20 30
2 30 10
ch=0.2
ck=5
そしてch
とck
を持っていると言うには、フロートタイプです。今度は、データフレーム上のすべての行に式を適用し、それを余分な行「Q」として返したいと思います。例(それが動作しません)次のようになります。
df['Q']= map(lambda p, D: EOQ(D,p,ck,ch),df['p'], df['D'])
(リターンのみのタイプを「マップ」)
私は私のプロジェクトでは、より多くの処理のこのタイプが必要になりますし、私が働く何かを見つけることを願っています。あなたには、いくつかの結果の平方根を計算してやっているすべては、その後、これがベクトル化されnp.sqrt
メソッドを使用する場合は
def EOQ(D,p,ck,ch):
p,D = Partmaster
Q = math.sqrt((2*D*ck)/(ch*p))
return Q
ch=0.2
ck=5
df['Q'] = df.apply(lambda row: EOQ(row['D'], row['p'], ck, ch), axis=1)
df
をしてます:
あなたが行に関数を適用し、この機能に目を通すことができます。partmasterためdocs.scipy.org/doc/numpy/reference/generated/numpy.apply_along_axis.html – Litwos