Передача Pandas столбцов фрейма данных в качестве аргументов функции - PullRequest
1 голос
/ 13 июля 2020

У меня есть фрейм данных с именем df. Мне нужно передать столбцы в качестве аргументов функции.

Вне функции этот код работает:

df.colname.fillna(method='ffill')

Если я использую следующий код (ie в той же строке внутри функции и передать df.colname в качестве аргумента (colname = df.colname), это не работает. Строка игнорируется:

   def Funct (colname):
    
    colname.fillna(method='ffill')

Это работает (colname = df.colname):

def Funct (colname):
    colname [1:] = colname[1:].fillna(method='ffill')

Что происходит?

Изменяет ли функция объект фрейма данных на массив? Делает ли это неэффективным код и есть ли лучший способ сделать это?

(Примечание: это часть более крупной функции, которую я перефразирую здесь для простоты)

1 Ответ

0 голосов
/ 13 июля 2020

fillna() по умолчанию не обновляет фрейм данных на месте, вместо этого ожидая, что вы вернете его обратно, например

def Funct(colname):
    return colname.fillna(method='ffill')

df = Funct(df)

Стоит отметить, что fillna() имеет аргумент inplace=, который вы можете установить True, если вам нужно обновить на месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...