-
-
Notifications
You must be signed in to change notification settings - Fork 18.3k
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
BUG: comparisons fail for NaT in DataFrame #15697
Comments
This is as expected, see the big red box: http://pandas-docs.github.io/pandas-docs-travis/missing_data.html#values-considered-missing
|
actually you are right, this broken for dataframe for NaT, but works for np.nan. so I'll mark it, though you should never do this. Maybe we should just raise.
|
Agreed; as above, the correct result of Is there a reason why this call should never be made? At worst, we could just call |
you don't want to compare against a null value, its not intuitive to do this as nan != nan is just plain confusing to most people. The more explicit
So its not that you shouldn't do it if you know what you are doing, its just non-obvious from reading. Further it can provide lots of opportunities for odd bugs, consider.
this will give totally unexpected results. |
Sure, that specific call would be better as >>> nat = pd.NaT
>>> now = pd.to_datetime('now')
>>> nat < now
False
>>> pd.DataFrame([[nat]]) < now
0
0 True |
here as the issue for Series: #9005 this is not very common on frames, you generally cannot compare frames, unless they are of a single dtype. You would usually select out a portion and then compare. So its a bug. pull-requests are welcomed! |
Code Sample, a copy-pastable example if possible
Problem description
Comparisons in a dataframe containing a single nat give incorrect answers. Note this occurs with both datetime and timedelta nats.
Expected Output
Output of
pd.show_versions()
INSTALLED VERSIONS
commit: None
python: 3.5.2.final.0
python-bits: 64
OS: Linux
OS-release: 4.9.8-100.fc24.x86_64
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: C
LANG: C
LOCALE: None.None
pandas: 0.19.0+579.g4ce9c0c
pytest: 3.0.5
pip: 9.0.1
setuptools: 27.2.0
Cython: 0.25.2
numpy: 1.11.3
scipy: 0.18.1
xarray: 0.9.1
IPython: 4.2.0
sphinx: 1.5.1
patsy: 0.4.1
dateutil: 2.6.0
pytz: 2016.10
blosc: None
bottleneck: 1.2.0
tables: 3.3.0
numexpr: 2.6.2
feather: None
matplotlib: 2.0.0
openpyxl: 2.4.1
xlrd: 1.0.0
xlwt: 1.2.0
xlsxwriter: 0.9.6
lxml: 3.7.2
bs4: 4.5.3
html5lib: 0.999
sqlalchemy: 1.1.5
pymysql: None
psycopg2: None
jinja2: 2.9.4
s3fs: None
pandas_gbq: None
pandas_datareader: None
The text was updated successfully, but these errors were encountered: