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