首页 > 解决方案 > Python - 在数据框中添加行时出错:分配前引用的局部变量“finallog”

问题描述

代码片段

s = int(input())
       # finallog.append(pd.Series([CurrentClock,timedelta(seconds=s,minutes=m),CurrentProgramCode,0,0],index=finallog.columns()), ignore_index=True)
       # finallog.loc[j]=[CurrentClock,timedelta(seconds=s,minutes=m),CurrentProgramCode,0,0]
       # j+=1
df_2 = pd.DataFrame(data={
             'CurrentTime':[CurrentClock],
             'BookingNumber':[""],
             'Duration':[timedelta(seconds=s, minutes=m)],
             'BrandCode':[""], 
             'TapeCode':[CurrentProgramCode]})
finallog = pd.concat([finallog,df_2],axis=0)
print(finallog)

错误信息为:

UnboundLocalError                         Traceback (most recent call last)
<ipython-input-45-6144a7142686> in <module>()

----> 1 startup()

<ipython-input-25-1490643b2ba7> in startup()

     17        # j+=1

     18 df_2=pd.DataFrame(data={'CurrentTime':[CurrentClock],'BookingNumber':[""],'Duration':[timedelta(seconds=s, minutes=m)],'BrandCode':[""],'TapeCode':[CurrentProgramCode]})

     19 **finallog=pd.concat([finallog,df_2],axis=0)**

     20 print(finallog)

     21 CurrentClock=CurrentClock+timedelta(seconds=s,minutes=m)

> UnboundLocalError: local variable 'finallog' referenced before assignment

请提出任何解决方法来完成这项工作。此外,如果注释掉的方法之一更好地添加请建议,因为当我尝试时,所有似乎都给出了一些或其他错误以及所有运行时错误。谢谢你。

标签: pythonpandasdataframedata-science

解决方案


我想,您finallog在代码上方的某处声明,但在其他范围内,但在“当前”本地范围内分配给它(可能在下面的某个地方,因为我在您的代码中看不到任何分配):

finallog = pd.concat([finallog, df_2],axis=0)
...
> UnboundLocalError: local variable 'finallog' referenced before assignment

作为文档的建议,尝试使用global. 简化示例:

x = 10

def p():
    print(x)
    x += 1

p()
Traceback:
UnboundLocalError                         Traceback (most recent call last)
<ipython-input-3-d40139f363ae> in <module>
----> 1 p()

<ipython-input-2-271014bcda23> in p()
      1 def p():
----> 2     print(x)
      3     x += 1
      4

global

x = 10

def p():
    global x
    print(x)
    x += 10

p()
Out: 
10

推荐阅读