我有一个读取这样的代码
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
的错误。
答案 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