Как я могу использовать `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)
Другие вопросы по тегам