私はPandasデータフレームを持っていて、apply()関数を使って1つの列のエントリに関数を渡そうとしています。パンダのデータフレームに関数を適用するためにラムダが必要なのはなぜですか?
My機能は次の形式になります。
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)))
それは正常に動作します。
ラムダの仕組みを理解しています(少なくとも私がやったと思いました)。私はそれがなぜ必要なのか分からない。
なぜデータフレーム上で関数を正常に渡すにはラムダが必要ですか? apply()関数はそれを定義で行うべきではありませんか?
または、データフレームを関数に繰り返し渡すのではなく、関数にデータフレームを渡して出力を返すことが効果的ですか?
誰でも洞察力を提供できますか?
よろしくお願いいたします。
に動作します 'lambda'は必要ありません:' DF [ 'SR'] = DFの[」 Info ']。apply(foo) 'はうまくいくでしょう – EdChum