Как сделать фрейм данных глобально доступным изнутри функции, не назначая ее переменной (в психопии)? - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть функция, которая выполняет несколько команд и создает кадр данных в конце:

def Pos_Presentation():
    df = pd.DataFrame(columns=['ID', 'Date', 'Time', 'Session','Condition','Stimulus','Response_Type','Reaction_Time'])
    return df

Я хочу, чтобы фрейм данных (df) был создан и доступен вне функции. Но когда я пытаюсь:

Pos_Presentation()
df

Я получаю сообщение об ошибке:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-4-00cf07b74dcd> in <module>
----> 1 df

NameError: name 'df' is not defined

Я пытался:

def Pos_Presentation():
        global df
        df = pd.DataFrame(columns=['ID', 'Date', 'Time', 'Session','Condition','Stimulus','Response_Type','Reaction_Time'])
        return df

Pos_Presentation()
df

В Jupyter_Notebook это работает. Но в Psychopy, где мне нужно его запустить, выдает ошибку:

NameError: name 'df' is not defined

Я не могу назначить эту функцию переменной (например, var = Pos_Presentation ()), потому что она выполняет кучу других вещей, кроме генерации кадра данных.

1 Ответ

3 голосов
/ 06 февраля 2020

Я думаю, вам просто нужно присвоить вывод PosPresentation () для df, например:

def Pos_Presentation():
    global df
    df = pd.DataFrame(columns=['ID', 'Date', 'Time', 'Session','Condition','Stimulus','Response_Type','Reaction_Time'])
    return df

df = Pos_Presentation()

Кроме того, я не думаю, что вам нужно "global df" в определении вашей функции, и это Вероятно, будет проще отслеживать ваши кадры данных, если вы дадите им разные имена (например, вызовите тот, что в функции "df", но тот, который находится вне функции "Pos_df" или что-то в этом роде).

...