@@ -2189,6 +2189,51 @@ def test_join_with_period_index(self):
2189
2189
'PeriodIndex-ed objects' ):
2190
2190
df .columns .join (s .index , how = join )
2191
2191
2192
+ def test_factorize (self ):
2193
+ idx1 = DatetimeIndex (['2014-01' , '2014-01' , '2014-02' ,
2194
+ '2014-02' , '2014-03' , '2014-03' ])
2195
+
2196
+ exp_arr = np .array ([0 , 0 , 1 , 1 , 2 , 2 ])
2197
+ exp_idx = DatetimeIndex (['2014-01' , '2014-02' , '2014-03' ])
2198
+
2199
+ arr , idx = idx1 .factorize ()
2200
+ self .assert_numpy_array_equal (arr , exp_arr )
2201
+ self .assert_ (idx .equals (exp_idx ))
2202
+
2203
+ arr , idx = idx1 .factorize (sort = True )
2204
+ self .assert_numpy_array_equal (arr , exp_arr )
2205
+ self .assert_ (idx .equals (exp_idx ))
2206
+
2207
+ # tz must be preserved
2208
+ idx1 = idx1 .tz_localize ('Asia/Tokyo' )
2209
+ exp_idx = exp_idx .tz_localize ('Asia/Tokyo' )
2210
+
2211
+ arr , idx = idx1 .factorize ()
2212
+ self .assert_numpy_array_equal (arr , exp_arr )
2213
+ self .assert_ (idx .equals (exp_idx ))
2214
+
2215
+ idx2 = pd .DatetimeIndex (['2014-03' , '2014-03' , '2014-02' , '2014-01' ,
2216
+ '2014-03' , '2014-01' ])
2217
+
2218
+ exp_arr = np .array ([2 , 2 , 1 , 0 , 2 , 0 ])
2219
+ exp_idx = DatetimeIndex (['2014-01' , '2014-02' , '2014-03' ])
2220
+ arr , idx = idx2 .factorize (sort = True )
2221
+ self .assert_numpy_array_equal (arr , exp_arr )
2222
+ self .assert_ (idx .equals (exp_idx ))
2223
+
2224
+ exp_arr = np .array ([0 , 0 , 1 , 2 , 0 , 2 ])
2225
+ exp_idx = DatetimeIndex (['2014-03' , '2014-02' , '2014-01' ])
2226
+ arr , idx = idx2 .factorize ()
2227
+ self .assert_numpy_array_equal (arr , exp_arr )
2228
+ self .assert_ (idx .equals (exp_idx ))
2229
+
2230
+ # freq must be preserved
2231
+ idx3 = date_range ('2000-01' , periods = 4 , freq = 'M' , tz = 'Asia/Tokyo' )
2232
+ exp_arr = np .array ([0 , 1 , 2 , 3 ])
2233
+ arr , idx = idx3 .factorize ()
2234
+ self .assert_numpy_array_equal (arr , exp_arr )
2235
+ self .assert_ (idx .equals (idx3 ))
2236
+
2192
2237
2193
2238
class TestDatetime64 (tm .TestCase ):
2194
2239
"""
0 commit comments