【发布时间】:2021-11-19 12:01:31
【问题描述】:
我有以下数据框:
Temperature Growth rate Standard Error Weight Result
0 14.0 0.363 0.110 9.091 0.000
1 18.0 0.677 0.043 23.256 0.767
2 22.0 0.822 0.044 22.727 0.975
3 26.0 0.936 0.073 13.699 0.975
4 30.0 0.897 0.051 19.608 0.767
5 34.0 0.000 0.000 0.000 0.000
我正在尝试使用它来设置一个函数或一个 if 循环,它基本上说明藻类在 14 的最低温度或 34 的最高温度下是否没有生长,那么下一个最小参数可用于正增长(即高于0)应该小于或等于18且大于14,并且下一个最大值大于或等于30且小于34。我的想法是我是否应该在df中生成一个新列来接受这个考虑到,或者我是否应该这样做而不考虑给定的值。我期望产生的最终输出是曲线拟合,它采用优化的参数值(基本上是散点图),并根据更新或建模的增长率(标记为“结果”)测量温度。
我是这样设置初始参数的:
def boatman_temperature_function(temp, max_growth_rate, min_temp, temp_range, skewness, kurtosis):
num = temp - min_temp
denom = temp_range - min_temp # temp_range is the maximum temperature
inside_sin = np.pi*((num/denom)**skewness)
sin_result = np.sin(inside_sin) # TODO: numpy.sin input: radian? degree?
final = max_growth_rate*(sin_result**kurtosis)
return(final)
这更像是一个假设,而不是我在 df 中的值的基础,但我认为有一种方法可以将此函数与“增长率”和“结果”列一起使用。
与此同时,我正在尝试探索以下 2 种可能的解决方案,但我不太确定如何使它们发挥作用。有什么建议吗?
这是第一个解决方案:
for value in df2:
if df2['Temperature'].min() == 14 & df2['Growth rate'] == 0:
df2['Temperature'].min() <= 18
if df2['Temperature'].max() == 34 & df2['Growth rate'] == 0:
df2['Temperature'].max() >= 30
TypeError: Cannot perform 'rand_' with a dtyped [float64] array and scalar of type [bool]
这是第二个:
def min_and_max_alts(temp, growth_rate, alternate):
df2[alternate] = np.where((df2[temp].min() == 14 & df2[growth_rate] == 0), df2[temp].max() == 34 & df2[growth_rate] == 0)
return df2
df2 = min_and_max_alts('Temperature','Growth rate','Alternate growth rate')
df2
TypeError: Cannot perform 'rand_' with a dtyped [float64] array and scalar of type [bool] (basically same result as the first attempted solution)
【问题讨论】:
-
这个的预期输出是什么?
-
是的,你想做什么,插入调整温度的新行?只需检查与您的无生长和温度条件匹配的行后面的行是否遵循您的温度调整?
-
如果有机体在较低温度 (14°C) 下没有生长,则报告为零。在这种情况下,在模型拟合中定义 Tmin 时,将参数约束为等于或大于 14°C 且小于 18°C(这是具有正增长率的下一个温度处理)。如果有机体没有在最高温度(34°C)下生长,则报告为零。在这种情况下,在模型中定义 Tmax 时,将参数约束为等于或小于 34°C 且大于 30°C(这是具有正增长率的下一个温度处理)。
-
@SamColeman 您在哪里/如何定义这些 Tmin 和 Tmax?那是您似乎想要的输出,但您没有在问题中提及它们
-
很难理解你想要做什么。我认为你应该用一个预期输出的例子来重写你的问题。
标签: python pandas boolean max min