DataFrameのapplyに適用する関数を動的に変更する方法
pandasのDataFrameに対して関数を適用する場合はapplyを使用しますが、このapplyの引数に指定する関数を動的に変更できないか調べてみました。
これが可能となると、例えば外部ファイルに定義した関数を順番に適用したり、パラメータとして渡された関数を実行できたりするようになります。
結果とすると簡単な実装でできることがわかりました。
やり方
apply(eval("{関数名}"))
のようにすると文字列として関数を渡すことができるようになります。あとは関数名を下のように変数化してあげればapplyに適用する関数を動的に変更することができます。
import pandas as pd
def show(s):
print(s)
df = pd.DataFrame({"col1": [1, 2, 3],
"col2": [4, 5, 6]})
function = "show"
df['col1'].apply(eval(function))