2016-05-07 9 views
1
>>> df['X'].head() 
0 25+4 
1 25+5 
2 15+3 
3 20+2 
4 20+3 
Name: X, dtype: object 

Wie bewerte ich das so meine Datenrahmen ist folgendes:Math Eval String in Datenrahmen Python

>>> df['X'].head() 
0 29 
1 30 
2 18 
3 22 
4 23 

Name: X, dtype: int64 
+1

Ein Wort der Warnung: 'eval'ing willkürlichen Python-Code ist [potenziell gefährlich] (http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html), vor allem, wenn der Code stammt aus einer externen Quelle, die Sie nicht 100% können Vertrauen. Erinnere dich an [Little Bobby Tables] (https://xkcd.com/327/). –

Antwort

1

Obwohl es Sicherheitsbedenken sind, können Sie eval verwenden können, um jedes Element zu bewerten einen lambda Ausdruck.

df = pd.DataFrame({'X': ['25+4', '25+5', '15+3', '20+2', '20+3']}) 

>>> df 
     X 
0 25+4 
1 25+5 
2 15+3 
3 20+2 
4 20+3 

>>> df.X.apply(lambda x: eval(x)) 
0 29 
1 30 
2 18 
3 22 
4 23 
Name: X, dtype: int64 

Eine Beschreibung der Sicherheitsbedenken, siehe: