У меня есть кадр данных Pandas, и я пытаюсь передать функцию через записи в одном столбце, используя функцию apply().Зачем мне нужна лямбда для применения функций к Dataframe Pandas?
Моя функция имеет вид:
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
Мой dataframe имеет вид:
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)))
Он отлично работает.
Я понимаю, как работает Лямбда (по крайней мере, я думал, что сделал). Я не понимаю, зачем мне это нужно.
Зачем мне нужна лямбда, чтобы успешно передать функцию по кадру данных? Должна ли функция apply() делать это по определению?
Или это то, что я эффективно делаю это иначе, например, передавая кадр данных в функцию и возвращаю некоторый вывод, а не итеративно применяя функцию к кадру данных (если это имеет смысл)?
Может ли кто-нибудь предложить какое-либо понимание?
Моя искренняя благодарность!
В этом случае 'lambda' не нужно:' DF [ 'SR'] = D [» Info ']. Apply (foo) 'будет просто работать – EdChum