我有一个有多个输入的函数,并想SFrame.apply
用来创建一个新列。我找不到将两个参数传递给SFrame.apply
.
理想情况下,它将列中的条目作为第一个参数,我将传入第二个参数。直觉上像...
def f(arg_1,arg_2):
return arg_1 + arg_2
sf['new_col'] = sf.apply(f,arg_2)
假设函数 f 的第一个参数是其中一个列。
用 sf说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)