2017-04-19 6 views
1

Ich versuche eine einfache Formel auszuwerten, die über eine GUI bereitgestellt wird. Momentan speichere ich die Daten in einem Diktat mit Buchstaben als Schlüssel (freut mich, das zu ändern, dachte aber, dass könnte die Lösung einen Schritt näher kommen). Schließlich möchte ich eine einfache folmula wie eingeben "A - J * 2"Auswertung der von der GUI bereitgestellten Formel

import pandas as pd 

data_dict = {} 
data_dict['A'] = pd.Series([1, 2, 3]) 
data_dict['C'] = pd.Series([0, 1, 2]) 
data_dict['E'] = pd.Series([0.5, 1.5, 2.5]) 
data_dict['J'] = pd.Series([4, 5, 6]) 

e.g. "A - J*2" ==> 
data_dict['A'] - data_dict['J'] * 2 

Die Buchstaben dynamisch ändern.

Antwort

1

Verwenden DataFrame.eval, müssen aber zuerst DataFrame von dict von Series erstellen:

df = pd.DataFrame(data_dict) 
print (df) 
    A C E J 
0 1 0 0.5 4 
1 2 1 1.5 5 
2 3 2 2.5 6 

print (df.eval("A - J*2")) 
0 -7 
1 -8 
2 -9 
dtype: int64 
+0

perfekt, vielen Dank. das macht den Job – Tobias