Skip to content

Commit af7647b

Browse files
committed
BUG: support legacy legacy DataFrame pickle
1 parent c68e278 commit af7647b

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

pandas/core/frame.py

+11-8
Original file line numberDiff line numberDiff line change
@@ -636,20 +636,23 @@ def __getstate__(self):
636636

637637
def __setstate__(self, state):
638638
# old DataFrame pickle
639-
if len(state) == 3: # pragma: no cover
639+
if isinstance(state, BlockManager):
640+
self._data = state
641+
elif isinstance(state[0], dict): # pragma: no cover
640642
self._unpickle_frame_compat(state)
641-
# old DataFrame pickle
642-
elif len(state) == 2: # pragma: no cover
643+
else: # pragma: no cover
643644
# old pickling format, for compatibility
644645
self._unpickle_matrix_compat(state)
645-
else:
646-
assert(isinstance(state, BlockManager))
647-
self._data = state
648646

649647
def _unpickle_frame_compat(self, state): # pragma: no cover
650648
from pandas.core.common import _unpickle_array
651-
series, cols, idx = state
652-
columns = _unpickle_array(cols)
649+
if len(state) == 2: # pragma: no cover
650+
series, idx = state
651+
columns = sorted(series)
652+
else:
653+
series, cols, idx = state
654+
columns = _unpickle_array(cols)
655+
653656
index = _unpickle_array(idx)
654657
self._data = self._init_dict(series, index, columns, None)
655658

0 commit comments

Comments
 (0)