Skip to content

REGR: freq "m" (as alias of deprecated "M") raises an error #56847

Closed
@jorisvandenbossche

Description

@jorisvandenbossche

With latest main (and 2.2.0rc0):

In [14]: x = pd.date_range("2010-01-01", periods=20, freq="m")
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File offsets.pyx:4715, in pandas._libs.tslibs.offsets._get_offset()

KeyError: 'M'

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
File offsets.pyx:4864, in pandas._libs.tslibs.offsets.to_offset()

File offsets.pyx:4721, in pandas._libs.tslibs.offsets._get_offset()

ValueError: Invalid frequency: M, failed to parse with error message: KeyError('M')

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
Cell In[14], line 1
----> 1 x = pd.date_range("2010-01-01", periods=20, freq="m")

File ~/scipy/pandas/pandas/core/indexes/datetimes.py:1008, in date_range(start, end, periods, freq, tz, normalize, name, inclusive, unit, **kwargs)
   1005 if freq is None and com.any_none(periods, start, end):
   1006     freq = "D"
-> 1008 dtarr = DatetimeArray._generate_range(
   1009     start=start,
   1010     end=end,
   1011     periods=periods,
   1012     freq=freq,
   1013     tz=tz,
   1014     normalize=normalize,
   1015     inclusive=inclusive,
   1016     unit=unit,
   1017     **kwargs,
   1018 )
   1019 return DatetimeIndex._simple_new(dtarr, name=name)

File ~/scipy/pandas/pandas/core/arrays/datetimes.py:434, in DatetimeArray._generate_range(cls, start, end, periods, freq, tz, normalize, ambiguous, nonexistent, inclusive, unit)
    429 if com.count_not_none(start, end, periods, freq) != 3:
    430     raise ValueError(
    431         "Of the four parameters: start, end, periods, "
    432         "and freq, exactly three must be specified"
    433     )
--> 434 freq = to_offset(freq)
    436 if start is not None:
    437     start = Timestamp(start)

File offsets.pyx:4730, in pandas._libs.tslibs.offsets.to_offset()

File offsets.pyx:4872, in pandas._libs.tslibs.offsets.to_offset()

ValueError: Invalid frequency: m, failed to parse with error message: ValueError("Invalid frequency: M, failed to parse with error message: KeyError('M')")

While before this seems to have worked:

n [1]: pd.__version__
Out[1]: '2.1.2'

In [2]: x = pd.date_range("2010-01-01", periods=20, freq="m")

In [3]: x
Out[3]: 
DatetimeIndex(['2010-01-31', '2010-02-28', '2010-03-31', '2010-04-30',
               '2010-05-31', '2010-06-30', '2010-07-31', '2010-08-31',
               '2010-09-30', '2010-10-31', '2010-11-30', '2010-12-31',
               '2011-01-31', '2011-02-28', '2011-03-31', '2011-04-30',
               '2011-05-31', '2011-06-30', '2011-07-31', '2011-08-31'],
              dtype='datetime64[ns]', freq='M')

cc @MarcoGorelli @natmokval

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrequencyDateOffsetsRegressionFunctionality that used to work in a prior pandas version

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions