Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DataFrame Query Rounding Error #14241

Closed
wisefool769 opened this issue Sep 17, 2016 · 1 comment
Closed

DataFrame Query Rounding Error #14241

wisefool769 opened this issue Sep 17, 2016 · 1 comment
Labels
Bug Compat pandas objects compatability with Numpy or Python functions
Milestone

Comments

@wisefool769
Copy link

wisefool769 commented Sep 17, 2016

Code Sample, a copy-pastable example if possible

import pandas as pd

df = pd.DataFrame([{"A": 1000000000.0099}])
cutoff = 1000000000.006

local_res = "works" if df.query("A < @cutoff").empty else "fails"
print("query by local var %s" % local_res)

explicit_res = "works" if df.query("A < %.3f" % cutoff).empty else "fails"
print("explicit query %s" % explicit_res)

Expected Output

query by local var works
explicit query fails

output of pd.show_versions()

INSTALLED VERSIONS

commit: None
python: 2.7.12.final.0
python-bits: 64
OS: Linux
OS-release: 4.2.0-42-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8

pandas: 0.18.1
nose: 1.3.7
pip: 8.1.2
setuptools: 20.3
Cython: 0.23.4
numpy: 1.11.1
scipy: 0.18.0
statsmodels: 0.6.1
xarray: None
IPython: 5.0.0
sphinx: 1.3.5
patsy: 0.4.1
dateutil: 2.5.1
pytz: 2016.2
blosc: None
bottleneck: 1.1.0
tables: 3.2.3.1
numexpr: 2.6.1
matplotlib: 1.5.1
openpyxl: 2.3.2
xlrd: 0.9.4
xlwt: 1.0.0
xlsxwriter: 0.8.4
lxml: 3.6.0
bs4: 4.4.1
html5lib: None
httplib2: None
apiclient: None
sqlalchemy: 1.0.13
pymysql: None
psycopg2: 2.6.1 (dt dec pq3 ext)
jinja2: 2.8
boto: 2.39.0
pandas_datareader: None

@chris-b1
Copy link
Contributor

Yeah, something going wrong here - most likely the literal being cast to a 32 bit float. Doesn't seem to be a numexpr bug, and works correctly on python 3, PRs welcome!

import numexpr as ne
a, b = 1000000000.0099, 1000000000.006

ne.evaluate('a < %.3f' % b)
Out[57]: array(False, dtype=bool)

pd.eval("a <  %.3f" % b)
Out[58]: True

@chris-b1 chris-b1 added the Bug label Sep 18, 2016
@jreback jreback added this to the 0.19.0 milestone Sep 20, 2016
@jreback jreback added the Compat pandas objects compatability with Numpy or Python functions label Sep 20, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Compat pandas objects compatability with Numpy or Python functions
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants