1
python2を使用して、文字列として保存された数式を解析して評価できるようにします。基本的には、クライアントがデータに適用する式を記述できるようにしたいと考えています。これらの数式にはカスタム関数が含まれている場合があります。ここでは二つの例です:pandasデータ型で文字列化された数式を評価する
x/y
SumF(x)/y # Here SumF is my own custom function
私はSympyを使用し始めたが、私はパンダのデータフレームを評価するとき、それは動作しません得ることができないという点で、暗礁に乗り上げる(すなわち、以下からなるリストにデータフレームを変換しているようです列ラベル...)。シンジはパンダのDataFrame/Seriesオブジェクトをサポートしていないと思う。私は本当にすべての通常の理由のために人生をはるかに簡単にするので、これらのオブジェクトを使用したい。
プレーン古いeval()
でも動作しますが、通常の落とし穴の場合は避けることを望んでいました。
人々は次の中から何を示唆している:
- はSympyは何とか
- 使用
eval()
- を動作するように取得するには、何か他のもの(多分
ast.literal_eval()
)を試してみてください?あなたは試してみて、それが可能であれば最適化されたパーサーを使用し、またeval('input()')
を禁止しますpd.eval
使用することができます
乾杯
SymPy式をPython関数に変換するには 'lambdify'を使うことをお勧めします。 – asmeurer
私はこれを最初に試しましたが、 'lambdify'によって返された関数がDataFrameを何か他のものに変換したので、IIRC(これはもう少しです)です。しかし、私はもう一度試してみましたが、うまく動作するように見えます。私は現時点では0.7.4.1を使用していますが、最初に試したときに古いバージョンを使用していた可能性があります。それはいつも同じような振る舞いをしていますか? –
0.7.4.1は本当に古いバージョンです。できるだけ最新のバージョンを使用することをお勧めします。 – asmeurer