无法在IF循环内附加浮点数?如何克服呢?

时间:2019-07-08 01:04:47

标签: python dataframe

我有一个读取这样的代码

def IV_function(IVdata):     # IVdata is a dataframe
    for ...:
        if ..: 
            vmp = IVdata['iv_v'].iloc[max_idx]
            vmpaux.append(vmp)
    IVdata['vmp'] = vmpaux
    return IVdata
### Main code
df_s1 = IV_function(df_s1)  ### df_s1 is a dataframe
df_s2 = IV_function(df_s2)  ### df_s2 is a dataframe

输出:

df_s2 = explore_ivcurves(df_s2)
Traceback (most recent call last):

  File "<ipython-input-59-3494dc1142b8>", line 1, in <module>
    df_s2 = explore_ivcurves(df_s2)

  File "<ipython-input-56-9ea07b888c4b>", line 23, in explore_ivcurves
    vmpaux.append(vmp)

AttributeError: 'float' object has no attribute 'append'

有趣的是,此函数成功运行,而另一个数据帧df_s1没有任何错误。该函数给出第二个数据帧df_s2的错误。

1 个答案:

答案 0 :(得分:0)

您似乎尝试在某处使用float()作为list()。这就是为什么您看到AttributeError: 'float' object has no attribute 'append'错误的原因。它告诉您vmpaux是浮点数。

在尝试添加变量之前,或者在调用IVdata['vmp'] = vmpaux时,如果在循环过程中未使用if,则可能还需要确保变量存在默认值。 。

def IV_function(IVdata):     # IVdata is a dataframe
    vmpaux = []
    for ...:
        vmp = 0.0
        if ..: 
            vmp = IVdata['iv_v'].iloc[max_idx]
            vmpaux.append(vmp)
    IVdata['vmp'] = vmpaux
    return IVdata
### Main code
df_s1 = IV_function(df_s1)  ### df_s1 is a dataframe
df_s2 = IV_function(df_s2)  ### df_s2 is a dataframe