我試圖在 Python 中用“while”創建一個新函式。
def pmv_calculator(ta, tr, vel, rh, met, clo, wme):
pa = rh * 10 * np.exp(16.6536 - 4030.183 / (ta 235))
icl = 0.155 * clo
m = met * 58.15
w = wme * 58.15
mw = m - w
if icl <= 0.078:
fcl = 1 (1.29 * icl)
else:
fcl = 1.05 (0.645 * icl)
hcf = 12.1 * np.sqrt(vel)
taa = ta 273
tra = tr 273
tcla = taa (35.5 - ta) / (3.5 * icl 0.1)
p1 = icl * fcl
p2 = p1 * 3.96
p3 = p1 * 100
p4 = p1 * taa
p5 = 308.7 - 0.028 * mw p2 * np.power(tra / 100, 4)
xn = tcla / 100
xf = tcla / 50
eps = 0.00015
hc = 0
n = 0
while abs(xn - xf) > eps:
xf = (xf xn) / 2
hcn = 2.38 * np.power(abs(100.0 * xf - taa), 0.25)
if hcf > hcn:
hc = hcf
else:
hc = hcn
xn = (p5 p4 * hc - p2 * np.power(xf, 4)) / (100 p3 * hc)
n = 1
if n > 150:
print('Max iteration exceeded')
break
tcl = 100 * xn - 273
h11 = 3.05 * 0.001 * (5733 - (6.99 * mw) - pa)
if mw > 58.15:
h12 = 0.42 * (mw - 58.15)
else:
h12 = 0
h13 = 1.7 * 0.00001 * m * (5867 - pa)
h14 = 0.0014 * m * (34 - ta)
h15 = 3.96 * fcl * (np.power(xn, 4) - np.power(tra / 100, 4))
h16 = fcl * hc * (tcl - ta)
ts = 0.303 * np.exp(-0.036 * m) 0.028
pmv = ts * (mw - h11 - h12 - h13 - h14 - h15 - h16)
return pmv
然后使用此函式在我的資料框中生成另一列。
df['PMV'] = pmv_calculator(df['temp'], df['temp'], 0.1, 22, 1.1, 1, 0)
但它給了我以下錯誤:
檔案“C:/P.py”,第 119 行,在 df['PMV'] = pmv_calculator(df['temp'], df['temp'], Air_Speed, 22, Metabolic_Rate, Clothing, 0) 檔案“C :/P.py",第 83 行,在 pmv_calculator while abs(xn - xf) > eps: 檔案 "C:\PA\venv\lib\site-packages\pandas\core\generic.py",第 1538 行,在nonzero f"{type(self) .name } 的真值不明確。" ValueError: Series 的真值不明確。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
當我簡單地輸入數字而不是資料框列時,該函式作業正常。當我嘗試創建一個新列時,才會出現該錯誤。我用“|”寫了“while”回圈 但它沒有用。我不知道如何修復它。
uj5u.com熱心網友回復:
錯誤是因為這條線
while abs(xn - xf) > eps:
這種型別的比較最適合單個值。但是在一個資料框中你有多個值,所以這不起作用。在您的情況下,最好的解決方案是使用 df.apply()。這會將 pmv_calculator 函式單獨應用于每一行。
df['PMV'] = df.apply( lambda x : pmv_calculator(x['temp'], x['temp'], 0.1, 22, 1.1, 1, 0), axis=1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/458749.html
標籤:Python 数据框 while循环 创建函数 自动生成列
上一篇:由幾列組成一個公共列
下一篇:如何從特定范圍按月和年分組?
