diff --git a/pandas/core/indexes/period.py b/pandas/core/indexes/period.py index 7188c1e059125..7ece1eaf547c8 100644 --- a/pandas/core/indexes/period.py +++ b/pandas/core/indexes/period.py @@ -227,6 +227,8 @@ def _simple_new(cls, values, name=None, freq=None, **kwargs): values = np.asarray(values) if is_float_dtype(values): raise TypeError("PeriodIndex._simple_new does not accept floats.") + if freq: + freq = Period._maybe_convert_freq(freq) values = PeriodArray(values, freq=freq) if not isinstance(values, PeriodArray): diff --git a/pandas/io/packers.py b/pandas/io/packers.py index af4d7c69e01c7..1e41369b00811 100644 --- a/pandas/io/packers.py +++ b/pandas/io/packers.py @@ -605,7 +605,7 @@ def decode(obj): elif typ == u'datetime_index': data = unconvert(obj[u'data'], np.int64, obj.get(u'compress')) d = dict(name=obj[u'name'], freq=obj[u'freq']) - result = DatetimeIndex._simple_new(data, **d) + result = DatetimeIndex(data, **d) tz = obj[u'tz'] # reverse tz conversion diff --git a/pandas/tests/io/test_packers.py b/pandas/tests/io/test_packers.py index 8b7151620ee0c..4cccac83e0a35 100644 --- a/pandas/tests/io/test_packers.py +++ b/pandas/tests/io/test_packers.py @@ -940,3 +940,9 @@ def test_msgpacks_legacy(self, current_packers_data, all_packers_data, except ImportError: # blosc not installed pass + + def test_msgpack_period_freq(self): + # https://github.com/pandas-dev/pandas/issues/24135 + s = Series(np.random.rand(5), index=date_range('20130101', periods=5)) + r = read_msgpack(s.to_msgpack()) + repr(r)