BUG/API: Datetime-like Index.order reset freq · Issue #10295 · pandas-dev/pandas (original) (raw)

import pandas as pd
idx = pd.date_range('2011-01-01', '2011-05-01', freq='M')

# freq must be preserved, because ``DatetimeIndex`` is ordered when it has freq
idx.order()
# DatetimeIndex(['2011-01-31', '2011-02-28', '2011-03-31', '2011-04-30'], dtype='datetime64[ns]', freq=None, tz=None)

# freq must be preserved like idx[::-1]
idx.order(ascending=False)
# DatetimeIndex(['2011-04-30', '2011-03-31', '2011-02-28', '2011-01-31'], dtype='datetime64[ns]', freq=None, tz=None)

idx[::-1]
# DatetimeIndex(['2011-04-30', '2011-03-31', '2011-02-28', '2011-01-31'], dtype='datetime64[ns]', freq='-1M', tz=None)

Internally, order may use take when return_indexer is True and should be fixed also.

Results in TypeError because it doesn't pass freq ( PeriodIndex without freq is meaningless ). Required to fix #7832 first to use the same flow as DatetimeIndex, I think.

idx = pd.period_range('2011-01-01', '2011-05-01', freq='M')
idx.order()
# TypeError: expected string or buffer

idx.order().freq is None
# True