Could someone explain me why this simple piece of code returns False
? That's probably pretty simple, but I don't understand why it behaves like that:
import pandas as pd
eval_string = '"abc"=="abc"'
print(pd.eval(eval_string, parser='pandas')) # False
Note that it I try to use string's eq() function instead, it behaves as I expect.
Can be run online here: https://onecompiler.com/python/3zhsnud82
Thanks in advance for your help.
pandas.eval
does not support scalar comparison.
This Python syntax is not allowed:
- Expressions
- ...
- Boolean expressions consisting of only scalar values
Pass it unsupported syntax, and Pandas makes no promises about what you'll get back. (That includes not promising to give wrong results. The fact that pandas.eval('4==4')
happens to give True
doesn't mean it's supported.)
pandas.eval
is a specialized tool for evaluating specific sorts of expressions on large dataframes. It should not be used for running general Python code.