2017-04-19 1 views
1

J'essaie d'évaluer une formule simple fournie via une interface graphique. Actuellement, je stocke les données dans un dict avec des lettres comme clés (heureux de changer cela, mais pensé que pourrait venir la solution un peu plus près). Finalement, je veux taper un folmula simple tel que "A - J * 2"Évaluation de la formule fournie par l'interface graphique

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 

Les lettres changeront dynamiquement.

Répondre

1

Utilisez DataFrame.eval, mais d'abord besoin de créer DataFrame de dict de Series:

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

parfait, merci beaucoup. ça fait le boulot – Tobias