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

Why do I need lambda to apply functions to a Pandas Dataframe?

我有一个 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() 函数不应该按照定义这样做吗?

或者我是不是以另一种方式有效地做到这一点,即将我的数据框传递给函数,并返回一些输出,而不是将函数迭代地应用于数据框(如果这有意义的话)?

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

衷心感谢!

lambda 是不必要的,你可以这样做

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

在这里它仍然有效