Skip to content

BUG/API: Datetime-like Index.order reset freq #10295

Closed
@sinhrks

Description

@sinhrks

DatetimeIndex / TimedeltaIndex

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.

PeriodIndex

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    DatetimeDatetime data dtypeFrequencyDateOffsetsPeriodPeriod data typeTimedeltaTimedelta data type

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions