§
    Ñ! he‡  ã                  óê  — d dl mZ d dlZd dlmZmZ d dlZd dlZd dl	m
c mZ d dlmZ d dlmZ d dlmZ d dlmZmZ d dlmZmZmZmZ d d	lmZ d d
lmZ d dlm c m!Z" d dlm#Z#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8 erd dl9m:Z:m;Z;m<Z< d dl=m>Z> d dl?m@Z@  G d„ d¦  «        ZA	 d9d:d„ZBd9d;d„ZC	 d9d<d"„ZDd=d%„ZEd>d?d)„ZFd@d?d*„ZGdAd-„ZH	 d>dBd0„ZIdCd5„ZJdDd8„ZKdS )Eé    )ÚannotationsN)ÚTYPE_CHECKINGÚcast)ÚPerformanceWarning)Úcache_readonly)Úfind_stack_level)Úfind_common_typeÚmaybe_promote)Úensure_platform_intÚis_1d_only_ea_dtypeÚ
is_integerÚneeds_i8_conversion)ÚExtensionDtype)Únotna)Ú	factorizeÚunique)Úfactorize_from_iterable)Úensure_wrapped_if_datetimelike)Ú	DataFrame)ÚIndexÚ
MultiIndexÚ
RangeIndex)Úconcat)ÚSeries)Úcompress_group_indexÚdecons_obs_group_idsÚget_compressed_idsÚget_group_indexÚget_group_index_sorter)Ú	ArrayLikeÚLevelÚnpt)ÚExtensionArray)Ú
FrozenListc                  óÔ   — e Zd ZdZ	 d d!d„Zed"d„¦   «         Zed#d„¦   «         Zd$d„Zd„ Z	ed%d„¦   «         Z
ed&d„¦   «         Zd'd„Zd(d„Zd)d„Zed*d„¦   «         Zed+d„¦   «         ZdS ),Ú
_Unstackera	  
    Helper class to unstack data / pivot with multi-level index

    Parameters
    ----------
    index : MultiIndex
    level : int or str, default last level
        Level to "unstack". Accepts a name for the level.
    fill_value : scalar, optional
        Default value to fill in missing values if subgroups do not have the
        same set of labels. By default, missing values will be replaced with
        the default fill value for that data type, NaN for float, NaT for
        datetimelike, etc. For integer types, by default data will converted to
        float and missing values will be set to NaN.
    constructor : object
        Pandas ``DataFrame`` or subclass used to create unstacked
        response.  If None, DataFrame will be used.

    Examples
    --------
    >>> index = pd.MultiIndex.from_tuples([('one', 'a'), ('one', 'b'),
    ...                                    ('two', 'a'), ('two', 'b')])
    >>> s = pd.Series(np.arange(1, 5, dtype=np.int64), index=index)
    >>> s
    one  a    1
         b    2
    two  a    3
         b    4
    dtype: int64

    >>> s.unstack(level=-1)
         a  b
    one  1  2
    two  3  4

    >>> s.unstack(level=0)
       one  two
    a    1    3
    b    2    4

    Returns
    -------
    unstacked : DataFrame
    TÚindexr   Úlevelr!   ÚsortÚboolÚreturnÚNonec                ó  — || _         || _        |                     ¦   «         | _        | j                             |¦  «        | _        d| j        j        | j                 v rdnd| _        t          | j        j	        ¦  «        | _
        t          | j        j        ¦  «        | _        | j                             | j        ¦  «        | _        | j
                             | j        ¦  «        | _        |j	        | j                 | _        | j        sbt#          | j        j        | j                 ¦  «        }| j                             |¦  «        | _        | j                             |¦  «        | _        t'          j        d„ | j
        D ¦   «         ¦  «        }| j        j        }||z  }|t'          j        t&          j        ¦  «        j        k    r,t1          j        d|› d�t4          t7          ¦   «         ¬¦  «         |                      ¦   «          d S )Néÿÿÿÿé   r   c                ó   — g | ]	}|j         ‘Œ
S © )Úsize)Ú.0Úindex_levels     úUc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\pandas/core/reshape/reshape.pyú
<listcomp>z'_Unstacker.__init__.<locals>.<listcomp>‹   s   € ÐUÐUÐU°˜;Ô+ÐUÐUÐUó    z%The following operation may generate z& cells in the resulting pandas object.)Ú
stacklevel)Úconstructorr)   Úremove_unused_levelsr'   Ú_get_level_numberr(   ÚcodesÚliftÚlistÚlevelsÚnew_index_levelsÚnamesÚnew_index_namesÚpopÚremoved_nameÚremoved_levelÚremoved_level_fullr   ÚtakeÚnpÚmaxr2   ÚiinfoÚint32ÚwarningsÚwarnr   r   Ú_make_selectors)	Úselfr'   r(   r9   r)   Úunique_codesÚnum_rowsÚnum_columnsÚ	num_cellss	            r5   Ú__init__z_Unstacker.__init__n   sÔ  € ð 'ˆÔØˆŒ	à×/Ò/Ñ1Ô1ˆŒ
à”Z×1Ò1°%Ñ8Ô8ˆŒ
ð ˜tœzÔ/°´
Ô;Ð;Ð;�A�AÀˆŒ	õ !% T¤ZÔ%6Ñ 7Ô 7ˆÔÝ# D¤JÔ$4Ñ5Ô5ˆÔà Ô0×4Ò4°T´ZÑ@Ô@ˆÔØ!Ô2×6Ò6°t´zÑBÔBˆÔØ"'¤,¨t¬zÔ":ˆÔØŒyð 	QÝ! $¤*Ô"2°4´:Ô">Ñ?Ô?ˆLØ!%Ô!3×!8Ò!8¸Ñ!FÔ!FˆDÔØ&*Ô&=×&BÒ&BÀ<Ñ&PÔ&PˆDÔ#õ ”6ÐUÐU¸tÔ?TÐUÑUÔUÑVÔVˆØÔ(Ô-ˆð ˜{Ñ*ˆ	ð •r”x¥¤Ñ)Ô)Ô-Ò-Ð-ÝŒMð3¸	ð 3ð 3ð 3å"Ý+Ñ-Ô-ð	ñ ô ð ð 	×ÒÑÔÐÐÐr7   ú-tuple[npt.NDArray[np.intp], list[np.ndarray]]c                ó–  — | j         }t          | j        j        ¦  «        }t          | j        j        ¦  «        }|d |…         ||dz   d …         z   ||         gz   }t          d„ |d |…         ||dz   d …         z   ||         gz   D ¦   «         ¦  «        }t          ||¦  «        \  }}t          |¦  «        }t          ||¦  «        }	|	|fS )Nr/   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S ©N©Úlen©r3   Úxs     r5   ú	<genexpr>z2_Unstacker._indexer_and_to_sort.<locals>.<genexpr>¨   s(   è è € ÐKÐK •c˜!‘f”fÐKÐKÐKÐKÐKÐKr7   )	r(   r>   r'   r<   r?   Útupler   rZ   r   )
rO   Úvr<   ÚlevsÚto_sortÚsizesÚ
comp_indexÚobs_idsÚngroupsÚindexers
             r5   Ú_indexer_and_to_sortz_Unstacker._indexer_and_to_sortœ   sÑ   € ð ŒJˆå�T”ZÔ%Ñ&Ô&ˆÝ�D”JÔ%Ñ&Ô&ˆØ˜˜˜”)˜e A¨¡E G GœnÑ,°°a´¨zÑ9ˆÝÐKÐK d¨2¨A¨2¤h°°a¸!±e°g°g´Ñ&>À$ÀqÄ'ÀÑ&JÐKÑKÔKÑKÔKˆå0°¸%Ñ@Ô@Ñˆ
�GÝ�g‘,”,ˆå(¨°WÑ=Ô=ˆØ˜ÐÐr7   úlist[np.ndarray]c                óF   ‡— | j         \  Š}| j        rˆfd„|D ¦   «         S |S )Nc                ó:   •— g | ]}|                      ‰¦  «        ‘ŒS r1   ©rG   )r3   Úlinerf   s     €r5   r6   z,_Unstacker.sorted_labels.<locals>.<listcomp>´   s%   ø€ Ð;Ð;Ð;¨4�D—I’I˜gÑ&Ô&Ð;Ð;Ð;r7   )rg   r)   )rO   ra   rf   s     @r5   Úsorted_labelsz_Unstacker.sorted_labels°   s9   ø€ àÔ4Ñˆ�ØŒ9ð 	<Ø;Ð;Ð;Ð;°7Ð;Ñ;Ô;Ð;Øˆr7   Úvaluesú
np.ndarrayc                óZ   — | j         r#| j        \  }}t          j        ||d¬¦  «        }|S |S )Nr   )Úaxis)r)   rg   ÚalgosÚtake_nd)rO   rn   rf   Ú_Úsorted_valuess        r5   Ú_make_sorted_valuesz_Unstacker._make_sorted_values·   s9   € ØŒ9ð 	!ØÔ2‰JˆG�Qå!œM¨&°'ÀÐBÑBÔBˆMØ Ð Øˆr7   c                ó:  — | j         }| j        d d…         }t          d„ |D ¦   «         ¦  «        }t          ||¦  «        \  }}t	          |¦  «        }t          |¦  «        }| j        j        | j                 | j	        z   }||f| _
        | j        d         ||z  z   | j	        z   }t          j        t          j        | j
        ¦  «        t          ¬¦  «        }	|	                     |d¦  «         |	                     ¦   «         t	          | j        ¦  «        k     rt#          d¦  «        ‚|| _        |	| _        | j        r.|                     t          j        |¦  «        ¦  «        | _        d S t          j        t          j        |d¬¦  «        d         ¦  «        | _        d S )Nr.   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S rX   rY   r[   s     r5   r]   z-_Unstacker._make_selectors.<locals>.<genexpr>Ä   s(   è è € Ð7Ð7 q�C ™FœFÐ7Ð7Ð7Ð7Ð7Ð7r7   ©ÚdtypeTz0Index contains duplicate entries, cannot reshape)Úreturn_indexr/   )r@   rm   r^   r   rZ   r   r'   Úlevshaper(   r=   Ú
full_shaperH   ÚzerosÚprodr*   ÚputÚsumÚ
ValueErrorÚgroup_indexÚmaskr)   ÚsearchsortedÚarangeÚ
compressorr   )
rO   Ú
new_levelsÚremaining_labelsÚlevel_sizesrc   rd   re   ÚstrideÚselectorr„   s
             r5   rN   z_Unstacker._make_selectors¿   sl  € ØÔ*ˆ
ð  Ô-¨c¨r¨cÔ2ÐÝÐ7Ð7¨JÐ7Ñ7Ô7Ñ7Ô7ˆå0Ð1AÀ;ÑOÔOÑˆ
�GÝ�g‘,”,ˆå(¨Ñ4Ô4ˆ
Ø”Ô$ T¤ZÔ0°4´9Ñ<ˆØ! 6˜/ˆŒàÔ% bÔ)¨F°ZÑ,?Ñ?À$Ä)ÑKˆÝŒx�œ ¤Ñ0Ô0½Ð=Ñ=Ô=ˆØ�Š�˜4Ñ Ô Ð à�8Š8‰:Œ:�˜DœJ™œÒ'Ð'ÝÐOÑPÔPÐPà%ˆÔØˆŒ	ØŒ9ð 	SØ(×5Ò5µb´iÀÑ6HÔ6HÑIÔIˆDŒOˆOˆOå œg¥b¤i°
ÈÐ&NÑ&NÔ&NÈqÔ&QÑRÔRˆDŒOˆOˆOr7   c                óN   — t          | j                             ¦   «         ¦  «        S rX   )r*   r„   Úall)rO   s    r5   Úmask_allz_Unstacker.mask_allÛ   s   € å�D”I—M’M‘O”OÑ$Ô$Ð$r7   ú2tuple[npt.NDArray[np.intp], npt.NDArray[np.bool_]]c                óÈ   — t          j        t          | j        ¦  «        t           j        ¬¦  «        }|                      |d¬¦  «        \  }}||                     d¦  «        fS )Nry   r.   ©Ú
fill_valuer   )rH   r†   rZ   r'   ÚintpÚget_new_valuesÚany)rO   Ú	dummy_arrÚ
new_valuesr„   s       r5   Úarange_resultz_Unstacker.arange_resultß   sT   € õ ”I�c $¤*™oœoµR´WÐ=Ñ=Ô=ˆ	Ø×.Ò.¨yÀRÐ.ÑHÔHÑˆ
�DØ˜4Ÿ8š8 A™;œ;Ð&Ð&r7   r   c                ó.  — |j         dk    r|d d …t          j        f         }|€ |j        d         dk    rt	          d¦  «        ‚|                      ||¦  «        \  }}|                      |¦  «        }| j        }|                      ||||j	        ¬¦  «        S )Nr/   z-must pass column labels for multi-column data)r'   Úcolumnsrz   )
ÚndimrH   ÚnewaxisÚshaper‚   r•   Úget_new_columnsÚ	new_indexr9   rz   )rO   rn   Úvalue_columnsr“   rt   r›   r'   s          r5   Ú
get_resultz_Unstacker.get_resultç   s£   € ØŒ;˜!ÒÐØ˜A˜A˜A�rœz˜MÔ*ˆFàÐ  V¤\°!¤_¸Ò%9Ð%9ÝÐLÑMÔMÐMà×'Ò'¨°
Ñ;Ô;‰	ˆ�Ø×&Ò& }Ñ5Ô5ˆØ”ˆà×ÒØ˜%¨¸¼ð  ñ 
ô 
ð 	
r7   Nc                ó  — |j         dk    r|d d …t          j        f         }|                      |¦  «        }| j        \  }}|j        d         }||z  }||f}| j        }	| j        }
|
rlt          |¦  «        r]| 	                    |||¦  «         
                    dd¦  «         	                    |¦  «        }t          j        |t          ¬¦  «        }||fS |j        }|
r|j        }t          j        ||¬¦  «        }n†t          |t           ¦  «        r3|                     ¦   «         }|                     ||¬¦  «        }||d d …<   n>t'          ||¦  «        \  }}t          j        ||¬¦  «        }|                     |¦  «         |j        }t          j        |t          ¬¦  «        }t/          |j        ¦  «        r+|                     d¦  «        }|                     d¦  «        }n|                     |d¬¦  «        }t5          j        ||	                     d¦  «        |||||                     d¦  «        ¦  «         t/          |j        ¦  «        r>|                     d¦  «        }t9          |¦  «        }|                     |j        ¦  «        }||fS )	Nr/   é   ry   Úi8F©ÚcopyÚu1zM8[ns])rœ   rH   r�   rv   r}   rž   r„   r�   rZ   ÚreshapeÚswapaxesÚonesr*   rz   ÚemptyÚ
isinstancer   Úconstruct_array_typeÚ_emptyr
   ÚfillÚnamer~   r   ÚviewÚastypeÚ
libreshapeÚunstackr   )rO   rn   r“   ru   ÚlengthÚwidthr‹   Úresult_widthÚresult_shaper„   r�   r˜   Únew_maskrz   Úclsr±   s                   r5   r•   z_Unstacker.get_new_valuesö   s�  € ØŒ;˜!ÒÐØ˜A˜A˜A�rœz˜MÔ*ˆFà×0Ò0°Ñ8Ô8ˆð œ‰ˆ�Ø”˜a”ˆØ˜v‘~ˆØ Ð-ˆØŒyˆØ”=ˆð ð 
	(�˜F™œð 
	(ð
 ×%Ò% f¨e°VÑ<Ô<ß’˜!˜Q‘”ß’˜Ñ&Ô&ð õ
 ”w˜|µ4Ð8Ñ8Ô8ˆHØ˜xÐ'Ð'à”ˆð ð 	,Ø”LˆEÝœ ,°eÐ<Ñ<Ô<ˆJˆJå˜%¥Ñ0Ô0ð 
,ð ×0Ò0Ñ2Ô2�Ø ŸZšZ¨¸E˜ZÑBÔB�
Ø *�
˜1˜1˜1‘�å$1°%¸Ñ$DÔ$DÑ!��zÝœX l¸%Ð@Ñ@Ô@�
Ø—’ 
Ñ+Ô+Ð+àŒzˆÝ”8˜LµÐ5Ñ5Ô5ˆõ
 ˜vœ|Ñ,Ô,ð 	CØ)×.Ò.¨tÑ4Ô4ˆMØ#Ÿš¨Ñ.Ô.ˆJˆJà)×0Ò0°¸EÐ0ÑBÔBˆMõ 	ÔØØ�IŠI�d‰OŒOØØØØØ�MŠM˜$ÑÔñ	
ô 	
ð 	
õ ˜vœ|Ñ,Ô,ð 	7ð $Ÿš¨Ñ2Ô2ˆJÝ7¸
ÑCÔCˆJØ#Ÿš¨¬Ñ6Ô6ˆJà˜8Ð#Ð#r7   r¡   úIndex | Nonec                óÌ  ‡	— |€k| j         dk    r | j                             | j        ¬¦  «        S | j                             d| j        j        ¬¦  «        }|                     | j        ¦  «        S t          | j        ¦  «        | j         z   }t          |¦  «        }t          j	        t          j
        |¦  «        |¦  «        Š	t          |t          ¦  «        r4|j        | j        fz   }|j        | j        fz   }ˆ	fd„|j        D ¦   «         }n|| j        g}|j        | j        g}‰	g}| j        }|                     t          j        ||¦  «        ¦  «         t          |||d¬¦  «        S )Nr   ©r±   )Úitemc                ó:   •— g | ]}|                      ‰¦  «        ‘ŒS r1   rk   )r3   ÚlabÚ
propagators     €r5   r6   z._Unstacker.get_new_columns.<locals>.<listcomp>Z  s%   ø€ ÐMÐMÐM°#˜Ÿš *Ñ-Ô-ÐMÐMÐMr7   F©r?   r<   rA   Úverify_integrity)r=   rE   Ú_renamerD   ÚinsertÚ	_na_valueÚrenamerZ   rH   Úrepeatr†   r­   r   r?   rF   rA   r<   r±   Ú	_repeaterÚappendÚtile)
rO   r¡   Úlevr‹   r·   rˆ   Ú	new_namesÚ	new_codesÚrepeaterrÂ   s
            @r5   rŸ   z_Unstacker.get_new_columnsE  sz  ø€ ØÐ ØŒy˜AŠ~ˆ~ØÔ)×1Ò1°tÔ7HÐ1ÑIÔIÐIàÔ$×+Ò+¨A°DÔ4FÔ4PÐ+ÑQÔQˆCØ—:’:˜dÔ/Ñ0Ô0Ð0å�TÔ'Ñ(Ô(¨4¬9Ñ4ˆÝ�MÑ"Ô"ˆÝ”Y�rœy¨Ñ/Ô/°Ñ8Ô8ˆ
õ �m¥ZÑ0Ô0ð 	%à&Ô-ØÔ'ð1ñ ˆJð &Ô+¨tÔ/@Ð.BÑBˆIàMÐMÐMÐM¸Ô9LÐMÑMÔMˆIˆIð ØÔ'ðˆJð 'Ô+¨TÔ->Ð?ˆIØ#˜ˆIà”>ˆð 	×Ò�œ ¨5Ñ1Ô1Ñ2Ô2Ð2ÝØ Y°iÐRWð
ñ 
ô 
ð 	
r7   c                óD  — t          | j        ¦  «        t          | j        ¦  «        k    r=| j                             | j        ¦  «        }| j        rt          j        |dd¦  «        }n8t          | j        ¦  «        | j        z   }t          j        |¦  «        | j        z
  }|S )Nr   r.   )rZ   rF   rE   Úget_indexerr=   rH   rÆ   r†   )rO   rÐ   r‹   s      r5   rÊ   z_Unstacker._repeaterk  s�   € õ ˆtÔ&Ñ'Ô'­3¨tÔ/AÑ+BÔ+BÒBÐBàÔ.×:Ò:¸4Ô;MÑNÔNˆHØŒyð 6Ýœ9 X¨q°"Ñ5Ô5�øõ ˜Ô+Ñ,Ô,¨t¬yÑ8ˆFÝ”y Ñ(Ô(¨4¬9Ñ4ˆHàˆr7   c                ó´  ‡ — ˆ fd„‰ j         d d…         D ¦   «         }t          ‰ j        ¦  «        dk    rˆ‰ j        d         |d         }}|dk                         ¦   «         r(|                     t          |¦  «        |j        ¦  «        }|                     |¦  «                             ‰ j        d         ¦  «        S t          ‰ j        |‰ j        d¬¦  «        S )Nc                óD   •— g | ]}|                      ‰j        ¦  «        ‘ŒS r1   )rG   r‡   )r3   rÁ   rO   s     €r5   r6   z(_Unstacker.new_index.<locals>.<listcomp>}  s'   ø€ ÐUÐUÐU°c˜Ÿš ¤Ñ1Ô1ÐUÐUÐUr7   r.   r/   r   FrÃ   )
rm   rZ   r@   r–   rÆ   rÇ   rG   rÈ   rB   r   )rO   Úresult_codesr(   Úlevel_codess   `   r5   r    z_Unstacker.new_indexz  sá   ø€ ð VÐUÐUÐU¸TÔ=OÐPSÐQSÐPSÔ=TÐUÑUÔUˆõ ˆtÔ$Ñ%Ô%¨Ò*Ð*Ø!%Ô!6°qÔ!9¸<È¼?�;ˆEØ˜rÒ!×&Ò&Ñ(Ô(ð BØŸš¥S¨¡Z¤Z°´ÑAÔA�Ø—:’:˜kÑ*Ô*×1Ò1°$Ô2FÀqÔ2IÑJÔJÐJåØÔ(ØØÔ&Ø"ð	
ñ 
ô 
ð 	
r7   )T)r'   r   r(   r!   r)   r*   r+   r,   )r+   rU   )r+   rh   )rn   ro   r+   ro   )r+   r*   )r+   r�   )r+   r   rX   )r¡   r¼   )r+   ro   )r+   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rT   r   rg   rm   rv   rN   r�   r™   r¢   r•   rŸ   rÊ   r    r1   r7   r5   r&   r&   @   sh  € € € € € ð+ð +ð\ JNð,ð ,ð ,ð ,ð ,ð\ ð ð  ð  ñ „^ð ð& ðð ð ñ „^ððð ð ð ðSð Sð Sð8 ð%ð %ð %ñ „^ð%ð ð'ð 'ð 'ñ „^ð'ð
ð 
ð 
ð 
ðM$ð M$ð M$ð M$ð^$
ð $
ð $
ð $
ðL ðð ð ñ „^ðð ð
ð 
ð 
ñ „^ð
ð 
ð 
r7   r&   TÚdataúSeries | DataFramer)   r*   c                óâ  ‡‡‡‡— t          ‰¦  «        dk    r| S | j        Št          t          ‰¦  «        Š‰‰j        v r‰gŠˆfd„‰D ¦   «         Šˆfd„t          ‰j        ¦  «        D ¦   «         }ˆfd„‰D ¦   «         }ˆfd„‰D ¦   «         }ˆfd„‰D ¦   «         }ˆfd„|D ¦   «         }ˆfd„|D ¦   «         }	ˆfd	„|D ¦   «         }
t          d
„ |D ¦   «         ¦  «        }t          ||dd¬¦  «        }t          |d¬¦  «        \  }}t          ||||d¬¦  «        }|st          |d¬¦  «        }nt          ||gz   |	|gz   |
dgz   d¬¦  «        }t          | t          ¦  «        r;|                      ¦   «         }||_        |                     d||¬¦  «        }|}|}|}�nt          | j        t          ¦  «        rC| }‰r=‰                     d¦  «        Š|                     ‰||¬¦  «        }ˆfd„‰D ¦   «         Š‰°=|S |                      d¬¦  «        }||_        |                     d||¬¦  «        }t          |t          ¦  «        r|j        Šn|j        Št          ‰t          ¦  «        sJ ‚‰j        d         g|z   }| j        j        g|z   }‰j        d         g}|                     ˆfd„|D ¦   «         ¦  «         t          |||d¬¦  «        }t          |t          ¦  «        r||_        n||_        |S )Nr   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS r1   )r;   ©r3   Úir'   s     €r5   r6   z%_unstack_multiple.<locals>.<listcomp>�  s'   ø€ Ð7Ð7Ð7¨AˆU×$Ò$ QÑ'Ô'Ð7Ð7Ð7r7   c                ó   •— g | ]}|‰v¯|‘Œ	S r1   r1   )r3   rà   Úclocss     €r5   r6   z%_unstack_multiple.<locals>.<listcomp>Ÿ  s   ø€ Ð?Ð?Ð?�1°¸°°ˆQ°°°r7   c                ó*   •— g | ]}‰j         |         ‘ŒS r1   ©r?   rß   s     €r5   r6   z%_unstack_multiple.<locals>.<listcomp>¡  ó   ø€ Ð.Ð.Ð. 1ˆuŒ|˜AŒÐ.Ð.Ð.r7   c                ó*   •— g | ]}‰j         |         ‘ŒS r1   ©r<   rß   s     €r5   r6   z%_unstack_multiple.<locals>.<listcomp>¢  ó   ø€ Ð,Ð,Ð, ˆeŒk˜!ŒnÐ,Ð,Ð,r7   c                ó*   •— g | ]}‰j         |         ‘ŒS r1   ©rA   rß   s     €r5   r6   z%_unstack_multiple.<locals>.<listcomp>£  rè   r7   c                ó*   •— g | ]}‰j         |         ‘ŒS r1   rä   rß   s     €r5   r6   z%_unstack_multiple.<locals>.<listcomp>¤  rå   r7   c                ó*   •— g | ]}‰j         |         ‘ŒS r1   rç   rß   s     €r5   r6   z%_unstack_multiple.<locals>.<listcomp>¥  rè   r7   c                ó*   •— g | ]}‰j         |         ‘ŒS r1   rê   rß   s     €r5   r6   z%_unstack_multiple.<locals>.<listcomp>¦  rè   r7   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S rX   rY   r[   s     r5   r]   z$_unstack_multiple.<locals>.<genexpr>¨  s(   è è € Ð*Ð*˜Q•#�a‘&”&Ð*Ð*Ð*Ð*Ð*Ð*r7   F)r)   Úxnull©r)   )rï   Ú__placeholder__r¾   rÃ   ©r“   r)   c                ó*   •— g | ]}|‰k     r|n|d z
  ‘ŒS ©r/   r1   )r3   r_   Úvals     €r5   r6   z%_unstack_multiple.<locals>.<listcomp>Ç  s)   ø€ Ð@Ð@Ð@°Q˜a #šg˜g˜˜¨1¨q©5Ð@Ð@Ð@r7   ©Údeepc              3  óX   •K  — | ]$}|                      ‰j        d          ¦  «        V — Œ%dS )r.   N)rG   r<   )r3   ÚrecÚunstcolss     €r5   r]   z$_unstack_multiple.<locals>.<genexpr>Û  s6   øè è € ÐNÐN¸#˜Ÿš (¤.°Ô"4Ñ5Ô5ÐNÐNÐNÐNÐNÐNr7   )rZ   r'   r   r   rA   ÚrangeÚnlevelsr^   r   r   r   r   r­   r   r§   rµ   r›   rC   r?   r±   r<   Úextend)rÛ   râ   r“   r)   ÚrlocsÚclevelsÚccodesÚcnamesÚrlevelsÚrcodesÚrnamesrž   rƒ   Úcomp_idsrd   Úrecons_codesÚdummy_indexÚdummyÚ	unstackedrˆ   rÎ   rÏ   ÚresultÚdummy_dfÚnew_columnsr'   rú   rõ   s    `                       @@@r5   Ú_unstack_multipler  Ž  s¶  øøøø€ õ ˆ5�z„z�Q‚€Øˆð ŒJ€EÝ•˜UÑ#Ô#€Eð �”ÐÐØ�ˆØ7Ð7Ð7Ð7°Ð7Ñ7Ô7€Eà?Ð?Ð?Ð?�˜eœmÑ,Ô,Ð?Ñ?Ô?€Eà.Ð.Ð.Ð.¨Ð.Ñ.Ô.€GØ,Ð,Ð,Ð, eÐ,Ñ,Ô,€FØ,Ð,Ð,Ð, eÐ,Ñ,Ô,€FØ.Ð.Ð.Ð.¨Ð.Ñ.Ô.€GØ,Ð,Ð,Ð, eÐ,Ñ,Ô,€FØ,Ð,Ð,Ð, eÐ,Ñ,Ô,€FåÐ*Ð* 'Ð*Ñ*Ô*Ñ*Ô*€EÝ! &¨%°eÀ5ÐIÑIÔI€Kå,¨[¸uÐEÑEÔEÑ€HˆgÝ'¨°'¸5À&ÐPUÐVÑVÔV€Làð 	
å˜GÐ*;Ð<Ñ<Ô<ˆˆå Ø˜g˜YÑ&Ø˜H˜:Ñ%ØÐ-Ð.Ñ.Ø"ð	
ñ 
ô 
ˆõ �$�ÑÔð "OØ—	’	‘”ˆØ!ˆŒà—M’MÐ"3À
ÐQU�MÑVÔVˆ	Øˆ
Øˆ	Ø ˆ	‰	å�d”l¥JÑ/Ô/ð 	ØˆFØð AØ—i’i ‘l”l�ØŸš¨¸
È˜ÑNÔN�Ø@Ð@Ð@Ð@¸%Ð@Ñ@Ô@�ð ð Að
 ˆMð —9’9 %�9Ñ(Ô(ˆØ$ˆŒà×$Ò$Ø¨*¸4ð %ñ 
ô 
ˆ	õ �i¥Ñ(Ô(ð 	)Ø ”ˆHˆHà Ô(ˆHÝ˜(¥JÑ/Ô/Ð/Ð/Ð/Ø”o aÔ(Ð)¨GÑ3ˆ
Ø”\Ô&Ð'¨&Ñ0ˆ	à”^ AÔ&Ð'ˆ	Ø×ÒÐNÐNÐNÐNÀÐNÑNÔNÑNÔNÐNåØ °)Èeðñ ô €Kõ �)�VÑ$Ô$ð (Ø%ˆ	Œˆà'ˆ	ÔàÐr7   Úobjc                óî  — t          |t          t          f¦  «        r.t          |¦  «        dk    rt	          | |||¬¦  «        S |d         }t          |¦  «        s |dk    s| j                             |¦  «         t          | t          ¦  «        rHt          | j        t          ¦  «        rt          | |||¬¦  «        S | j                             d¬¦  «        S t          | j        t          ¦  «        s%t          dt          | j        ¦  «        › d�¦  «        ‚t          | j        ¦  «        rt#          | |||¬	¦  «        S t%          | j        || j        |¬
¦  «        }|                     | j        d |¬¦  «        S )Nr/   rò   r   rñ   T)Úfuture_stackz'index must be a MultiIndex to unstack, z was passedrð   ©r(   r9   r)   ©r¡   r“   )r­   r^   r>   rZ   r  r   r'   r;   r   r   Ú_unstack_frameÚTÚstackr‚   Útyper   rz   Ú_unstack_extension_seriesr&   Ú_constructor_expanddimr¢   Ú_values)r  r(   r“   r)   Ú	unstackers        r5   rµ   rµ   é  s‚  € Ý�%�%¥˜Ñ'Ô'ð Ýˆu‰:Œ:˜Š?ˆ?õ % S¨%¸JÈTÐRÑRÔRÐRà˜!”HˆEå�eÑÔð + UÐ.?Ò%?Ð%?àŒ	×#Ò# EÑ*Ô*Ð*å�#•yÑ!Ô!ð 
Ý�c”i¥Ñ,Ô,ð 	2Ý! # u¸È$ÐOÑOÔOÐOà”5—;’;¨D�;Ñ1Ô1Ð1Ý˜œ	¥:Ñ.Ô.ð 
õ ØRµd¸3¼9±o´oÐRÐRÐRñ
ô 
ð 	
õ ˜sœyÑ)Ô)ð 	PÝ,¨S°%¸È$ÐOÑOÔOÐOÝØŒI˜U°Ô0JÐQUð
ñ 
ô 
ˆ	ð ×#Ò#ØŒK t¸
ð $ñ 
ô 
ð 	
r7   r   r+   c                ó6  — t          | j        t          ¦  «        sJ ‚t          | j        || j        |¬¦  «        }| j        s8| j                             ||¬¦  «        }|                      ||j	        ¬¦  «        S | 
                    | j        | j        |¬¦  «        S )Nr  r’   )Úaxesr  )r­   r'   r   r&   Ú_constructorÚ_can_fast_transposeÚ_mgrrµ   Ú_constructor_from_mgrr  r¢   r  r›   )r  r(   r“   r)   r  Úmgrs         r5   r  r    s¨   € õ �c”i¥Ñ,Ô,Ð,Ð,Ð,ÝØŒ	˜¨CÔ,<À4ðñ ô €Ið Ô"ð 
ØŒh×Ò˜y°ZÐÑ@Ô@ˆØ×(Ò(¨°3´8Ð(Ñ<Ô<Ð<à×#Ò#ØŒK s¤{¸zð $ñ 
ô 
ð 	
r7   Úseriesr   c                óž   — |                       ¦   «         }|                     |||¬¦  «        }|j                             dg¦  «        |_        |S )an  
    Unstack an ExtensionArray-backed Series.

    The ExtensionDtype is preserved.

    Parameters
    ----------
    series : Series
        A Series with an ExtensionArray for values
    level : Any
        The level name or number.
    fill_value : Any
        The user-level (not physical storage) fill value to use for
        missing values introduced by the reshape. Passed to
        ``series.values.take``.
    sort : bool
        Whether to sort the resulting MuliIndex levels

    Returns
    -------
    DataFrame
        Each column of the DataFrame will have the same dtype as
        the input Series.
    )r(   r“   r)   r   )Úto_framerµ   r›   Ú_drop_level_numbers)r"  r(   r“   r)   Údfr
  s         r5   r  r    sJ   € ð8 
�ŠÑ	Ô	€BØ�ZŠZ˜e°
ÀˆZÑFÔF€Fð ”^×7Ò7¸¸Ñ<Ô<€F„NØ€Mr7   r.   ÚframeÚdropnac                óÆ  ‡— d„ }| j         \  }Š| j                             |¦  «        }t          | j        t          ¦  «        rt          | |||¬¦  «        S t          | j        t          ¦  «        rßt          | j        j        ¦  «        }ˆfd„| j        j	        D ¦   «         } || j        ¦  «        \  }	}
| 
                    |	¦  «         | 
                    t          j        |
|¦  «                             ¦   «         ¦  «         t          | j        j        ¦  «        }| 
                    | j        j        ¦  «         t	          |||d¬¦  «        }nŽt!          t#          || j        | j        f¦  «        Ž \  }\  }}
|                     ‰¦  «        t          j        |
|¦  «                             ¦   «         f}t	          ||| j        j        | j        j        gd¬¦  «        }| j        s®| j        r§t          | j        j        ¦  «        }|d         }t          |t.          ¦  «        rW|                     ¦   «         }|                     d„ |                      ¦   «         D ¦   «         ¦  «        }t7          ||‰¦  «        }n3| j                             ¦   «         }n| j                             ¦   «         }|rt9          |¦  «        }||         }||         }|                      ||¬¦  «        S )	zÀ
    Convert DataFrame to Series with multi-level Index. Columns become the
    second level of the resulting hierarchical index

    Returns
    -------
    stacked : Series or DataFrame
    c                ó‚   — | j         r#| t          j        t          | ¦  «        ¦  «        fS t	          | ¦  «        \  }}||fS rX   )Ú	is_uniquerH   r†   rZ   r   )r'   r<   Ú
categoriess      r5   Ústack_factorizezstack.<locals>.stack_factorizeM  sD   € ØŒ?ð 	0Ø�"œ)¥C¨¡J¤JÑ/Ô/Ð/Ð/Ý3°EÑ:Ô:ÑˆˆzØ˜5Ð Ð r7   )Ú	level_numr(  r)   c                ó:   •— g | ]}|                      ‰¦  «        ‘ŒS r1   ©rÉ   )r3   rÁ   ÚKs     €r5   r6   zstack.<locals>.<listcomp>^  s#   ø€ Ð@Ð@Ð@ s�S—Z’Z ‘]”]Ð@Ð@Ð@r7   FrÃ   r   c                ó"   — g | ]\  }}|j         ‘ŒS r1   )r  )r3   rt   Úcols      r5   r6   zstack.<locals>.<listcomp>}  s   € Ð9Ð9Ð9¡  C�”Ð9Ð9Ð9r7   ©r'   )rž   r›   r;   r­   r   Ú_stack_multi_columnsr'   r>   r?   r<   rË   rH   rÌ   ÚravelrA   r±   ÚzipÚmaprÉ   r¬   Ú_is_homogeneous_typeÚdtypesr  r   r®   Ú_concat_same_typeÚitemsÚ"_reorder_for_extension_array_stackr   Ú_constructor_sliced)r'  r(   r(  r)   r-  ÚNr.  rˆ   rÏ   ÚclevÚclabrÎ   r    r?   Úilabr<   r:  rz   Úarrr˜   r„   r1  s                        @r5   r  r  C  sÙ  ø€ ð!ð !ð !ð Œ;�D€A€qð ”×/Ò/°Ñ6Ô6€Iå�%”-¥Ñ,Ô,ð 
Ý#Ø˜Y¨v¸Dð
ñ 
ô 
ð 	
õ 
�E”K¥Ñ	,Ô	,ð 
Ý˜%œ+Ô,Ñ-Ô-ˆ
Ø@Ð@Ð@Ð@¨e¬kÔ.?Ð@Ñ@Ô@ˆ	à$�_ U¤]Ñ3Ô3‰
ˆˆdØ×Ò˜$ÑÔÐØ×Ò�œ  qÑ)Ô)×/Ò/Ñ1Ô1Ñ2Ô2Ð2å˜œÔ*Ñ+Ô+ˆ	Ø×Ò˜œÔ+Ñ,Ô,Ð,ÝØ Y°iÐRWð
ñ 
ô 
ˆ	ˆ	õ  #¥C¨¸%¼+ÀuÄ}Ð9UÑ$VÔ$VÐWÑˆ‘��tØ—’˜A‘”¥¤¨¨aÑ 0Ô 0× 6Ò 6Ñ 8Ô 8Ð8ˆÝØØØ”;Ô# U¤]Ô%7Ð8Ø"ð	
ñ 
ô 
ˆ	ð Œ;ð +˜5Ô5ð +õ �e”lÔ*Ñ+Ô+ˆØ�q”	ˆå�e�^Ñ,Ô,ð 	/Ø×,Ò,Ñ.Ô.ˆCØ×.Ò.Ø9Ð9¨5¯;ª;©=¬=Ð9Ñ9Ô9ñô ˆJõ <¸JÈÈ1ÑMÔMˆJˆJð œ×,Ò,Ñ.Ô.ˆJˆJð ”]×(Ò(Ñ*Ô*ˆ
àð $Ý�ZÑ Ô ˆØ Ô%ˆ
Ø˜d”Oˆ	à×$Ò$ Z°yÐ$ÑAÔAÐAr7   c                ó\  ‡ ‡— t          ˆ fd„|D ¦   «         ¦  «        r‰ }|D ]Št          |‰||¬¦  «        }Œnst          d„ |D ¦   «         ¦  «        rK‰ }ˆ fd„|D ¦   «         }|r8|                     d¦  «        Št          |‰||¬¦  «        }ˆfd„|D ¦   «         }|°8nt          d¦  «        ‚|S )Nc              3  ó4   •K  — | ]}|‰j         j        v V — Œd S rX   )r›   rA   ©r3   rÍ   r'  s     €r5   r]   z!stack_multiple.<locals>.<genexpr>“  s-   øè è € Ð
7Ð
7¨#ˆ3�%”-Ô%Ð%Ð
7Ð
7Ð
7Ð
7Ð
7Ð
7r7   )r(  r)   c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S rX   )r­   Úint)r3   rÍ   s     r5   r]   z!stack_multiple.<locals>.<genexpr>™  s,   è è € Ð3Ð3 c�Z˜�SÑ!Ô!Ð3Ð3Ð3Ð3Ð3Ð3r7   c                óD   •— g | ]}‰j                              |¦  «        ‘ŒS r1   )r›   r;   rF  s     €r5   r6   z"stack_multiple.<locals>.<listcomp>Ÿ  s)   ø€ ÐGÐGÐG¸#�”×0Ò0°Ñ5Ô5ÐGÐGÐGr7   r   c                ó*   •— g | ]}|‰k    r|n|d z
  ‘ŒS rô   r1   )r3   r_   rÍ   s     €r5   r6   z"stack_multiple.<locals>.<listcomp>¦  s)   ø€ Ð=Ð=Ð=°!˜!˜sš(˜(�Q�Q¨¨A©Ð=Ð=Ð=r7   zTlevel should contain all level names or all level numbers, not a mixture of the two.)rŽ   r  rC   r‚   )r'  r(   r(  r)   r
  rÍ   s   `    @r5   Ústack_multiplerK  �  s  øø€ õ Ð
7Ð
7Ð
7Ð
7°Ð
7Ñ
7Ô
7Ñ7Ô7ð 
ØˆØð 	Bð 	BˆCÝ˜6 3¨v¸DÐAÑAÔAˆFˆFð	Bõ 
Ð3Ð3¨UÐ3Ñ3Ô3Ñ	3Ô	3ð 
ð ˆð HÐGÐGÐGÀÐGÑGÔGˆàð 	>Ø—)’)˜A‘,”,ˆCÝ˜6 3¨v¸DÐAÑAÔAˆFð >Ð=Ð=Ð=°uÐ=Ñ=Ô=ˆEð ð 	>øõ ð1ñ
ô 
ð 	
ð
 €Mr7   r›   r   c                óÒ  — t          | j        ¦  «        dk    r,| j        d                              | j        d         ¬¦  «        S d„ t	          | j        dd…         | j        dd…         ¦  «        D ¦   «         }t	          |Ž }d„ t          j        |¦  «        D ¦   «         }t	          |Ž }t          j	        d„ t	          || j        ¦  «        D ¦   «         | j        dd…         ¬	¦  «        S )
zBCreates a MultiIndex from the first N-1 levels of this MultiIndex.r¤   r   r¾   c                ó2   ‡— g | ]\  Š}ˆfd „|D ¦   «         ‘ŒS )c                ó0   •— g | ]}|d k    r‰|         nd‘ŒS )r   Nr1   )r3   ÚcrÍ   s     €r5   r6   z8_stack_multi_column_index.<locals>.<listcomp>.<listcomp>·  s)   ø€ Ð3Ð3Ð3¨�1˜’6�6ˆˆQŒˆ˜tÐ3Ð3Ð3r7   r1   )r3   r<   rÍ   s     @r5   r6   z-_stack_multi_column_index.<locals>.<listcomp>¶  sA   ø€ ð ð ð áˆC�ð 	4Ð3Ð3Ð3¨UÐ3Ñ3Ô3ðð ð r7   Nr.   c              3  ó    K  — | ]	\  }}|V — Œ
d S rX   r1   )r3   Úkeyrt   s      r5   r]   z,_stack_multi_column_index.<locals>.<genexpr>½  s&   è è € ÐAÐA™V˜S !�SÐAÐAÐAÐAÐAÐAr7   c                óL   — g | ]!\  }}d |vrt          ||j        ¬¦  «        n|‘Œ"S )Nry   )r   rz   )r3   Únew_levrÍ   s      r5   r6   z-_stack_multi_column_index.<locals>.<listcomp>Ã  sL   € ð 	
ð 	
ð 	
ñ �˜ð 04¸7Ð/BÐ/B�E�' ¤Ð+Ñ+Ô+Ð+Èð	
ð 	
ð 	
r7   rê   )
rZ   r?   rÅ   rA   r7  r<   Ú	itertoolsÚgroupbyr   Úfrom_arrays)r›   r`   ÚtuplesÚunique_tuplesÚnew_levss        r5   Ú_stack_multi_column_indexrZ  ±  s  € å
ˆ7Œ>ÑÔ˜aÒÐØŒ~˜aÔ ×(Ò(¨g¬m¸AÔ.>Ð(Ñ?Ô?Ð?ðð å˜gœn¨S¨b¨SÔ1°7´=ÀÀ"ÀÔ3EÑFÔFðñ ô €Dõ �$ˆZ€FØAÐA¥yÔ'8¸Ñ'@Ô'@ÐAÑAÔA€MÝ�MÐ"€Hõ Ô!ð	
ð 	
õ !$ H¨g¬nÑ =Ô =ð	
ñ 	
ô 	
ð
 Œm˜C˜R˜CÔ ðñ ô ð r7   r.  rH  c                óÜ
  ‡$‡%— dd„}|                       d¬¦  «        }|j        }t          |t          ¦  «        sJ ‚||j        dz
  k    rW|}t          ||j        dz
  ¦  «        D ]3} |||¦  «        }	 ||dz   |¦  «        }
|                     |	|
¦  «        }Œ4|x|_        }|                     ¦   «         s,|r* |d	|¦  «        }|                     |d¬
¦  «        }|j        }t          t          |¦  «        }t          |¦  «        }i }|j        d         }t          |j        d         ¦  «        }|rt          j        |¦  «        }|                     t#          |¦  «        d ¦  «        }t          j        ||¦  «        }t#          |¦  «        Š%g }|D �]þ}	 |j                             |¦  «        }n%# t(          $ r |                     |¦  «         Y Œ@w xY wt          |t,          ¦  «        st#          |¦  «        }n|j        |j        z
  }|‰%k    rb|j        d d …|j        |         f         }|                     |j        j        d         ¦  «        |_        |                     |¬¦  «        j        }nú|j        d d …|f         }t;          |j                             ¦   «         ¦  «        Š$t          ‰$t@          ¦  «        r§‰$ !                    ¦   «          "                    ˆ$fd„| #                    ¦   «         D ¦   «         ¦  «        }|j$        \  }}t          j%        ||z  ¦  «         &                    ||¦  «        j'         (                    ¦   «         }|                     |¦  «        }n|j        }|j)        dk    r| (                    ¦   «         }|||<   �Œ t#          |¦  «        d	k    r| *                    |¦  «        }t#          |¦  «        }t          |j+        t          ¦  «        rKtY          |j+        j        ¦  «        }tY          |j+        j-        ¦  «        }ˆ%fd„|j+        j        D ¦   «         }n=t]          |j+        ¦  «        \  }} | g}| /                    ‰%¦  «        g}|j+        j0        g}|                     |¦  «         |                     t          j1        ||¦  «        ¦  «         |                     | j        j-        |         ¦  «         t          |||d¬¦  «        }!|  2                    ||!|¬¦  «        }"| j        j        dk    rO| j         3                    |g¦  «                             ¦   «         }#|"j         4                    |#¦  «        s|"|#         }"|r|" 5                    d	d¬¦  «        }"|"S )Nr.  rH  r›   r   c                ó2   — | |j         v r|j         |          S | S )zì
        Logic for converting the level number to something we can safely pass
        to swaplevel.

        If `level_num` matches a column name return the name from
        position `level_num`, otherwise return `level_num`.
        rê   )r.  r›   s     r5   Ú_convert_level_numberz3_stack_multi_columns.<locals>._convert_level_numberÏ  s$   € ð ˜œÐ%Ð%Ø”= Ô+Ð+àÐr7   Frö   r/   r   )r(   rq   r.   )r›   c                óN   •— g | ]!\  }}|j                              ‰d ¬¦  «        ‘Œ"S )Fr¦   )r  r³   )r3   rt   r\   rz   s      €r5   r6   z(_stack_multi_columns.<locals>.<listcomp>  s2   ø€ ÐTÐTÐT¹T¸QÀ�Q”Y×%Ò% e°%Ð%Ñ8Ô8ÐTÐTÐTr7   c                ó:   •— g | ]}|                      ‰¦  «        ‘ŒS r1   r0  )r3   rÁ   Úlevsizes     €r5   r6   z(_stack_multi_columns.<locals>.<listcomp>2  s%   ø€ ÐEÐEÐE¨S�S—Z’Z Ñ(Ô(ÐEÐEÐEr7   rÃ   )r'   r›   rŽ   )rq   Úhow)r.  rH  r›   r   )6r§   r›   r­   r   rü   rû   Ú	swaplevelÚ_is_lexsortedÚ
sort_indexr   rZ  r?   r   r<   rH   r)   rÆ   rZ   rG   Úget_locÚKeyErrorrË   ÚsliceÚstopÚstartÚlocÚreindexrn   Úilocr	   r:  Útolistr   r®   r;  r<  rž   r†   r©   r  r6  rœ   Ú
differencer'   r>   rA   r   rÉ   r±   rÌ   r  r%  Úequalsr(  )&r'  r.  r(  r)   r]  ÚthisÚmi_colsÚroll_columnsrà   Úlev1Úlev2Úlevel_to_sortr  Únew_dataÚ
level_valsrÖ   Úlevel_vals_nanÚlevel_vals_usedÚ	drop_colsrQ  rj  Ú	slice_lenÚchunkÚvalue_sliceÚsubsetr?  r1  Úidxrˆ   rÎ   rÏ   Ú	old_codesÚ
old_levelsr    r
  Údesired_columnsrz   r`  s&                                       @@r5   r5  r5  Ì  sm  øø€ ðð ð ð ð �:Š:˜5ˆ:Ñ!Ô!€DØŒl€GÝ�g�zÑ*Ô*Ð*Ð*Ð*ð �G”O aÑ'Ò'Ð'àˆÝ�y '¤/°AÑ"5Ñ6Ô6ð 	>ð 	>ˆAà(Ð(¨¨LÑ9Ô9ˆDØ(Ð(¨¨Q©°Ñ=Ô=ˆDØ'×1Ò1°$¸Ñ=Ô=ˆLˆLØ!-Ð-ˆŒ�wà× Ò Ñ"Ô"ð  tð ð .Ð-¨a°Ñ9Ô9ˆØ�Š ]¸ˆÑ;Ô;ˆØ”,ˆå•:˜wÑ'Ô'€GÝ+¨GÑ4Ô4€Kð €HØ” Ô#€JÝ˜œ rÔ*Ñ+Ô+€KØð +Ý”g˜kÑ*Ô*ˆØ×&Ò&¥s¨:¡¤¸Ñ=Ô=€Nå”g˜n¨kÑ:Ô:€OÝ�+ÑÔ€GØ€IØð '$ñ '$ˆð	Ø”,×&Ò& sÑ+Ô+ˆCˆCøÝð 	ð 	ð 	Ø×Ò˜SÑ!Ô!Ð!ØˆHð	øøøõ ˜#�uÑ%Ô%ð 	-Ý˜C™œˆIˆIàœ 3¤9Ñ,ˆIà˜ÒÐØ”H˜Q˜Q˜Q ¤¨SÔ 1Ð1Ô2ˆEØ*×/Ò/°´Ô0CÀBÔ0GÑHÔHˆEŒMØŸ-š-°˜-Ñ@Ô@ÔGˆKˆKà”Y˜q˜q˜q #˜vÔ&ˆFÝ$ V¤]×%9Ò%9Ñ%;Ô%;Ñ<Ô<ˆEÝ˜%¥Ñ0Ô0ð 
,ð $×8Ò8Ñ:Ô:×LÒLØTÐTÐTÐTÀVÇ\Â\Á^Ä^ÐTÑTÔTñô �ð ”|‘��1Ý”i  A¡Ñ&Ô&×.Ò.¨q°!Ñ4Ô4Ô6×<Ò<Ñ>Ô>�Ø)×.Ò.¨sÑ3Ô3��à$œm�àÔ˜aÒÐà%×+Ò+Ñ-Ô-ˆKà#ˆ�‰‰å
ˆ9�~„~˜ÒÐØ!×,Ò,¨YÑ7Ô7ˆåˆD‰	Œ	€Aå�$”*�jÑ)Ô)ð &Ý˜$œ*Ô+Ñ,Ô,ˆ
Ý˜œÔ)Ñ*Ô*ˆ	ØEÐEÐEÐE°D´JÔ4DÐEÑEÔEˆ	ˆ	å 7¸¼
Ñ CÔ CÑˆ	�:Ø �\ˆ
Ø×%Ò% gÑ.Ô.Ð/ˆ	Ø”Z”_Ð%ˆ	à×Ò�jÑ!Ô!Ð!Ø×Ò•R”W˜[¨!Ñ,Ô,Ñ-Ô-Ð-Ø×Ò�U”]Ô(¨Ô3Ñ4Ô4Ð4åØ °)Èeðñ ô €Ið ×Ò °	À;ÐÑOÔO€Fà„}Ô˜qÒ Ð Øœ-×;Ò;¸Y¸KÑHÔH×OÒOÑQÔQˆØŒ~×$Ò$ _Ñ5Ô5ð 	-Ø˜OÔ,ˆFð ð 2Ø—’ A¨5�Ñ1Ô1ˆà€Ms   ÆF-Æ-GÇGrC  r#   Ún_rowsÚ	n_columnsc                ó°   — t          j        ||z  ¦  «                             ||¦  «        j                             ¦   «         }|                      |¦  «        S )aæ  
    Re-orders the values when stacking multiple extension-arrays.

    The indirect stacking method used for EAs requires a followup
    take to get the order correct.

    Parameters
    ----------
    arr : ExtensionArray
    n_rows, n_columns : int
        The number of rows and columns in the original DataFrame.

    Returns
    -------
    taken : ExtensionArray
        The original `arr` with elements re-ordered appropriately

    Examples
    --------
    >>> arr = np.array(['a', 'b', 'c', 'd', 'e', 'f'])
    >>> _reorder_for_extension_array_stack(arr, 2, 3)
    array(['a', 'c', 'e', 'b', 'd', 'f'], dtype='<U1')

    >>> _reorder_for_extension_array_stack(arr, 3, 2)
    array(['a', 'd', 'b', 'e', 'c', 'f'], dtype='<U1')
    )rH   r†   r©   r  r6  rG   )rC  rƒ  r„  r  s       r5   r=  r=  P  sH   € õB Œ)�F˜YÑ&Ñ
'Ô
'×
/Ò
/°	¸6Ñ
BÔ
BÔ
D×
JÒ
JÑ
LÔ
L€CØ�8Š8�C‰=Œ=Ðr7   r(   ú	list[int]c                ó0  ‡ ‡‡— ‰ j                              ¦   «         t          ‰ j         ¦  «        k    rt          d¦  «        ‚t	          ‰d¬¦  «        }‰ j                              ˆfd„t          ‰ j         j        ¦  «        D ¦   «         d d d…         ¦  «        }t          ‰¦  «        dk    r*t          j	        ‰¦  «        }| 
                    |¦  «        }n|}|                     ¦   «         }|                     ¦   «         }g }|D �]/}	t          ‰ j         ¦  «        dk    r‰                      ¦   «         }
nit          ‰¦  «        dk    r|	f}	t          |	¦  «        Št          ˆˆfd„t          ‰ j         j        ¦  «        D ¦   «         ¦  «        }‰ j        d d …|f         }
t          ‰¦  «        ‰ j         j        k     r |
j                              |¦  «        |
_         nD|j        dk    r9|
j        dk    rd|
_        n&t%          t          |
j         ¦  «        ¦  «        |
_         |                     |
¦  «         �Œ1t          |¦  «        dk    r6‰ j        s/t+          |¦  «        }t          |¦  «        t          ‰ ¦  «        z  }njt          ‰¦  «        ‰ j         j        k     r-‰ j                              |¦  «                             ¦   «         }ndg}t-          |‰ j        j        ¬	¦  «        }d}t          ‰¦  «        ‰ j         j        k     rN‰ j                              |¦  «                             ¦   «         }|j                              |¦  «        s||         }t5          ‰ j        t8          ¦  «        r;‰ j        j        }t=          t          j        ‰ j        j         d|f¦  «        ¦  «        }n@tC          ‰ j        d
¬¦  «        \  }}|g}t=          t          j        |d|f¦  «        ¦  «        }t5          |t8          ¦  «        r!|j        }| "                    ¦   «         j         }n-|                     ¦   «         g}tC          |d
¬¦  «        d         g}ˆ fd„|D ¦   «         }t9          ||z   ||z   ‰ j        j#        t=          |j#        ¦  «        z   d
¬¦  «        |_        t          ‰ ¦  «        }t          |¦  «        }t          j$        |¦  «        }t          j        ||z  |¦  «        t          j%        t          j$        |¦  «        |¦  «        z   }| &                    |¦  «        }|j        dk    r\‰ j         j        t          ‰¦  «        k    r?t          |j         ¦  «        dk    rtO          |j        ¬¦  «        }n|j(        d d …df         }|j        dk    rd |_        |S )Nz8Columns with duplicate values are not supported in stackT)Úreversec                ó   •— g | ]}|‰v¯|‘Œ	S r1   r1   )r3   Úkr(   s     €r5   r6   zstack_v3.<locals>.<listcomp>|  s   ø€ ÐCÐCÐCˆq°A¸U°N°Nˆ°N°N°Nr7   r.   r/   c              3  ó\   •K  — | ]&}|‰v rt          ‰¦  «        nt          d ¦  «        V — Œ'd S rX   )Únextrg  )r3   rŠ  Úgenr(   s     €€r5   r]   zstack_v3.<locals>.<genexpr>’  sO   øè è € ð #ð #àð  %˜Z˜Z•�S‘	”	�	­U°4©[¬[ð#ð #ð #ð #ð #ð #r7   r   )r›   rz   F)Úuse_na_sentinelc                óT   •— g | ]$}t          j        |t          ‰¦  «        ¦  «        ‘Œ%S r1   )rH   rÉ   rZ   )r3   r<   r'  s     €r5   r6   zstack_v3.<locals>.<listcomp>Å  s+   ø€ ÐKÐKÐK°U•B”I˜e¥S¨¡Z¤ZÑ0Ô0ÐKÐKÐKr7   rÃ   r¤   r4  ))r›   ÚnuniquerZ   r‚   Úsortedr%  rû   rü   rH   ÚargsortÚ_reorder_ilevelsr   r§   Úiterr^   rj  rœ   r±   r   rË   r¬   r   r   r  rz   ro  r­   r'   r   r?   r>   rÌ   r<   r   Údrop_duplicatesrA   r†   rÉ   rG   r   rl  )r'  r(   Údrop_levnumsÚ
stack_colsÚsorterÚordered_stack_colsÚstack_cols_uniqueÚordered_stack_cols_uniqueÚbufr  rÛ   Úcolumn_indexerr
  Úratior  r‚  Úindex_levelsÚindex_codesr<   ÚuniquesÚcolumn_levelsÚcolumn_codesÚlen_dfÚ	n_uniquesrf   Úidxsr�  s   ``                        @r5   Ústack_v3r§  u  s?  øøø€ Ø„}×ÒÑÔ¥# e¤mÑ"4Ô"4Ò4Ð4ÝÐSÑTÔTÐTõ ˜%¨Ð.Ñ.Ô.€LØ”×2Ò2ØCÐCÐCÐC•E˜%œ-Ô/Ñ0Ô0ÐCÑCÔCÀDÀDÀbÀDÔIñô €Jõ ˆ5�z„z�A‚~€~å”˜EÑ"Ô"ˆØ'×8Ò8¸Ñ@Ô@ÐÐà'Ðà"×)Ò)Ñ+Ô+ÐØ 2× 9Ò 9Ñ ;Ô ;Ðð €CØ ð ñ ˆÝˆuŒ}ÑÔ Ò"Ð"Ø—:’:‘<”<ˆDˆDõ �5‰zŒz˜QŠˆØ�f�Ý�s‘)”)ˆCÝ"ð #ð #ð #ð #ð #å˜uœ}Ô4Ñ5Ô5ð#ñ #ô #ñ ô ˆNð ”9˜Q˜Q˜Q Ð.Ô/ˆDåˆu‰:Œ:˜œÔ-Ò-Ð-Øœ<×;Ò;¸LÑIÔIˆDŒLˆLØÔ 1Ò$Ð$ØŒy˜AŠ~ˆ~Ø�”	�	å)­#¨d¬lÑ*;Ô*;Ñ<Ô<�”Ø�
Š
�4ÑÔÐÑõ ˆ3�x„x�!‚|€|˜EœK€|Ý˜‘”ˆÝ�F‘”�s 5™zœzÑ)ˆˆõ ˆu‰:Œ:˜œÔ-Ò-Ð-àœ-×;Ò;¸LÑIÔI×PÒPÑRÔRˆKˆKà˜#ˆKÝ ;°e´mÔ6IÐJÑJÔJˆØˆå
ˆ5�z„z�E”MÔ)Ò)Ð)àœ-×;Ò;¸LÑIÔI×PÒPÑRÔRˆØŒ~×$Ò$ _Ñ5Ô5ð 	-Ø˜OÔ,ˆFõ
 �%”+�zÑ*Ô*ð 7Ø”{Ô)ˆÝ�2œ7 5¤;Ô#4°q¸%°jÑAÔAÑBÔBˆˆå" 5¤;ÀÐFÑFÔF‰ˆˆwØ�yˆÝ�2œ7 5¨1¨e¨*Ñ5Ô5Ñ6Ô6ˆÝ�*�jÑ)Ô)ð XØ*Ô1ˆØ)×9Ò9Ñ;Ô;ÔAˆˆà+×2Ò2Ñ4Ô4Ð5ˆÝ!Ð";ÈUÐSÑSÔSÐTUÔVÐWˆØKÐKÐKÐK¸lÐKÑKÔK€LÝØ˜mÑ+Ø˜LÑ(ØŒkÔ¥$Ð'9Ô'?Ñ"@Ô"@Ñ@Øð	ñ ô €F„Lõ �‰ZŒZ€FÝÐ-Ñ.Ô.€IÝŒi˜	Ñ"Ô"€GÝŒ7�6˜GÑ# VÑ,Ô,­r¬y½¼À6Ñ9JÔ9JÈIÑ/VÔ/VÑV€DØ�[Š[˜ÑÔ€Fð „{�aÒÐ˜EœMÔ1µS¸±Z´ZÒ?Ð?ÝˆvŒ~ÑÔ !Ò#Ð#Ý &¤,Ð/Ñ/Ô/ˆFˆFà”[    A Ô&ˆFØ„{�aÒÐØˆŒà€Mr7   )NT)rÛ   rÜ   r)   r*   )r  rÜ   r)   r*   )r  r   r)   r*   r+   r   )r"  r   r)   r*   r+   r   )r.   TT)r'  r   r(  r*   r)   r*   )TT)r›   r   r+   r   )
r'  r   r.  rH  r(  r*   r)   r*   r+   r   )rC  r#   rƒ  rH  r„  rH  r+   r#   )r'  r   r(   r†  r+   rÜ   )LÚ
__future__r   rT  Útypingr   r   rL   ÚnumpyrH   Úpandas._libs.reshapeÚ_libsr©   r´   Úpandas.errorsr   Úpandas.util._decoratorsr   Úpandas.util._exceptionsr   Úpandas.core.dtypes.castr	   r
   Úpandas.core.dtypes.commonr   r   r   r   Úpandas.core.dtypes.dtypesr   Úpandas.core.dtypes.missingr   Úpandas.core.algorithmsÚcoreÚ
algorithmsrr   r   r   Úpandas.core.arrays.categoricalr   Úpandas.core.constructionr   Úpandas.core.framer   Úpandas.core.indexes.apir   r   r   Úpandas.core.reshape.concatr   Úpandas.core.seriesr   Úpandas.core.sortingr   r   r   r   r   Úpandas._typingr    r!   r"   Úpandas.core.arraysr#   Úpandas.core.indexes.frozenr$   r&   r  rµ   r  r  r  rK  rZ  r5  r=  r§  r1   r7   r5   ú<module>rÁ     s  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð ðð ð ð ð ð ð ð ð €€€à Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,à &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð CÐ BÐ BÐ BÐ BÐ BØ CÐ CÐ CÐ CÐ CÐ CØ 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð
 .Ð -Ð -Ð -Ð -Ð -Ø %Ð %Ð %Ð %Ð %Ð %ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 6ðð ð ð ð ð ð ð ð ð ð 2Ð1Ð1Ð1Ð1Ð1Ø5Ð5Ð5Ð5Ð5Ð5ðK
ð K
ð K
ð K
ð K
ñ K
ô K
ð K
ð^
 DHðXð Xð Xð Xð Xðv!
ð !
ð !
ð !
ð !
ðJ :>ð
ð 
ð 
ð 
ð 
ð""ð "ð "ð "ðJJBð JBð JBð JBð JBðZð ð ð ð ðBð ð ð ð8 NRðAð Að Að Að AðH"ð "ð "ð "ðJhð hð hð hð hð hr7   