From 9eed2e41610a39eed8fe24a98f30652cbf05865a Mon Sep 17 00:00:00 2001 From: immerrr Date: Fri, 18 Jul 2014 21:33:57 +0400 Subject: [PATCH 1/2] TST: add mixed-type panels & frames to generate_legacy_pickles Don't generate them for pre-0.14.1 as they cannot be unpickled. --- .../0.13.0/0.13.0_x86_64_linux_2.7.8.pickle | Bin 0 -> 7639 bytes .../0.14.0/0.14.0_x86_64_linux_2.7.8.pickle | Bin 0 -> 9309 bytes .../0.14.1/0.14.1_x86_64_linux_2.7.8.pickle | Bin 0 -> 11930 bytes pandas/io/tests/generate_legacy_pickles.py | 16 ++++++++++++++-- 4 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 pandas/io/tests/data/legacy_pickle/0.13.0/0.13.0_x86_64_linux_2.7.8.pickle create mode 100644 pandas/io/tests/data/legacy_pickle/0.14.0/0.14.0_x86_64_linux_2.7.8.pickle create mode 100644 pandas/io/tests/data/legacy_pickle/0.14.1/0.14.1_x86_64_linux_2.7.8.pickle diff --git a/pandas/io/tests/data/legacy_pickle/0.13.0/0.13.0_x86_64_linux_2.7.8.pickle b/pandas/io/tests/data/legacy_pickle/0.13.0/0.13.0_x86_64_linux_2.7.8.pickle new file mode 100644 index 0000000000000000000000000000000000000000..3ffecb77ef8c94c4c3275b91d3850c78d0810e18 GIT binary patch literal 7639 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 Qaxd;kCd literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/legacy_pickle/0.14.0/0.14.0_x86_64_linux_2.7.8.pickle b/pandas/io/tests/data/legacy_pickle/0.14.0/0.14.0_x86_64_linux_2.7.8.pickle new file mode 100644 index 0000000000000000000000000000000000000000..19cbcddc4ded850c7590344bd1ea85e11387a42d GIT binary patch literal 9309 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 DWQl2+ literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/legacy_pickle/0.14.1/0.14.1_x86_64_linux_2.7.8.pickle b/pandas/io/tests/data/legacy_pickle/0.14.1/0.14.1_x86_64_linux_2.7.8.pickle new file mode 100644 index 0000000000000000000000000000000000000000..af530fcd3fb39f924a2db40ce16086ef7a6227d0 GIT binary patch literal 11930 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 kocJE}= '0.14.1': + # Pre-0.14.1 versions generated non-unpicklable mixed-type frames and + # panels if their columns/items were non-unique. + mixed_dup_df = DataFrame(data) + mixed_dup_df.columns = list("ABCDA") + + mixed_dup_panel = Panel(dict(ItemA=frame['float'], ItemB=frame['int'])) + mixed_dup_panel.items = ['ItemA', 'ItemA'] + frame['mixed_dup'] = mixed_dup_df + panel['mixed_dup'] = mixed_dup_panel return dict( series = series, frame = frame, From 4434f4817c0bbc8d4d7300d6ad3c8c297e245ea7 Mon Sep 17 00:00:00 2001 From: immerrr Date: Fri, 18 Jul 2014 21:34:50 +0400 Subject: [PATCH 2/2] BUG: fix unpickling of some pre-0.14.1 pickles with non-unique items Series, frames and panels that contain only one block can be unpickled under the assumption that block items correspond to manager items 1-to-1. --- doc/source/v0.15.0.txt | 2 ++ pandas/core/internals.py | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/doc/source/v0.15.0.txt b/doc/source/v0.15.0.txt index 5e3f97944c243..103ac2a34a49a 100644 --- a/doc/source/v0.15.0.txt +++ b/doc/source/v0.15.0.txt @@ -191,6 +191,8 @@ Bug Fixes - Bug in pickles contains ``DateOffset`` may raise ``AttributeError`` when ``normalize`` attribute is reffered internally (:issue:`7748`) +- Bug in pickle deserialization that failed for pre-0.14.1 containers with dup items trying to avoid ambiguity + when matching block and manager items, when there's only one block there's no ambiguity (:issue:`7794`) - Bug in ``is_superperiod`` and ``is_subperiod`` cannot handle higher frequencies than ``S`` (:issue:`7760`, :issue:`7772`, :issue:`7803`) diff --git a/pandas/core/internals.py b/pandas/core/internals.py index f649baeb16278..cad7b579aa554 100644 --- a/pandas/core/internals.py +++ b/pandas/core/internals.py @@ -2271,10 +2271,23 @@ def unpickle_block(values, mgr_locs): ax_arrays, bvalues, bitems = state[:3] self.axes = [_ensure_index(ax) for ax in ax_arrays] + + if len(bitems) == 1 and self.axes[0].equals(bitems[0]): + # This is a workaround for pre-0.14.1 pickles that didn't + # support unpickling multi-block frames/panels with non-unique + # columns/items, because given a manager with items ["a", "b", + # "a"] there's no way of knowing which block's "a" is where. + # + # Single-block case can be supported under the assumption that + # block items corresponded to manager items 1-to-1. + all_mgr_locs = [slice(0, len(bitems[0]))] + else: + all_mgr_locs = [self.axes[0].get_indexer(blk_items) + for blk_items in bitems] + self.blocks = tuple( - unpickle_block(values, - self.axes[0].get_indexer(items)) - for values, items in zip(bvalues, bitems)) + unpickle_block(values, mgr_locs) + for values, mgr_locs in zip(bvalues, all_mgr_locs)) self._post_setstate()