BUG: Comparisons with non-comparable objects in DataFrame return True · Issue #4537 · pandas-dev/pandas (original) (raw)
I can't tell if this is expected or not (taken from part of test_where_datetime
in tests/test_frame). The change in #3311 (which the test case came from) didn't specify what should happen with non-datetime comparisons. Right now they return True, which doesn't really make sense. They should probably return False instead.
In [16]: df = DataFrame(dict(A = date_range('20130102',periods=5), B = date_range('20130104',periods=5), C = np.random.randn(5)))
In [17]: stamp = datetime(2013,1,3)
In [18]: df Out[18]: A B C 0 2013-01-02 00:00:00 2013-01-04 00:00:00 -0.321163 1 2013-01-03 00:00:00 2013-01-05 00:00:00 1.219840 2 2013-01-04 00:00:00 2013-01-06 00:00:00 -1.048629 3 2013-01-05 00:00:00 2013-01-07 00:00:00 -0.861459 4 2013-01-06 00:00:00 2013-01-08 00:00:00 1.480088
In [19]: df > stamp Out[19]: A B C 0 False True True 1 False True True 2 True True True 3 True True True 4 True True True
In [20]: df < stamp Out[20]: A B C 0 True False True 1 False False True 2 False False True 3 False False True 4 False False True
In [21]: df == stamp Out[21]: A B C 0 False False False 1 True False False 2 False False False 3 False False False 4 False False False
In [22]: df != stamp Out[22]: A B C 0 True True True 1 False True True 2 True True True 3 True True True 4 True True True
In [23: pd.version Out[23]: '0.12.0-154-g7fd6b20'
Column C probably should be False for every case.