我有一個熊貓數據框,並試圖使用apply()函數在一列中的條目上傳遞一個函數。爲什麼我需要lambda將函數應用到熊貓數據框?
我的函數的形式爲:
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 [」信息']。apply(foo)'只會工作 – EdChum