如何根据另一个列表中的相应值是否为零创建值列表

How to create a list of values depending on whether the corresponding value in another list is zero or not

提问人:Joe Baylay 提问时间:10/19/2023 最后编辑:Joe Baylay 更新时间:10/19/2023 访问量:40

问:

我正在对太阳系进行建模,需要对温度功率损耗进行建模。这取决于给定小时的辐照度水平。我正在尝试编写一个脚本,在给定模块温度的情况下计算相应的功率损耗值。

我的最终目标是使它成为这样,当脚本读取它的每个单独值时,计算一个相应的值,除非为零,否则也是零,并将其附加到列表中,以便我可以从所有结果中创建一个数据框。total_irrtemp_losstotal_irrtemp_loss

下面是我目前正在使用的代码,我认为它为 8760 个值运行了 8760 次,而我只需要它运行一次值。total_irr

total_irr = df['Direct Irradiance'] + df['Diffuse Irradiance']
module_temp = t_dry + (((noct-20)/800)*total_irr)

def calc_temp_loss(irr):
    if irr > 0:
        temp_loss = (module_temp - 25) * power_coeff
    else:
        temp_loss = 0
    return temp_loss

power_loss_list = []
            
for irr in total_irr:
    power_loss = calc_temp_loss(irr)
    power_loss_list.append(power_loss)

我还附上了我在尝试打印时收到的打印语句的屏幕截图。power_loss_listSnippet of the print statement I receive

任何帮助将不胜感激。谢谢。

Python pandas 数据帧 列表 for 循环

评论

2赞 pho 10/19/2023
Pandas DataFrame 吗?如果是这样,请将该标签添加到您的问题中。什么是 和 ?它是另一个数据帧/系列还是只是标量?请确保您的代码是一个最小的可重现示例dfmodule_temppower_coeff
0赞 Joe Baylay 10/19/2023
@pho 我要求当 的值为零时,for 的值也为零。如果我只是做计算,当为零时,我没有零值。total_irrtemp_losstotal_irr
0赞 Joe Baylay 10/19/2023
@pho 效果很好,非常感谢!
0赞 pho 10/19/2023
很高兴帮忙!我添加了一个答案,因为该评论确实回答了这个问题。

答:

0赞 pho 10/19/2023 #1

您可以按照与以下相同的方式进行矢量化计算:temp_lossmodule_temp

temp_loss = (module_temp - 25) * power_coeff

这将从整个系列中减去 25,然后将其乘以module_temppower_coeff

接下来,您可以将零对应的元素设置为零:total_irr

temp_loss[total_irr == 0] = 0

最后,得到temp_losstemp_loss.sum()