为什么我需要lambda将函数应用于Pandas Dataframe?

时间:2016-11-21 09:45:43

标签: python pandas lambda apply

我有一个Pandas数据框,并尝试使用apply()函数在一列中的条目上传递函数。

我的功能是:

def foo(Y):
    #accepts a pandas data frame
    #carries out some search on the text in each row of the dataframe
    #groups successful searches
    #return a new column as a pandas series

我的数据框格式为:

    Info    WN    RN
0    XX    YY    ZZ    
1    AA    BB    CC
2    JJ    KK    LL

我尝试执行:

df['SR'] = (df['Info'].apply(foo(x)))

我的错误如下:

File "<ipython-input-11-ae54015436d8>", line 1, in <module>
df['SR'] = (df['Info'].apply(foo(x))
NameError: name 'x' is not defined

但如果我使用:

df['SR'] = (df['Info'].apply(lambda x:foo(x)))

工作正常。

我理解Lambda是如何工作的(至少我以为我做过)。我不明白为什么需要它。

为什么我需要lambda才能在数据框上成功传递函数? apply()函数不应该按照定义吗?

或者我是否正在以相反的方式实现它,即将我的数据帧传递给函数,并返回一些输出,而不是迭代地将函数应用于数据框(如果这是有意义的)?

任何人都可以提供任何见解吗?

衷心的感谢!

1 个答案:

答案 0 :(得分:2)

lambda是不必要的,你可以做到

df['SR'] = df['Info'].apply(foo)

这里仍然可以使用