为什么我需要 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)
在这里它仍然有效
我有一个 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)
在这里它仍然有效