8

我有一个有多个输入的函数,并想SFrame.apply用来创建一个新列。我找不到将两个参数传递给SFrame.apply.

理想情况下,它将列中的条目作为第一个参数,我将传入第二个参数。直觉上像...

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

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

3 回答 3

20

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

用 sf说argcolumn1,然后

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

应该管用

于 2015-10-14T15:01:22.547 回答
1

尝试这个。

sf['new_col'] = sf.apply(lambda x : f(arg_1, arg_2))
于 2015-10-13T17:56:45.517 回答
0

我理解您的问题的方式(并且因为之前的答案都没有被标记为已接受),在我看来,您正在尝试使用单个的两个不同列来应用转换SFrame,所以:

在线文档中所述,您传递给该SFrame.apply方法的函数将为 SFrame 中的每一行调用。

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

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

sf['new_col'] = sf.apply(f)
于 2018-12-11T19:38:15.537 回答