优化涉及 Pandas 系列的计算

Optimize calculations involving a Pandas series

我正在尝试进行一些涉及 pandas 系列的计算,如下所示。基本上,首先我从 DataFrame 列中提取 t,然后使用带有“if...else...”的 for 循环来做进一步的计算,因为我发现当我使用 max(f_min, nan) 时, f_min 总是返回。下面的代码有效,但看起来相当麻烦。有没有更好的方法来做我想在这里做的事情?非常感谢您的帮助!

f_min = 0.1
t_min=0.  #degree C    
t_max=35.
t_opt=21.

t=pd.Series([nan, nan, nan, 37., 31., 23.], 
            index=['08/22/2011 07','08/22/2011 08','08/22/2011 09', 
                  '08/22/2011 10','08/22/2011 11','08/22/2011 12'],  
             name='T')    
#    t=df.T
a = (t - t_min)/(t_opt - t_min)
bt = (t_max - t_opt)/(t_opt - t_min)
b = ((t_max - t)/(t_max - t_opt))**bt
d = a * b

i= 0
for x in d:
    if (pd.isna(x)):
        d.iloc[i] = np.nan
    else:
        f_temp = max (f_min, x)
        d.iloc[i] = f_temp
    i = i+1

让我们使用:

d.clip(f_min,) 

d.loc[d<f_min] = f_min