@@ -2179,6 +2179,93 @@ def test_comparisons_coverage(self):
exp = rng == rng
self .assert_numpy_array_equal(result, exp)
+ def test_comparisons_nat (self ):
+ fidx1 = pd.Index([1.0 , np.nan, 3.0 , np.nan, 5.0 , 7.0 ])
+ fidx2 = pd.Index([2.0 , 3.0 , np.nan, np.nan, 6.0 , 7.0 ])
+
+ didx1 = pd.DatetimeIndex([' 2014-01-01' , pd.NaT, ' 2014-03-01' , pd.NaT,
+ ' 2014-05-01' , ' 2014-07-01' ])
+ didx2 = pd.DatetimeIndex([' 2014-02-01' , ' 2014-03-01' , pd.NaT, pd.NaT,
+ ' 2014-06-01' , ' 2014-07-01' ])
+ darr = np.array([np.datetime64(' 2014-02-01 00:00Z' ),
+ np.datetime64(' 2014-03-01 00:00Z' ),
+ np.datetime64(' nat' ), np.datetime64(' nat' ),
+ np.datetime64(' 2014-06-01 00:00Z' ),
+ np.datetime64(' 2014-07-01 00:00Z' )])
+
+ if _np_version_under1p7:
+ # cannot test array because np.datetime('nat') returns today's date
+ cases = [(fidx1, fidx2), (didx1, didx2)]
+ else :
+ cases = [(fidx1, fidx2), (didx1, didx2), (didx1, darr)]
+
+ # Check pd.NaT is handles as the same as np.nan
+ for idx1, idx2 in cases:
+ result = idx1 < idx2
+ expected = np.array([True , False , False , False , True , False ])
+ self .assert_numpy_array_equal(result, expected)
+ result = idx2 > idx1
+ expected = np.array([True , False , False , False , True , False ])
+ self .assert_numpy_array_equal(result, expected)
+
+ result = idx1 <= idx2
+ expected = np.array([True , False , False , False , True , True ])
+ self .assert_numpy_array_equal(result, expected)
+ result = idx2 >= idx1
+ expected = np.array([True , False , False , False , True , True ])
+ self .assert_numpy_array_equal(result, expected)
+
+ result = idx1 == idx2
+ expected = np.array([False , False , False , False , False , True ])
+ self .assert_numpy_array_equal(result, expected)
+
+ result = idx1 != idx2
+ expected = np.array([True , True , True , True , True , False ])
+ self .assert_numpy_array_equal(result, expected)
+
+ for idx1, val in [(fidx1, np.nan), (didx1, pd.NaT)]:
+ result = idx1 < val
+ expected = np.array([False , False , False , False , False , False ])
+ self .assert_numpy_array_equal(result, expected)
+ result = idx1 > val
+ self .assert_numpy_array_equal(result, expected)
+
+ result = idx1 <= val
+ self .assert_numpy_array_equal(result, expected)
+ result = idx1 >= val
+ self .assert_numpy_array_equal(result, expected)
+
+ result = idx1 == val
+ self .assert_numpy_array_equal(result, expected)
+
+ result = idx1 != val
+ expected = np.array([True , True , True , True , True , True ])
+ self .assert_numpy_array_equal(result, expected)
+
+ # Check pd.NaT is handles as the same as np.nan
+ for idx1, val in [(fidx1, 3 ), (didx1, datetime(2014 , 3 , 1 ))]:
+ result = idx1 < val
+ expected = np.array([True , False , False , False , False , False ])
+ self .assert_numpy_array_equal(result, expected)
+ result = idx1 > val
+ expected = np.array([False , False , False , False , True , True ])
+ self .assert_numpy_array_equal(result, expected)
+
+ result = idx1 <= val
+ expected = np.array([True , False , True , False , False , False ])
+ self .assert_numpy_array_equal(result, expected)
+ result = idx1 >= val
+ expected = np.array([False , False , True , False , True , True ])
+ self .assert_numpy_array_equal(result, expected)
+
+ result = idx1 == val
+ expected = np.array([False , False , True , False , False , False ])
+ self .assert_numpy_array_equal(result, expected)
+
+ result = idx1 != val
+ expected = np.array([True , True , False , True , True , True ])
+ self .assert_numpy_array_equal(result, expected)
+
def test_map (self ):
rng = date_range(' 1/1/2000' , periods = 10 )