@@ -636,20 +636,23 @@ def __getstate__(self):
636
636
637
637
def __setstate__ (self , state ):
638
638
# 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
640
642
self ._unpickle_frame_compat (state )
641
- # old DataFrame pickle
642
- elif len (state ) == 2 : # pragma: no cover
643
+ else : # pragma: no cover
643
644
# old pickling format, for compatibility
644
645
self ._unpickle_matrix_compat (state )
645
- else :
646
- assert (isinstance (state , BlockManager ))
647
- self ._data = state
648
646
649
647
def _unpickle_frame_compat (self , state ): # pragma: no cover
650
648
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
+
653
656
index = _unpickle_array (idx )
654
657
self ._data = self ._init_dict (series , index , columns , None )
655
658
0 commit comments