我有一个具有多个输入的函数,并希望使用SFrame.apply
来创建新列。我无法找到将两个参数传递到SFrame.apply
的方法。
理想情况下,它会将列中的条目作为第一个参数,并且我会传入第二个参数。直观地说就像......
def f(arg_1,arg_2):
return arg_1 + arg_2
sf['new_col'] = sf.apply(f,arg_2)
答案 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)