Returning a categorical feels more natural to me ```python In [11]: pd.factorize(pd.Categorical(['a', 'a', 'c'])) Out[11]: (array([0, 0, 1]), array([0, 1])) ``` That's kind of what we do for a `DatetimeIndex` with TZ: ```python In [10]: pd.factorize(pd.Series(pd.DatetimeIndex(['2017', '2017'], tz='US/Eastern'))) Out[10]: (array([0, 0]), DatetimeIndex(['2017-01-01 00:00:00-05:00'], dtype='datetime64[ns, US/Eastern]', freq=None)) ```