Python - Ошибка при добавлении строк в фрейм данных: локальная переменная 'finallog', на которую ссылается перед присваиванием - PullRequest
0 голосов
/ 28 декабря 2018

Фрагмент кода

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

Пожалуйста, предложите любой обходной путь, чтобы сделать эту работу.Также, если один из закомментированных методов лучше добавить, пожалуйста, предложите, потому что, когда я попробовал, все, казалось, выдавали те или иные ошибки и все ошибки времени выполнения.Спасибо.

1 Ответ

0 голосов
/ 28 декабря 2018

Полагаю, вы объявляете finallog где-то над вашим кодом, но в другой области видимости, но присваиваете ей в «текущей» локальной области видимости (может быть где-то ниже, потому что я не вижу никакого присваивания в вашем коде):

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

Как советы docs , попробуйте использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...