如何使用带有多个输入的函数`apply`

时间:2015-10-09 01:16:39

标签: graphlab sframe

我有一个具有多个输入的函数,并希望使用SFrame.apply来创建新列。我无法找到将两个参数传递到SFrame.apply的方法。

理想情况下,它会将列中的条目作为第一个参数,并且我会传入第二个参数。直观地说就像......

def f(arg_1,arg_2):
    return arg_1 + arg_2

sf['new_col'] = sf.apply(f,arg_2)

3 个答案:

答案 0 :(得分:17)

假设函数f的第一个参数是列之一。

在sf中说argcolumn1,然后

sf['new_col'] = sf['argcolumn1'].apply(lambda x:f(x,arg_2))

应该有效

答案 1 :(得分:1)

试试这个。

sf['new_col'] = sf.apply(lambda x : f(arg_1, arg_2))

答案 2 :(得分:0)

我理解您的问题的方式(并且由于先前的答案均未标记为已接受),在我看来,您正在尝试使用单个SFrame的两个不同列来应用转换,因此:

根据online documentation中的指定,将为SFrame中的每一行调用传递给SFrame.apply方法的函数。

因此,您应该重写函数以接收代表当前行的单个参数,如下所示:

def f(row):
    return row['column_1'] + row['column_2']

sf['new_col'] = sf.apply(f)