From cd302625d59a8577ba2a0960bc0592916ac99dfc Mon Sep 17 00:00:00 2001 From: jreback Date: Wed, 15 Jan 2014 11:39:41 -0500 Subject: [PATCH] BUG: Bug in pd.read_msgpack with inferring a DateTimeIndex frequencey incorrectly (GH5947) --- doc/source/release.rst | 2 ++ pandas/io/packers.py | 9 +++++---- pandas/io/tests/test_packers.py | 11 +++++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/doc/source/release.rst b/doc/source/release.rst index eb40b9474f41b..d567d3557dc8f 100644 --- a/doc/source/release.rst +++ b/doc/source/release.rst @@ -107,6 +107,8 @@ Bug Fixes - ``pd.match`` not returning passed sentinel - ``Panel.to_frame()`` no longer fails when ``major_axis`` is a ``MultiIndex`` (:issue:`5402`). + - Bug in ``pd.read_msgpack`` with inferring a ``DateTimeIndex`` frequencey + incorrectly (:issue:`5947`) pandas 0.13.0 ------------- diff --git a/pandas/io/packers.py b/pandas/io/packers.py index eba2579e80ea8..105bea92124fd 100644 --- a/pandas/io/packers.py +++ b/pandas/io/packers.py @@ -458,18 +458,19 @@ def decode(obj): return globals()[obj['klass']].from_tuples(data, names=obj['names']) elif typ == 'period_index': data = unconvert(obj['data'], np.int64, obj.get('compress')) - return globals()[obj['klass']](data, name=obj['name'], - freq=obj['freq']) + d = dict(name=obj['name'], freq=obj['freq']) + return globals()[obj['klass']](data, **d) elif typ == 'datetime_index': data = unconvert(obj['data'], np.int64, obj.get('compress')) - result = globals()[obj['klass']](data, freq=obj['freq'], - name=obj['name']) + d = dict(name=obj['name'], freq=obj['freq'], verify_integrity=False) + result = globals()[obj['klass']](data, **d) tz = obj['tz'] # reverse tz conversion if tz is not None: result = result.tz_localize('UTC').tz_convert(tz) return result + elif typ == 'series': dtype = dtype_for(obj['dtype']) index = obj['index'] diff --git a/pandas/io/tests/test_packers.py b/pandas/io/tests/test_packers.py index 1563406b1f8af..8cab9a65995bf 100644 --- a/pandas/io/tests/test_packers.py +++ b/pandas/io/tests/test_packers.py @@ -372,6 +372,17 @@ def test_iterator(self): for i, packed in enumerate(read_msgpack(path, iterator=True)): check_arbitrary(packed, l[i]) + def tests_datetimeindex_freq_issue(self): + + # GH 5947 + # inferring freq on the datetimeindex + df = DataFrame([1, 2, 3], index=date_range('1/1/2013', '1/3/2013')) + result = self.encode_decode(df) + assert_frame_equal(result, df) + + df = DataFrame([1, 2], index=date_range('1/1/2013', '1/2/2013')) + result = self.encode_decode(df) + assert_frame_equal(result, df) class TestSparse(TestPackers):