优化涉及 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
我正在尝试进行一些涉及 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