Как я могу использовать `apply` с функцией, которая принимает несколько входов
У меня есть функция, которая имеет несколько входов, и хотел бы использовать SFrame.apply
создать новый столбец. Я не могу найти способ передать два аргумента в SFrame.apply
,
В идеале, это будет принимать запись в столбце в качестве первого аргумента, а я передаю второй аргумент. Интуитивно что-то вроде...
def f(arg_1,arg_2):
return arg_1 + arg_2
sf['new_col'] = sf.apply(f,arg_2)
2 ответа
Предположим, что первый аргумент функции f является одним из столбцов.
Сказать argcolumn1
в нф, то
sf['new_col'] = sf['argcolumn1'].apply(lambda x:f(x,arg_2))
должно сработать
Попробуй это.
sf['new_col'] = sf.apply(lambda x : f(arg_1, arg_2))
Как я понимаю ваш вопрос (и поскольку ни один из предыдущих ответов не помечен как принятый), мне кажется, что вы пытаетесь применить преобразование, используя два разных столбца одного SFrame
, так:
Как указано в онлайн-документации, функция, которую вы передаете SFrame.apply
метод будет вызываться для каждой строки в SFrame.
Поэтому вам следует переписать вашу функцию, чтобы получить один аргумент, представляющий текущую строку, как показано ниже:
def f(row):
return row['column_1'] + row['column_2']
sf['new_col'] = sf.apply(f)