2016-12-13 7 views
-1

Я обрабатываю dataframe pandas df. В зависимости от определенных условий в пределах df, я хочу передать df (1) либо пользовательской функции filter(), либо (2) - calculate_Result().Как передать локальную переменную в пользовательскую функцию в пандах?

Код состояния является:

if df.Col1.str.contains("yes").sum() > 0: 
    df = filter_df 
    filter() # Loop 
else: 
    df = calculate_df 
    calculate_result() # End 

Однако я получая UnboundLocalError: local variable referenced before assignment.

я получаю эту ошибку и, когда я поставил df = calculate_df & df = filter_df задания в самом определении функций:

def filter(): 
    df = filter_df 
    ... 

и

def calculate_results(): 
    df = calculate_df() 
    ... 

независимо от того, где я ставлю задания, я получая UnboundLocalError: local variable referenced before assignment.

Как правильно передать локальную переменную для пользовательской функции в панд?

ответ

0

Это не связано с передачей переменной функции.

Вы использовали имя df, чтобы отнестись к глобальному модулю - в df.Col1... и в результате filter_df. Это вызывает ошибку, которую вы видите.

Используйте другое имя для локальной переменной.

+0

Я не совсем уверен, понимаю ли я. Если выполняются определенные условия в df, я хочу переименовать его и продолжить работу с ним в функции def1. Если условия не выполнены, я хочу продолжить работу с ним в функции def2. Следовательно, имя df должно быть одинаковым (1) при проверке условия и (2) внутри функции. Я хочу передать один и тот же файл данных различным функциям в зависимости от условия в кадре данных. – sudonym

+0

Нет. Это не имеет смысла и не имеет никакого отношения к коду, который вы опубликовали, или к проблеме, которую вы испытываете. «Переименование» переменной в одной функции абсолютно не имеет абсолютно никакого отношения к тому, как передать ее другой функции. Вы должны разместить достаточно кода, чтобы мы могли видеть, что вы на самом деле делаете. –