2016-10-31 17 views
1

python2を使用して、文字列として保存された数式を解析して評価できるようにします。基本的には、クライアントがデータに適用する式を記述できるようにしたいと考えています。これらの数式にはカスタム関数が含まれている場合があります。ここでは二つの例です:pandasデータ型で文字列化された数式を評価する

x/y 
SumF(x)/y # Here SumF is my own custom function 

私はSympyを使用し始めたが、私はパンダのデータフレームを評価するとき、それは動作しません得ることができないという点で、暗礁に乗り上げる(すなわち、以下からなるリストにデータフレームを変換しているようです列ラベル...)。シンジはパンダのDataFrame/Seriesオブジェクトをサポートしていないと思う。私は本当にすべての通常の理由のために人生をはるかに簡単にするので、これらのオブジェクトを使用したい。

プレーン古いeval()でも動作しますが、通常の落とし穴の場合は避けることを望んでいました。

人々は次の中から何を示唆している:

  1. はSympyは何とか
  2. 使用eval()
  3. を動作するように取得するには、何か他のもの(多分ast.literal_eval())を試してみてください?あなたは試してみて、それが可能であれば最適化されたパーサーを使用し、またeval('input()')を禁止しますpd.eval使用することができます

乾杯

+0

SymPy式をPython関数に変換するには 'lambdify'を使うことをお勧めします。 – asmeurer

+0

私はこれを最初に試しましたが、 'lambdify'によって返された関数がDataFrameを何か他のものに変換したので、IIRC(これはもう少しです)です。しかし、私はもう一度試してみましたが、うまく動作するように見えます。私は現時点では0.7.4.1を使用していますが、最初に試したときに古いバージョンを使用していた可能性があります。それはいつも同じような振る舞いをしていますか? –

+0

0.7.4.1は本当に古いバージョンです。できるだけ最新のバージョンを使用することをお勧めします。 – asmeurer

答えて

関連する問題