o
    Û­j} ã                   @   sü  d dl m Z  d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
Zd dl
mZmZmZmZmZmZmZ d dlmZ d dlmZ ejddgd	�d
d„ ƒZG dd„ dƒZej dddg¡dd„ ƒZdd„ Zdd„ Z dd„ Z!ej "d¡ej dddej#g¡dd„ ƒƒZ$ej "d¡ej dddej#g¡ej ddd g¡dd„ ƒƒƒZ%d d!„ Z&d"d#„ Z'ej "d¡d$d%„ ƒZ(d&d'„ Z)ej "d¡d(d)„ ƒZ*ej "d¡d*d+„ ƒZ+G d,d-„ d-ƒZ,d.d/„ Z-ej d0dej.fdej.fdej/fd1ej/fg¡ej d2ddg¡d3d4„ ƒƒZ0dS )5é    )ÚdatetimeN)Úlib)ÚPerformanceWarning)Ú	DataFrameÚIndexÚ
MultiIndexÚPeriodÚSeriesÚ	TimedeltaÚ
date_range)ÚreshapeTF)Úparamsc                 C   s   | j S ©N)Úparam)Úrequest© r   úb/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/frame/test_stack_unstack.pyÚfuture_stack   s   r   c                   @   s@  e Zd Zdd„ Zej d¡dd„ ƒZdd„ Zej d¡dd	„ ƒZ	d
d„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zej ddg d¢g d¢g d¢g d¢gejg d¢ddgd�ejg d¢ddgd�fdg d ¢g d ¢ged!d"gdd#�ejg d$¢g d%¢d�fg¡d&d'„ ƒZd(d)„ Zej d¡d*d+„ ƒZej d¡d,d-„ ƒZej d¡d.d/„ ƒZd0d1„ Zej d¡d2d3„ ƒZd4d5„ Zd6d7„ Zej d8e d9¡e d9¡fejd9d:d;�ejd9d<d:d;�ff¡d=d>„ ƒZ ej d¡d?d@„ ƒZ!dAdB„ Z"ej dCdDg dE¢ej#dFdGgej#d9dHgfdHg dI¢ej#d9dHgej#dFdGgff¡dJdK„ ƒZ$ej dLdMdge%dƒg¡dNdO„ ƒZ&dPdQ„ Z'dRdS„ Z(dTdU„ Z)ej dVdWdXg¡ej dYe*e+dGƒƒ¡dZd[„ ƒƒZ,ej dVe- .g d\¢¡¡ej dYe*e+d!ƒƒ¡ej d]d^d_g¡d`da„ ƒƒƒZ/dbdc„ Z0ddde„ Z1dfdg„ Z2dhdi„ Z3djdk„ Z4ej d¡ej dlg dm¢g dn¢g do¢g dp¢g dq¢g dr¢dDdHgdDdGgdDd!gdDgdGgd"gg ds¢g dt¢g du¢g dv¢g dw¢g dx¢dHdDgdGdDgd!dDgg¡ej dydzdDdHdDdHgdHdDgf¡d{d|„ ƒƒƒZ5ej d¡d}d~„ ƒZ6ej dd€d�g¡d‚dƒ„ ƒZ7ej d¡ej dd€d�g¡ej d„e*d…ƒg d†¢fe*d‡ƒg dˆ¢fg¡d‰dŠ„ ƒƒƒZ8d‹dŒ„ Z9ej d¡ej d�¡ej dŽg d�¢e :dHdGgdFd�gg¡fg d‘¢e :dHdGgdFd�gg¡fg dn¢e :dHdGgdFd�gg¡fg¡d’d“„ ƒƒƒZ;ej d¡ej d”dHdGgd•d–gd—d˜d˜fdHdGgd™dšgd—d›dœfg¡d�dž„ ƒƒZ<ej dydDdHg¡dŸd „ ƒZ=ej dydDd¡g¡d¢d£„ ƒZ>dS )¤ÚTestDataFrameReshapec           
      C   s¨   |  ¡ }t t |j¡¡ |j¡|d d …< |j|d�}t||dœƒ}| ¡ }| ¡ }t	 
||¡ t	 
|d |¡ | d¡}| d¡}	t	 
|j|¡ t	 
|	d j|¡ d S )N©r   )ÚfooÚbarr   r   )ÚcopyÚnpÚarangeÚprodÚshaper   Ústackr   ÚunstackÚtmÚassert_frame_equalÚT)
ÚselfÚfloat_framer   ÚdfÚstackedÚ
stacked_dfÚ	unstackedÚunstacked_dfÚunstacked_colsÚunstacked_cols_dfr   r   r   Útest_stack_unstack   s   "

z'TestDataFrameReshape.test_stack_unstackú9ignore:The previous implementation of stack is deprecatedc                 C   sî   t dƒg d¢ddgg}td|d |d d�}|j|d�}tdt |d d… ¡d�}t ||¡ td|d t |dd … ¡d�}|jd|d�}tdt |d |d g¡|d d�}t ||¡ |d	d
g jd|d�}|d	d
g }t ||¡ d S )Né   )r-   ÚaÚbé   é   r   ©ÚindexÚcolumnsr   ©r3   r.   r/   )	Úranger   r   r	   r   Úfrom_productr   Úassert_series_equalr    )r"   r   Úlevelsr$   ÚresultÚexpectedr   r   r   Útest_stack_mixed_level1   s    ÿz+TestDataFrameReshape.test_stack_mixed_levelc                 C   sl   t ddtjgddtjgdœƒ}|dg }|d |d< |s&t|jjƒdks&J ‚| ¡ }| ¡ }t ||¡ d S )Nr0   r1   ç      @é   ©ÚxÚyr@   rA   )	r   r   ÚnanÚlenÚ_mgrÚblocksr   r   r8   )r"   Úusing_array_managerr$   Údf2Úresr;   r   r   r   Útest_unstack_not_consolidatedK   s   
z2TestDataFrameReshape.test_unstack_not_consolidatedc           
      C   sx  t g d¢tjd�}t g d¢¡|_|jdd�}tg d¢g d¢dœg d	¢tjd
�}t 	||¡ |jdd�}tg d¢g d¢dœg d	¢t
d
�}t 	||¡ tg d¢g d¢g d¢g d¢dœƒ g d	¢¡}|jddgdd�}d}|| }t g d¢|j|d�}t ||¡ |jddg|d�}|j |jj¡|_| tj¡}|j|j }t 	||¡ |d }	|	jddgdd�}|d }t 	||¡ d S )N)r0   r1   r>   é   ©Údtype©)r@   r.   )r@   r/   )rA   r/   )Úzr.   éÿÿÿÿ©Ú
fill_value)r0   rO   rJ   )r1   r>   rO   ©r.   r/   ©r@   rA   rN   ©r3   rL   ç      à?)r0   rU   rJ   )r1   r>   rU   ©r.   r.   r/   )ÚjÚkrW   ©r   r0   r1   )r@   rA   rN   Úwr@   rA   r   )rZ   r/   rW   )r   r   r1   )r3   Únamer   rZ   )r	   r   Úint16r   Úfrom_tuplesr3   r   r   r   r    ÚfloatÚ	set_indexr8   r   Úreorder_levelsÚnamesÚastypeÚint64Úloc)
r"   r   Údatar:   r;   r$   r'   Úkeyr%   Úsr   r   r   Útest_unstack_fillW   sB   ÿÿÿÿ
þz&TestDataFrameReshape.test_unstack_fillc                 C   sN  ddgddgddgddgg}t |td	ƒtjd
�}t g d¢¡|_|jdd�}g d¢g d¢g d¢g}t |tdƒtjd�}t g d¢¡|_t	 
||¡ |d  tj¡|d< |d  tj¡|d< |jdd�}|d  tj¡|d< |d  tj¡|d< t	 
||¡ |jdd�}g d¢g d¢g d¢g}t |tdƒtd�}t g d¢¡|_t	 
||¡ d S )Nr0   r1   r-   r>   rJ   é   é   é   ÚAB)r4   rL   rM   rO   rP   )r0   r-   r1   r>   )rO   rJ   rO   ri   )rj   rO   rk   rO   ÚxyzrT   )©ÚAr.   )ro   r/   )ÚBr.   ©rp   r/   ro   rp   rU   )rU   rJ   rU   ri   )rj   rU   rk   rU   )r   Úlistr   Úint32r   r]   r3   r   r4   r   r    rb   r\   Úfloat64r^   )r"   Úrowsr$   r:   r;   r   r   r   Útest_unstack_fill_frameˆ   s2   ÿÿÿz,TestDataFrameReshape.test_unstack_fill_framec                 C   sÊ   t ddd�j}t|ƒ}t g d¢¡|_| ¡ }t|d tj	|d g|d |d tj	gd	œg d
¢d�}t
 ||¡ |j|d d�}t|d |d |d g|d |d |d gd	œg d
¢d�}t
 ||¡ d S )Nú
2012-01-01r>   ©ÚperiodsrM   r   r-   r0   r1   rR   rS   r5   rP   )r   Úvaluesr	   r   r]   r3   r   r   ÚpdÚNaTr   r    )r"   Údvre   r:   r;   r   r   r   Ú test_unstack_fill_frame_datetime¬   s"   ÿ(þ,þz5TestDataFrameReshape.test_unstack_fill_frame_datetimec                 C   sÎ   dd„ t dƒD ƒ}t|ƒ}t g d¢¡|_| ¡ }t|d tj|d g|d |d tjgd	œg d
¢d�}t	 
||¡ |j|d d�}t|d |d |d g|d |d |d gd	œg d
¢d�}t	 
||¡ d S )Nc                 S   s   g | ]}t |d �‘qS ))Údays)r
   )Ú.0Úir   r   r   Ú
<listcomp>Ä   ó    zJTestDataFrameReshape.test_unstack_fill_frame_timedelta.<locals>.<listcomp>r>   rM   r   r-   r0   r1   rR   rS   r5   rP   )r6   r	   r   r]   r3   r   r   r{   r|   r   r    )r"   Útdre   r:   r;   r   r   r   Ú!test_unstack_fill_frame_timedeltaÂ   s"   ÿ(þ,þz6TestDataFrameReshape.test_unstack_fill_frame_timedeltac                 C   sÔ   t dƒt dƒt dƒt dƒg}t|ƒ}t g d¢¡|_| ¡ }t|d d |d g|d |d	 d gd
œg d¢d�}t ||¡ |j|d d�}t|d |d |d g|d |d	 |d gd
œg d¢d�}t ||¡ d S )Nz2012-01z2012-02z2012-03z2012-04rM   r   r-   r0   r1   rR   rS   r5   rP   )	r   r	   r   r]   r3   r   r   r   r    )r"   ry   re   r:   r;   r   r   r   Útest_unstack_fill_frame_periodØ   s.   üÿ$þþûz3TestDataFrameReshape.test_unstack_fill_frame_periodc                 C   s  t g d¢dd�}t g d¢¡|_| ¡ }ttjtdƒtdƒd�tjtdƒtdƒd�d	œtd
ƒd�}t	 
||¡ d}tjt|d�� |jdd� W d   ƒ n1 sQw   Y  |jdd�}ttjtdƒtdƒd�tjtdƒtdƒd�d	œtd
ƒd�}t	 
||¡ d S )N©r.   r/   Úcr.   ÚcategoryrK   rM   ÚaxaÚabc©Ú
categoriesÚbcxrR   rm   r5   z9Cannot setitem on a Categorical with a new category \(d\)©ÚmatchÚdrP   rˆ   ÚacaÚbcc)r	   r   r]   r3   r   r   r{   ÚCategoricalrr   r   r    ÚpytestÚraisesÚ	TypeError)r"   re   r:   r;   Úmsgr   r   r   Ú#test_unstack_fill_frame_categoricalö   s0   ÿþûÿþûz8TestDataFrameReshape.test_unstack_fill_frame_categoricalc                 C   s”   t jg d¢g d¢gddgd�}tdgd dgd d	œ|d
�}| d¡}tg d¢g d¢g d¢gt jg d¢d dgd�tg d¢dd�d�}t ||¡ d S )N©r.   r/   rˆ   ©r0   r1   r-   rn   rq   ©ra   r0   é	   r1   ©r‘   Úer5   )r0   r0   r0   r1   r1   r1   )©r‘   r.   ©r‘   r/   )r‘   rˆ   ©rŸ   r.   ©rŸ   r/   )rŸ   rˆ   ©r[   ©r4   r3   )r   r7   r   r   r]   r   r   r    ©r"   Úidxr$   r:   r;   r   r   r   Ú$test_unstack_tuplename_in_multiindex  s   ÿ
÷óz9TestDataFrameReshape.test_unstack_tuplename_in_multiindexz>unstack_idx, expected_values, expected_index, expected_columnsrn   )r0   r0   r1   r1   ))r0   r-   )r0   r>   ©r1   r-   )r1   r>   rp   ÚCrœ   )r    r¡   r¢   r£   N)rn   rp   )r0   r0   r0   r0   r1   r1   r1   r1   r-   r>   r¤   ))r‘   r.   r0   )r‘   r.   r1   )r‘   r/   r0   )r‘   r/   r1   )rŸ   r.   r0   )rŸ   r.   r1   )rŸ   r/   r0   )rŸ   r/   r1   )Nrn   rp   c           	      C   sj   t jddgddgddggg d¢d�}tdgd	 dgd	 d
œ|d�}| |¡}t|||d�}t ||¡ d S )Nr.   r/   r0   r1   r-   r>   )rn   rp   rª   rœ   rk   rž   r5   r¥   )r   r7   r   r   r   r    )	r"   Úunstack_idxÚexpected_valuesÚexpected_indexÚexpected_columnsr§   r$   r:   r;   r   r   r   Ú*test_unstack_mixed_type_name_in_multiindex1  s   &ÿ
ÿz?TestDataFrameReshape.test_unstack_mixed_type_name_in_multiindexc                 C   s  t g d¢g d¢tg d¢ƒ d¡tj d¡ d¡ddt d¡tg d	¢ƒ d
¡tg d¢ƒ d¡dtg d¢ƒ d¡dœƒ}dd„ }| ddg¡}||dƒ | ddg¡}||dƒ | ddg¡}||dƒ | g d¢¡}||dƒ | ddg¡}||dƒ | ddg¡}|d }||dƒ d S )N)ÚILÚMIÚNCrš   r‰   r1   r-   r0   r   Ú20010102)ç      ð?ç      I@g      Y@Úfloat32)r=   ç      @ç      @rt   F)r0   éÈ   i2 Úint8)Ústater3   Úsome_categoriesro   rp   rª   ÚDÚEÚFÚGÚHc                 S   s&   |   |g¡}|   |¡}t ||¡ d S r   ©r   r   r    )r$   Úcolumn_nameÚ
unstacked1Ú
unstacked2r   r   r   Úunstack_and_comparet  s   
zNTestDataFrameReshape.test_unstack_preserve_dtypes.<locals>.unstack_and_comparer»   r3   r¼   r¿   rª   )rÀ   rp   r»   rp   r¾   ro   )	r   r	   rb   r   ÚrandomÚdefault_rngr{   Ú	Timestampr_   )r"   r$   rÆ   Údf1rg   r   r   r   Útest_unstack_preserve_dtypesb  s8   õÿ




z1TestDataFrameReshape.test_unstack_preserve_dtypesc                 C   sì   t  ttjtdƒdd�ƒ¡}ttj 	d¡ 
d¡|d�}t |jddg|d�|jd|d�jd|d�¡ t |jdd	g|d�|jd|d�jd|d�¡ | ¡ }|jjtdƒd
d�}|d u s]J ‚t |jddg|d�|jd|d�jd|d�¡ d S )Nr-   ©Úrepeatr1   )é   é   ©r4   r0   ©Úlevelr   éþÿÿÿrO   T)Úinplace)r   r]   rr   Ú	itertoolsÚproductr6   r   r   rÇ   rÈ   Ústandard_normalr   r    r   r   r4   Ú	set_names)r"   r   r4   r$   Údf_namedÚreturn_valuer   r   r   Útest_stack_intsŒ  s2   ÿÿþÿþÿþz$TestDataFrameReshape.test_stack_intsc           	      C   s  t jg d¢g d¢d�}ttj d¡ d¡|d�}|jddg|d	�}|jd
dg|d	�}| ¡ }g d¢|j	_
tj|jddg|d	�|dd� tj|jd
dg|d	�|dd� d}tjt|d�� |jddg|d	� W d   ƒ n1 sow   Y  | ¡ }g d¢|j	_
tj|jddg|d	�|dd� d S )N©)ro   ÚcatÚlong)rp   rÝ   rÞ   )ro   ÚdogÚshort)rp   rß   rà   ©ÚexpÚanimalÚhair_lengthrœ   r1   ©r>   r>   rÐ   rã   rä   rÑ   râ   )râ   rã   r0   r0   F©Úcheck_nameszSlevel should contain all level names or all level numbers, not a mixture of the twor�   r   )râ   rã   r   )r   r]   r   r   rÇ   rÈ   r×   r   r   r4   ra   r   r    r•   r–   Ú
ValueError)	r"   r   r4   r$   Úanimal_hair_stackedÚexp_hair_stackedrG   r˜   Údf3r   r   r   Útest_stack_mixed_levels­  sJ   ù	ÿÿÿýý	ÿÿ
ýz,TestDataFrameReshape.test_stack_mixed_levelsc           	      C   sF  t jg d¢g d¢d�}ttj d¡ d¡|d�}|jddg|d	�}|jdd
g|d	�}|jdd
g|d	�}| ¡ }g d¢|j	_
tj|jddg|d	�|dd� tj|jddg|d	�|dd� tj|jddg|d	�|dd� | ¡ }g d¢|j	_
tj|jddg|d	�|dd� tj|jddg|d	�|dd� tj|jddg|d	�|dd� d S )NrÜ   rá   rœ   r1   rå   rÐ   râ   rã   rÑ   rä   rY   r0   Fræ   r   )r1   r   r0   )r   r]   r   r   rÇ   rÈ   r×   r   r   r4   ra   r   r    )	r"   r   r4   r$   Úexp_animal_stackedré   rê   rG   rë   r   r   r   Útest_stack_int_level_namesè  sd   ù	ÿÿÿÿýýýýý
ýz/TestDataFrameReshape.test_stack_int_level_namesc                 C   s|   t ddgt ddgddgg¡dgd�}| ¡ }t tjdtjgtjdggtd�ddgt ddgddgg¡d�}t 	||¡ d S )	NFr.   r/   rˆ   ÚlÚcolr2   rK   )
r   r   Úfrom_arraysr   r   ÚarrayrB   Úobjectr   r    )r"   r$   ÚrsÚxpr   r   r   Útest_unstack_bool(  s   ýýz&TestDataFrameReshape.test_unstack_boolc                 C   sÚ   t ddgddgddggg d¢g d¢g d	¢gg d
¢d�}td|d�}| ddg¡jd|d�}t ddgddggg d¢g d¢gddgd�}ttjdtjgtjdgdtjgtjdggtjd�|t	ddgdd�d�}t
 ||¡ d S )Nr   r   ÚoneÚtwor.   r/   ©r   r   r0   r0   ©r   r0   r   r0   )r0   r   r0   r   )ÚfirstÚsecondÚthird©r9   Úcodesra   r   r5   r0   r1   r   rû   rü   rK   rý   r¤   r2   )r   r	   r   r   r   r   rò   rB   rt   r   r   r    )r"   r   Úmirg   r:   Úexpected_mir;   r   r   r   Útest_unstack_level_binding6  s(   ýý&ÿûz/TestDataFrameReshape.test_unstack_level_bindingc           	      C   sÚ   |  ¡ }t|tƒsJ ‚|  ¡ j}t ||¡ tddtjgddtjgdœƒ}t	g d¢ƒ|_
|  ¡ }tddgg d¢gg d	¢g d
¢gd�}tddtjddtjg|d�}t ||¡ | ¡ }tdƒD ]}|  ¡ }q^t ||¡ d S )Nr0   r1   r=   r>   r?   rš   r@   rA   )r   r   r   r0   r0   r0   )r   r0   r1   r   r0   r1   ©r9   rÿ   r-   r5   )r   Ú
isinstancer	   r!   r   r    r   r   rB   r   r3   r   r8   r   r6   )	r"   r#   re   Úundor:   Úmidxr;   Úold_dataÚ_r   r   r   Útest_unstack_to_seriesS  s"   
þ
z+TestDataFrameReshape.test_unstack_to_seriesc           	      C   sž  g d¢g d¢g d¢g d¢g}t |tdƒd�}|j}tt d¡gd tdƒd	�}t ||¡ | d
dg¡}| 	d¡}|j}tt d¡gd t
jg d¢g d¢gdd�d	�}t ||¡ | d
dg¡}d|d< | 	d¡}|j}tt d¡gd t d¡gd  t
jg d¢g d¢gdd�d	�}t ||¡ d|d< | 	d¡}|j}|r¦tjtjd�nt d¡}tt d¡gd |gd  t
jg d¢g d¢gdd�d	�}t ||¡ d S )N)r0   r0   r-   r>   ©r0   r1   r-   r>   )r1   r0   r-   r>   )r1   r1   r-   r>   ÚABCDrÐ   rc   r>   r5   ro   rp   )rª   rª   r½   r½   )r0   r1   r0   r1   )Nrp   rœ   r=   rª   rt   r1   r   r½   )Úna_valueró   )r   rr   Údtypesr	   r   rL   r   r8   r_   r   r   rñ   r{   ÚStringDtyperB   )	r"   Úusing_infer_stringru   r$   r:   r;   rG   rë   rL   r   r   r   Útest_unstack_dtypesn  sP   
ÿþ
ÿþ
ÿýÿþz(TestDataFrameReshape.test_unstack_dtypeszc, drJ   Úf8rK   é
   c                 C   s®   t dgd ||tddd�dœƒ}|jd d… jdd�}| d	d
g¡}|d  d¡|d< |jd d…  d¡}| d	d
g¡ d¡}|d  d¡|d< |jdksOJ ‚t 	||¡ d S )Nr.   rJ   rw   rx   )ro   rª   r½   rp   r-   T)Údeepro   rp   r½   rc   r   )r½   r.   )r-   r1   )
r   r   Úilocr   r_   rb   r   r   r   r    )r"   rˆ   r‘   r$   ÚrightÚleftr   r   r   Útest_unstack_dtypes_mixed_dateŸ  s   	
üÿ	z3TestDataFrameReshape.test_unstack_dtypes_mixed_datec                 C   s¦   t jddgddgd�}tddg|d�}d}tjt|d	�� | d¡ W d   ƒ n1 s,w   Y  tjt|d	�� |jjd|d
� W d   ƒ d S 1 sLw   Y  d S )NrR   )rˆ   r‘   Úc1rœ   r0   r1   r5   z5The name c1 occurs multiple times, use a level numberr�   r   )	r   r]   r   r•   r–   rè   r   r!   r   )r"   r   r§   r$   r˜   r   r   r   Ú#test_unstack_non_unique_index_names½  s   ÿ"ÿz8TestDataFrameReshape.test_unstack_non_unique_index_namesc           	      C   sB  t  dgg d¢g¡d d… }tddggd |d�}| ¡ }t  ddgg d¢g¡}tg d	¢gdg|d
�}t ||¡ |jjd |jd k ¡ sHJ ‚g d¢g d¢g}g d¢g d¢g}t ||ƒ}t	 
d¡ dd¡}tt	 ||d g¡|d�}| ¡ }tt	j|d |d d gdd�|d�}t ||¡ |jjd |jd k ¡ sŸJ ‚d S )Nr.   )ro   rp   rª   r½   rO   r0   r   r-   r5   ©ro   rp   rª   )r0   r0   r0   r   r   r   r2   )r   r0   rj   ©r   r0   r1   r-   rù   ©r   r1   r   r1   r>   r1   ©ÚaxisrÐ   )r   r7   r   r   r   r    r4   r9   Úallr   r   r   Úconcatenate)	r"   r§   r$   r:   Úexp_colr;   r9   rÿ   Úblockr   r   r   Útest_unstack_unused_levelsÊ  s$   
ÿ"z/TestDataFrameReshape.test_unstack_unused_levelsz"level, idces, col_level, idx_levelr   )é   é   ri   r�   r1   rJ   rk   é   r.   r1   r0   )rk   r&  r0   r>   é   é   r$  r%  c                 C   s¤   g d¢g d¢g}g d¢g d¢g}t ||ƒ}t d¡}t| dd¡|d�}	|	j|d	�}
t d
¡tj }|||< t  ddg|g¡}t| dd¡||d�}t	 
|
|¡ d S )N)r.   r1   rˆ   )r0   r-   rJ   rj   )r   rO   r0   r0   )r   r1   rO   r1   rk   r>   r1   r5   ©rÒ   é   r   r0   r-   ri   r2   )r   r   r   r   r   r   ÚzerosrB   r7   r   r    )r"   rÒ   ÚidcesÚ	col_levelÚ	idx_levelr9   rÿ   r§   re   r$   r:   Úexp_dataÚcolsr;   r   r   r   Ú)test_unstack_unused_levels_mixed_with_nanâ  s   

z>TestDataFrameReshape.test_unstack_unused_levels_mixed_with_nanr0  ro   c                 C   sœ   t g d¢g d¢gg d¢d�}|jg d¢dd�}|jtd ƒtd ƒdf|f }| ¡ }|jdg | }tj|jdggd d	gd
�|_|j	 
d	¡|_	t ||¡ d S )N)iÚ  r.   ÚI)iÛ  r/   ÚIIr  rÐ   F)Údropr2  r   rª   rœ   )r   r_   rd   Úslicer   r  r   r7   r4   r3   Ú	droplevelr   r    )r"   r0  r$   ÚindÚ	selectionr:   r;   r   r   r   Útest_unstack_unused_levelú  s   ÿz.TestDataFrameReshape.test_unstack_unused_levelc                 C   s„   t dggtjdggdgd�tjg d¢gg d¢d�d�}| g d¢¡}t dggtjg d¢gg d	¢d�tdgd
d�d�}t ||¡ d S )Nr0   r   r  rœ   )r   r   r0   r   r   r   r0   )Úi1Úi2Úi3Úi4Úi5Úi6Úi7r¥   )r;  r<  r=  r>  r?  r@  )r  r;  r<  r=  r>  r?  r@  r:  r¤   )r   r   r]   r   r   r   r    ©r"   r$   r:   r;   r   r   r   Útest_unstack_long_index
  s$   þýþúz,TestDataFrameReshape.test_unstack_long_indexc                 C   sx   t ddgddggtjddgddggddgd�tjg d¢g d	¢gg d
¢d�d�}| ddg¡jjdd … ddgks:J ‚d S )Nç        rp   rª   r½   r  Úc2rœ   )r  é   rÎ   )r  rE  é(   ©r:  r;  r<  r¥   r;  r:  rÓ   )r   r   r]   r   r4   ra   )r"   r$   r   r   r   Útest_unstack_multi_level_cols   s   ÿÿû*	z2TestDataFrameReshape.test_unstack_multi_level_colsc              	   C   s�   t ddgddgddgddggt g d	¢g d
¢g¡tjg d¢g d¢g d¢g d¢gg d¢d�d�}| ddg¡}| dg¡ dg¡}t ||¡ d S )Nr0   r1   r-   r>   rO   rÓ   éýÿÿÿéüÿÿÿrš   )r‘   rŸ   Úf)Úm1ÚP3éÞ   )rL  ÚA5éo   )Úm2rM  rN  )rQ  rO  rP  rG  rœ   r¥   r<  r;  )r   r   r]   r   r   r    rA  r   r   r   Ú&test_unstack_multi_level_rows_and_cols-  s   üùýz;TestDataFrameReshape.test_unstack_multi_level_rows_and_colsr§   ©ÚjimÚjoe)rU  rT  Úlevc                 C   s(  dd„ }t ddtjdgg d¢g d¢dœƒ}| d	d
g¡ ¡ d }| d
d	g¡ ¡ d j}t ||¡ | t|ƒ¡}|j|d�}| 	¡ j
 ¡ t|ƒksLJ ‚dd„ }	|d  	¡ j
 ¡ \}
}t|
|ƒD ]1\}}t|d j||f  d¡ƒ}|	|d j| ƒ|	|d j| ƒ }tt||ƒƒ}||ks‘J ‚q`d S )Nc                 S   ó   | | krdn| }|d›S ©NÚ Ú1r   ©ÚvalÚval_strr   r   r   ÚcastD  ó   z:TestDataFrameReshape.test_unstack_nan_index1.<locals>.castr.   r/   r‘   )rZ   r@   rA   rN   )za.wzb.xz .yzd.z)rT  rU  ÚjolierT  rU  r`  r)  c                 S   ó   t | tƒr	t| ƒS | gS r   ©r  Útuplerr   ©r.   r   r   r   Ú<lambda>W  ó    z>TestDataFrameReshape.test_unstack_nan_index1.<locals>.<lambda>Ú.)r   r   rB   r_   r   r!   r   r    rr   Únotnarz   ÚsumrC   ÚnonzeroÚzipÚsortedr  Úsplitr3   r4   Úmap)r"   r§   rV  r^  r$   r  r  r   ÚudfÚmk_listru   r0  r�   rW   r   r   r   Útest_unstack_nan_index1@  s*   ýÿ$üz,TestDataFrameReshape.test_unstack_nan_index1©Ú1stÚ2ndÚ3rdrð   Ú4thÚ5thc                    sœ  dd„ ‰ t dgd tjgd  dgd  dgd  d	gd  d
gd  dgd dgd  tjgd  dgd  tjgd  dgd  tjgd  g d¢dœƒ}|j‡ fdd„dd�|j‡ fdd„dd�|d< |d< | t|ƒ¡}|j|d�}| ¡ j 	¡ dt
|ƒ ks†J ‚dd„ }||  ¡ j ¡ \}}	t||	ƒD ]1\}
}t|| j|
|f  d¡ƒ}||| j|
 ƒ||| j| ƒ }ttˆ |ƒƒ}||ksËJ ‚qšd S )Nc                 S   rW  rX  r   r[  r   r   r   r^  c  r_  zATestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.castr‘   r-   rJ   r.   r1   rˆ   rŸ   r/   rA   rZ   rN   r>   r@   )éC   é'   é5   éH   é9   éP   é   r*  r&  rÎ   é;   é2   é>   r  éL   é4   é   rz  é<   é3   rr  c                    s   d  tˆ | ƒ¡S )Nrg  )Újoinrn  ©Úr©r^  r   r   re  �  s    zETestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.<lambda>r0   r  c                    s   d  tˆ | jd d d… ƒ¡S )Nrg  rO   )r‡  rn  r  rˆ  rŠ  r   r   re  ‘  s    rv  rw  r)  c                 S   ra  r   rb  rd  r   r   r   re  —  rf  rg  )r   r   rB   Úapplyr_   rr   r   rh  rz   ri  rC   rj  rk  rl  r  rm  r3   r4   rn  )r"   r§   rV  rð   r$   r   ro  rp  ru   r0  r�   rW   r  r  r   rŠ  r   Útest_unstack_nan_index_repeats_  sV   
ÿþýüûÿ
þý
üû
úòÿ)þ$üz3TestDataFrameReshape.test_unstack_nan_index_repeatsc              	   C   sœ  t tdƒtdƒtdƒdœƒ}| ddi¡}tj|jd< | ddg¡ d¡}d	dd
dtjtjtjtjgtjtjtjtjddddgg}tt	tt
|Ž ƒƒ}ttjdd
dddddgdd�}tdgddggddgdd
ggd dgd�}t |||d�}t ||¡ t tdƒttdƒƒd tdƒdœƒ}| ddi¡}tj|jd< | ddg¡ d¡}dtjgddgd
dgtjdgd	dgg}tdgddggddgdd
ggd dgd�}ttjdd
dd	gdd�}t |||d�}t ||¡ t tdƒttdƒƒd tdƒdœƒ}| ddi¡}tj|jd< | ddg¡ d¡}d	tjgddgd
dgddgtjdgg}tdgddggddgdd
ggd dgd�}ttjdd
dd	gdd�}t |||d�}t ||¡ d S )NÚaaaabbbbrk   r  rp   r^   ©r-   r0   ro   r   r-   r0   r1   r>   rJ   ri   rj   r¤   rª   r.   r/   rþ   r¥   )r1   r0   )r   rr   r6   rb   r   rB   r  r_   r   rn  rk  r   r   r   r    )r"   r$   r  Úvalsr§   r0  r  r   r   r   Útest_unstack_nan_index2Ÿ  sH   þ ÿ$& ÿ$& ÿz,TestDataFrameReshape.test_unstack_nan_index2c              	   C   sö   t tdƒtddd� ¡ d t d¡dœƒ}tj|jd< | d	d
g¡ 	¡ }t 
ddddtjdgtjdddddgg¡}tddgd	d�}tdgtddd�gg d¢g d¢gd d
gd�}t |||d�}|rs|jg d¢ }||  |d j¡||< t ||¡ d S )NÚ
aaaaabbbbbrw   rJ   rx   r1   r  r  rŽ  ro   rp   r-   r   r0   r>   ri   rj   rk   r�   r.   r/   r¤   rª   )r   r   r   r   r   r   )rO   r   r0   r1   r-   r>   rþ   r¥   )r0   r1   r-   rJ   )r   rr   r   Útolistr   r   rB   r  r_   r   rò   r   r   r4   rb   rL   r   r    )r"   rF   r$   r  r�  r§   r0  r  r   r   r   Útest_unstack_nan_index3Ð  s(   ýÿ*ýz,TestDataFrameReshape.test_unstack_nan_index3c                 C   s(  dt jt jdgddt jdgddt jdgg d¢g d¢g d	¢g}t|g d
¢g d¢d�}| ¡  g d¢¡ ¡ }t jt jdt jdgddt jdt jgg}tddgdggddgddggddgd�}tdgg d¢gg d¢g d¢gd dgd�}t|||d�}t ||¡ |j	dd …  ¡  g d¢¡}t | ¡ |¡ d S )NÚHgi¼ç�(ÚUrC  ÚPbg¢	VÍZ§Ý>)ÚSnçº@¹ÕÂø>çÌ]KÈ=‹?é)=‘()ÚAgrC  r™  rš  )r”  ça2U0*©#¿r™  rš  )ÚagentÚchangeÚdosageÚs_id)ioC  épC  iqC  irC  isC  itC  r¥   )r   rŸ  r�  rœ  r˜  rš  r™  r   r0   rO   r   rŸ  rþ   rž  )r›  r”  r–  r—  r•  )r   r   r   r   r   ©r   r0   r1   r-   r>   r�  r¡  )
r   rB   r   r   r_   r   r   r   r    rd   )r"   r�  r$   r  r§   r0  r  r   r   r   Útest_unstack_nan_index4ì  s<   úýþýýz,TestDataFrameReshape.test_unstack_nan_index4c                 C   s
  t g d¢tdddd�dt d¡ tj d¡ d¡d  d¡d	œƒ}|d
 t 	d¡ |d< tj
 |jd< |jd< tj
 |jd< |jd< | g d¢¡ d
dg¡}| ¡ j ¡ dt|ƒ ks]J ‚dD ]#}| ¡ D ]\}}|d ||d
 |d ff}|| |j| ks�J ‚qeq_d S )N)r0   r1   r0   r1   r0   r1   z
2014-02-01ri   r½   )ry   Úfreqéd   r1   r  )rs  rt  rT  rU  rt  z
2014-02-02ru  )r0   rt  )r-   rt  )r0   ru  )r>   ru  rr  rS  rs  )r   r   r   r   rÇ   rÈ   r×   Úroundr{   rÉ   rB   rd   r_   r   rh  rz   ri  rC   Úiterrows)r"   r$   r  rð   r  r‰  rf   r   r   r   Útest_unstack_nan_index5  s$   üÿ	þÿz,TestDataFrameReshape.test_unstack_nan_index5c           
      C   s´   t dddƒ}tg d¢t |ddfg¡d�}|rd nt}d}tj||d�� |j|d	�}W d   ƒ n1 s5w   Y  t d
dg¡}t |dfg¡}tg d¢||d�}	t 	||	¡ d S )NiÞ  r0   r
  ro   rp   rÐ   z2The previous implementation of stack is deprecatedr�   r   r  )rp   r2   )
r   r   r   r]   ÚFutureWarningr   Úassert_produces_warningr   r7   r    )
r"   r   Útr$   Úwarnr˜   r:   ÚeidxÚecolsr;   r   r   r   Ú%test_stack_datetime_column_multiIndex,  s   ÿz:TestDataFrameReshape.test_stack_datetime_column_multiIndexÚmultiindex_columnsr¢  r  )r   r0   r1   r>   rY   r›   )r1   r-   r>   )r>   r-   r1   r0   r   )r-   r1   r0   r   )r>   r1   r0   r   )r1   r0   r   )r-   r1   r0   )r>   r-   r1   rÒ   rO   c           
      C   sø   |sdnt j}tjg d¢ddgd�}|| }tt dt|ƒ ¡ dt|ƒ¡|d�}|j	|||d�}t
|tƒrR|sR|j	|d	|d�}	t
|	tƒrLt ||	¡ nt ||	¡ tj|j ¡ |jjd�|_|j	|||d�}	t
|	tƒrtt ||	¡ d S t ||	¡ d S )
NF©)rp   r@   )rp   rN   )ro   rA   )rª   r@   )rª   ÚuÚUpperÚLowerrœ   r-   rÐ   )rÒ   Údropnar   T)r   Ú
no_defaultr   r]   r   r   r   rC   r   r   r  Úintr	   r   r8   r    r4   Úto_numpyra   )
r"   r°  rÒ   r   rµ  Úfull_multiindexÚ
multiindexr$   r:   r;   r   r   r   Útest_stack_partial_multiIndex:  s.    þþ
ÿ
z2TestDataFrameReshape.test_stack_partial_multiIndexc                 C   sÚ   t jg d¢ddgd�}tt d¡ dd¡|g d¢ d	�}|s d
ntj}|j||d�}tddgdtj	gddgdtj	ggt ddgg d¢gg d¢g d¢gd dgd�t
ddgdd�d�}|d  |jjd ¡|d< t ||¡ d S )Nr±  r³  r´  rœ   ri   r1   r-   )r   r0   r-   rÐ   F©rµ  r   r   r0   rJ   r>   )r²  r@   rA   rN   rù   )r0   r-   r0   r-   rþ   rp   rª   r¤   r2   )r   r]   r   r   r   r   r   r¶  r   rB   r   rb   r  r  r   r    )r"   r   r¹  r$   rµ  r:   r;   r   r   r   Útest_stack_full_multiIndexy  s$   þ"ýù	z/TestDataFrameReshape.test_stack_full_multiIndexÚorderedFTc                 C   sf   t jtdƒtdƒ|d�}tg d¢g|d�}|j|d�}t |j|g¡}tg d¢|d�}t	 
||¡ d S )NÚyxzrm   ©r�   r¾  )r  r&  r'  rÐ   r   r5   )r{   ÚCategoricalIndexrr   r   r   r   r7   r3   r	   r   r8   )r"   r¾  r   Úcidxr$   r:   r  r;   r   r   r   Ú%test_stack_preserve_categorical_dtype‘  s   z:TestDataFrameReshape.test_stack_preserve_categorical_dtypezlabels,datarm   )r  r&  r'  r$  r„  r(  Úzyx)r„  r(  r'  r$  r  r&  c                 C   s°   t j|t|ƒ|d�}t jddg|d�}t ||g¡}tt|ƒg|d�}|jddg|d�}	|r0|nt|ƒ}t j||d�}
|rAt|ƒn|}t|t dg|
|g¡d	�}t 	|	|¡ d S )
NrÀ  r²  Úv)r¾  rÐ   r   r0   r   r5   )
r{   rÁ  rl  r   r7   r   r   r	   r   r8   )r"   r¾  Úlabelsre   r   rÂ  Úcidx2r  r$   r:   Ús_cidxÚexpected_datar;   r   r   r   Ú+test_stack_multi_preserve_categorical_dtypeŸ  s   ÿz@TestDataFrameReshape.test_stack_multi_preserve_categorical_dtypec                 C   sd   t  g d¢¡}t||dœƒ}|j|d�}t g d¢ddgg¡}tt  g d¢¡|d�}t ||¡ d S )	N)r.   r.   r/   rˆ   ©ro   rp   r   r  ro   rp   )r.   r.   r.   r.   r/   r/   rˆ   rˆ   r5   )	r{   r”   r   r   r   r7   r	   r   r8   )r"   r   rÝ   r$   r:   r3   r;   r   r   r   Ú,test_stack_preserve_categorical_dtype_values½  s   ÿzATestDataFrameReshape.test_stack_preserve_categorical_dtype_valuesz4ignore:Downcasting object dtype arrays:FutureWarningzindex, columnsrù   r/   )r   r   r1   r-   c           
      C   sx   t ||d� d¡}|j|d�}t |j ¡ ¡}t | ¡ ||jd�}t 	||¡ t
 |jj¡}t
 |j¡}	t ||	¡ d S )Nr2   r0   r   )r   Úfillnar   r   r]   r3   r¸  r4   r   r    r   Úasarrayrÿ   Úassert_numpy_array_equal)
r"   r3   r4   r   r$   r%   Ú	new_indexr;   Ústacked_codesÚexpected_codesr   r   r   Ú)test_stack_multi_columns_non_unique_indexÈ  s   ÿz>TestDataFrameReshape.test_stack_multi_columns_non_unique_indexz,vals1, vals2, dtype1, dtype2, expected_dtyper=   r·   ÚInt64ÚFloat64r   r   Ústringró   c           
      C   sR   t t||d�t||d�dœƒ}|j|d�}| t¡j|d� |¡}	t ||	¡ d S )NrK   )©ro   r0   )ro   r1   r   )r   r	   r   rb   ró   r   r    )
r"   Úvals1Úvals2Údtype1Údtype2Úexpected_dtyper   r$   r:   r;   r   r   r   Ú.test_stack_multi_columns_mixed_extension_typesâ  s   

þÿÿzCTestDataFrameReshape.test_stack_multi_columns_mixed_extension_typesc                 C   sÚ   t jg d¢ddgd�}ttjg d¢dd�t g d¢¡d	œ|d
�}|j|d�}| t¡j|d�}|dkr>|d	  	tj
¡|d	< n
|d  	tj
¡|d< t|jjgd |jjgd  |jd
�}t |j|¡ t | t¡|¡ d S )N)©ro   r   r×  )rp   r0   r.   r/   rœ   )r   r0   NrÔ  rK   rV   rË  r5   r)  r   rÞ  r1   )r   r]   r   r{   rò   r”   r   rb   ró   rÍ  ÚNAr	   ro   rL   rp   r4   r   r8   r  r    )r"   rÒ   r3   r$   r:   r;   Úexpected_dtypesr   r   r   Ú"test_unstack_mixed_extension_typesü  s"   þûÿz7TestDataFrameReshape.test_unstack_mixed_extension_typesÚbazc                 C   s˜   t jdgddggddgd�}tddgdd	gg|d
dgd�}d|j_tg d¢gt jg d¢ddgd�d�}d|j_| ¡ jdd�j	d|d�}t
 ||¡ d S )Nr   r‘   rˆ   r   râ  rœ   r1   r0   r-   rp   ro   r2   r   )r-   r0   r1   r   ))rˆ   ro   )rˆ   rp   )r‘   ro   )r‘   rp   rÐ   r  )r  rÒ   )r   r7   r   r4   r[   r]   r3   r   Ú	swaplevelÚ
sort_indexr   r    )r"   rÒ   r   r$   r;   r:   r   r   r   Ú test_unstack_swaplevel_sortlevel  s   ÿþz5TestDataFrameReshape.test_unstack_swaplevel_sortlevel)?Ú__name__Ú
__module__Ú__qualname__r+   r•   ÚmarkÚfilterwarningsr<   rI   rh   rv   r~   r…   r†   r™   r¨   Úparametrizer   r]   r   r¯   rË   rÛ   rì   rî   rö   r  r	  r  r   r+  r   r  r  r#  rB   r1  r5  r9  rB  rH  rR  rr   r6   rq  rÕ   ÚpermutationsrŒ  r�  r“  r£  r¨  r¯  r»  r½  rÃ  rÊ  rÌ  r7   rÓ  rÝ  rá  rå  r   r   r   r   r      sT   ÿ
ÿ
.$"ÿþú
õüôþ
"*ÿ
ÿ
8ÿ
=ÿ
1þþ
ÿ

þþ

=1)ÿëþ!ÿ

ÿþþÿ
ýþÿþþ
r   rL   rt   rÕ  c                 C   s   t  g d¢¡}| t dd¡||d�}|jddd�}| tu r%t  dd	g¡}nd
dg}tdtjgtjdgdtjgtjdgg|t  g d¢¡|d�}t ||¡ |jddgdd�}| tu rat  ddg¡}nt  ddg¡}tddgddggddg||d�}t ||¡ d S )N))rø   rN   r/   )rø   rA   r.   )r÷   rN   r/   )r÷   rA   r.   r´   r¸   rT   rO   F)rÒ   Úsort©r   r/   )r   r.   r/   r.   ç       @r=   r·   ))rø   rN   )rø   rA   )r÷   rN   )r÷   rA   ©r4   r3   rL   r0   r1   )r   rN   r/   )r   rA   r.   )rN   r/   )rA   r.   rø   r÷   )r3   r4   rL   )	r   r]   r   r   r   r   rB   r   r    )Úframe_or_seriesrL   r3   Úobjr:   r®   r;   r   r   r   Útest_unstack_sort_false'  s8   ÿ"ÿúüró  c                  C   s˜   t g d¢dd�} t g d¢¡| _|  ¡ }tdtjdgddtjgdœtd	ƒt	d
�}t
 ||¡ | jdd�}tg d¢g d¢dœtd	ƒt	d
�}t
 ||¡ d S )Nr‡   ró   rK   rM   r.   r/   rˆ   rR   rm   rT   r‘   rP   )r.   r‘   r.   )r/   rˆ   r‘   )r	   r   r]   r3   r   r   r   rB   rr   ró   r   r    )re   r:   r;   r   r   r   Útest_unstack_fill_frame_objectM  s    ÿýÿrô  c                  C   sš   t tjddd�gdgdgdgdœg d¢d�} |  ddg¡ ¡ }t tjddd�dggtdgdd	�td
dgdggddgddggd dgd�d�}t ||¡ d S )Nz2017-08-27 01:00:00.709949+0000ÚUTC)Útzr.   r/   rˆ   )Ú	timestampr.   r/   rˆ   rÐ   r¤   r÷  r   r0   rþ   r2   )	r   r{   rÉ   r_   r   r   r   r   r    )r$   r:   r;   r   r   r   Ú"test_unstack_timezone_aware_valuese  s&   üù	ýý	rø  c                 C   sj   t ddddd�}td|ig d¢d�}|j| d	�}t|tg d¢dggg d
¢g d¢gd�d�}t ||¡ d S )Nr½   Ú20180101Ú20180103zAmerica/New_York)r¤  ÚstartÚendrö  ro   rš   r5   r   rY   ©r   r   r   r  )r   r   r   r	   r   r   r8   )r   Útsr$   r:   r;   r   r   r   Ú test_stack_timezone_aware_values}  s    þrÿ  r,   rµ  c                 C   s¸   t jg t jd�t jg t jd�g}tt jt|g g gd�d�}|rI| tjurItj	t
dd�� tt jd�j| |d� W d   ƒ d S 1 sBw   Y  d S tt jd�j| |d�}t ||¡ d S )NrK   r  )rL   r3   údropna must be unspecifiedr�   r¼  )r   rò   rc   r	   rt   r   r   r¶  r•   r–   rè   r   r   r   r8   )rµ  r   r9   r;   r:   r   r   r   Útest_stack_empty_frame‰  s    "ÿÿr  rQ   c                 C   sš   |r0| t jur0tjtdd�� ttjd�j| |d�j	|d� W d   ƒ d S 1 s)w   Y  d S ttjd�j| |d�j	|d�}ttjd�}t
 ||¡ d S )Nr   r�   rK   r¼  rP   )r   r¶  r•   r–   rè   r   r   rc   r   r   r   r    )rµ  rQ   r   r:   r;   r   r   r   Útest_stack_unstack_empty_frame™  s    ÿþ"ÿ
ÿþÿr  c                  C   sH   d} t jt| d�� ttjd� ¡  W d   ƒ d S 1 sw   Y  d S )Nz'index must be a MultiIndex to unstack.*r�   rK   )r•   r–   rè   r	   r   rc   r   )r˜   r   r   r   Ú test_unstack_single_index_series­  s   "ÿr  c                  C   s¸   t ddgddgddgddgdd	gd
œƒ} |  g d¢¡} | jdgdd�} | jddd�jddd�}| jddgdd�}t g d¢g d¢gtddgdd�tjg d¢g d¢d�d�}t ||¡ d S )NÚAliceÚBobç      #@rk   FTr   ÚfemaleÚmale)r[   ÚscoreÚemployedÚkidsÚgender)r[   r
  r  r  r  rP   r
  r  )r  rC  rC  rC  )rC  rC  rC  g       @r[   r¤   ))r	  r  Fr   )r	  r  Tr   )r	  r  Fr   )r	  r  Tr   )Nr  r
  r  rœ   r2   )r   r_   r   r   r   r]   r   r    )r$   r;   r:   r   r   r   Útest_unstacking_multi_index_df´  s*   ûÿ	ùýr  c                 C   s†   t jddgddgd�}tg d¢g|d�}|jd| d�}td	d
gdd�}t jddgd dgd�}tddgddgg||d�}t ||¡ d S )Nr?   )rA   rN   r.   rœ   ©r0   r0   r0   r0   rÐ   r   r   rA   rN   r¤   )r   r@   )r   rA   r0   r2   )r   r7   r   r   r   r]   r   r    )r   r4   r$   r:   Únew_columnsrÐ  r;   r   r   r   Ú2test_stack_positional_level_duplicate_column_namesÓ  s   r  c                    sÈ   t  tdƒg d¢g¡}ttj d¡ d¡tj d¡ d¡ tj	¡tj d¡ d¡tj d¡ d¡dœ|d�‰ | sEt
dd„ ˆ jjD ƒƒsEJ ‚ˆ  ¡ }tj‡ fd	d
„tdƒD ƒtdƒdd�}t ||¡ d S )NrJ   r  r1   r(  r  r5   c                 s   s   � | ]}|j j V  qd S r   )Úmgr_locsÚis_slice_like©r€   r@   r   r   r   Ú	<genexpr>ï  s   € z5test_unstack_non_slice_like_blocks.<locals>.<genexpr>c                    s   g | ]}ˆ |   ¡ ‘qS r   )r   )r€   Ún©r$   r   r   r‚   ó  rf  z6test_unstack_non_slice_like_blocks.<locals>.<listcomp>r>   r0   )Úkeysr  )r   r7   r6   r   r   rÇ   rÈ   r×   rb   rc   ÚanyrD   rE   r   r{   Úconcatr   r    )rF   r   rH   r;   r   r  r   Ú"test_unstack_non_slice_like_blocksá  s   üù	&r  c                 C   sB  g d¢g d¢ddt jt jgg}t|tddgddggg d	¢g d
¢gd�d�}| r)i nddi}|jd d| dœ|¤Ž}| r[tdddddt jgdddddt jgdœt g d¢g d¢g¡d�}ntg d¢g d¢dœt g d¢g d¢g¡d�}t ||¡ t|t g d¢g d¢g¡d�}| rŠi nddi}|jd d| dœ|¤Ž}t ||¡ d S )!N)r0   r1   r=   r·   )r1   r-   r·   r¸   r-   r>   rp   ro   r@   rA   rù   rú   r  rÐ   rí  Fr   rÑ   r´   r=   rï  r·   r¸   r?   )r   r   r0   r0   r1   r1   )rp   ro   rp   ro   rp   ro   r5   )r´   r=   rï  r·   r=   )rï  r·   r=   r¸   r·   )r   r   r0   r0   r1   )rp   ro   rp   ro   rp   )rp   rp   ro   ro   )r@   rA   r@   rA   r   )r   rB   r   r   r   rñ   r   r    )r   re   r$   Úkwargsr:   r;   r   r   r   Útest_stack_sort_false÷  s<   ÿþþÿû
þþr  c                 C   s„   t  ddg¡}tddgddggddg|d	�}| ri nd
di}|jddgfd| i|¤Ž}t  g d¢¡}tg d¢|d�}t ||¡ d S )N)ÚweightÚkg)ÚheightÚmr´   rï  r=   r·   rÝ   rß   r2   rí  Fr   r0   r   ))rÝ   r  r  )rÝ   r  r   )rß   r  r  )rß   r  r   )r´   rï  r=   r·   r5   )r   r]   r   r   r	   r   r8   )r   r§   r$   r  r:   r­   r;   r   r   r   Ú!test_stack_sort_false_multi_level  s   ÿr!  c                   @   sª  e Zd Zdd„ Zej dg d¢g d¢gg d¢dg d¢fg d	¢g d
¢gg d¢dg d¢fg d	¢g d¢gg d¢dg d¢fg¡dd„ ƒZdd„ Zej 	d¡dd„ ƒZ
ej dedƒg d¢eddgddgge e d¡ d¡d¡e g d¢d¡gd �ge d!¡g d¢eddgd"dgddgge e d¡ d¡d¡e g d#¢g d$¢¡e g d¢d¡gd �gg¡d%d&„ ƒZej 	d¡d'd(„ ƒZej 	d¡d)d*„ ƒZd+d,„ Zej 	d¡d-d.„ ƒZej d/d0d1g¡d2d3„ ƒZd4d5„ Zej 	d¡d6d7„ ƒZej 	d¡d8d9„ ƒZej 	d¡d:d;„ ƒZej 	d¡d<d=„ ƒZd>d?„ Zd@dA„ Zej 	d¡dBdC„ ƒZej 	d¡dDdE„ ƒZ dFdG„ Z!dHdI„ Z"ej 	d¡dJdK„ ƒZ#ejj$dLdM„ ƒZ%ej 	d¡ej dNe&j' (dOdP„ dQD ƒ¡¡ej dRe)dƒ¡ej dSdTdUg¡dVdW„ ƒƒƒƒZ*ej 	d¡dXdY„ ƒZ+ej 	d¡dZd[„ ƒZ,ej 	d¡d\d]„ ƒZ-d^d_„ Z.d`da„ Z/dbdc„ Z0ddde„ Z1ej 	d¡dfdg„ ƒZ2ej 	d¡dhdi„ ƒZ3ej 	d¡djdk„ ƒZ4dldm„ Z5ej 	d¡dndo„ ƒZ6ej 	d¡dpdq„ ƒZ7drds„ Z8dS )tÚTestStackUnstackMultiLevelc                 C   s6   |}|  ¡ }|  ¡  | t¡  ¡  | tj¡  ¡  d S r   )r   rb   r·  r   rs   )r"   Ú/multiindex_year_month_day_dataframe_random_dataÚymdr'   r   r   r   Útest_unstack2  s
   z'TestStackUnstackMultiLevel.test_unstackz5result_rows,result_columns,index_product,expected_row)r0   r0   NNç      >@N)r1   r1   NNr&  N)Úix1Úix2Úcol1Úcol2Úcol3Úcol4r1   )NNr&  N)r0   r0   NNr&  )r1   r1   NNr&  )r'  r(  r)  r*  r+  )NNr&  )r1   NNNr&  Nc                 C   sp   t ||d� ddg¡}|jdd…  d¡}t |gtj|dd … |ggd dgd�tdgdd�d�}t ||¡ d S )	NrÐ   r'  r(  r0   r1   rœ   r¤   r¥   )	r   r_   r  r   r   r7   r   r   r    )r"   Úresult_rowsÚresult_columnsÚindex_productÚexpected_rowr:   r;   r   r   r   Útest_unstack_partial?  s   ÿÿûz/TestStackUnstackMultiLevel.test_unstack_partialc                 C   sT   t  g d¢¡}ttj d¡ d¡|d�}| ddg¡}|jddd�}t	 
||¡ d S )N))r   r   r   )r   r   r   )r0   râ  r0   )r0   Úquxr0   r1   r>   r5   r0   r  ©r  Úhow)r   r]   r	   r   rÇ   rÈ   r×   r   rµ  r   r    )r"   r3   rg   r'   r;   r   r   r   Ú&test_unstack_multiple_no_empty_columnsj  s   ÿzATestStackUnstackMultiLevel.test_unstack_multiple_no_empty_columnsr,   c                 C   s†  |}|  ¡ }|j|d�}|r|jdd�}t ||¡ |jdd�}|  d¡}|j|d�}|r3|jdd�}t |jdd�|¡ |d d d… }|  d¡}|j|d� dd¡}|r[|jdd�}t |jdd�|¡ | dd¡}|  d¡jdddd	�}|jd|d� dd¡}|r‰|jdd�}t |jdd�|¡ |  ¡ }|j|d�}|r¥|jdd�}t ||¡ |  d¡  d¡}|jd|d�}|  ¡ }t ||¡ |jd|d�}|  d¡}t ||¡ |jd|d�}|j|d�  d¡  d¡}t ||¡ |  d¡jd d …d d d
…f }|j|d�j|d�}	|j|d�}
|�r|	jdd�}	|
jdd�}
t |	|
 	|	j
¡¡ |  d¡jd|d�}|  d¡jd|d�}t ||¡ d S )Nr   r  ©r4  r1   r)  r   rO   r0   r  r-   rÓ   )r   r   rµ  r   r    rä  rã  rd   r8   Úreindexr3   Úassert_equal)r"   r#  r   r$  r'   Ú	restackedÚunlexsortedr:   r;   r%   Úymd_stackedr   r   r   Ú
test_stacku  sf   


ÿz%TestStackUnstackMultiLevel.test_stackzidx, columns, exp_idxÚabab)rs  rt  rs  r.   r/   rs  rt  r-   )r   r0   r   r>   r  )©r.   r1   ©r/   r0   ©r.   r0   )r/   r1   r0   )r0   r   r0   )r-   ri   r-   c                 C   s¼   t t d¡ dd¡||d�}|r2d}tjt|d�� |j|d� W d   ƒ d S 1 s+w   Y  d S |j|d�}tt d¡|d�}t	 
||¡ |jjd	u sOJ ‚|j|j}	}
t	 |	|
¡ d S )
Nr'  r>   r-   r2   z8Columns with duplicate values are not supported in stackr�   r   r5   F)r   r   r   r   r•   r–   rè   r   r	   r   r8   r3   Ú	is_uniqueÚassert_index_equal)r"   r§   r4   Úexp_idxr   r$   r˜   r:   r;   ÚliÚrir   r   r   Útest_stack_duplicate_indexÄ  s    ý"ÿz5TestStackUnstackMultiLevel.test_stack_duplicate_indexc                 C   sÌ   t jdgd dgd  dgd  dgd  dgd d	gd  dgd
  d	gd  ddgd g d¢ gg d¢d�}ttjddd�tjddd�dœ|d�}| d¡}|j|d�}|r^|jdd�}t 	||¡ d S )NÚFrir>   ÚSatr1   ÚSunÚThur-   ÚDinnerÚLunchrJ   ÚNoÚYes)rM  rM  rN  )ÚdayÚtimeÚsmokerrœ   r&  rt   rK   )ri  rC   r5   r   r  r6  )
r   rñ   r   r   r   r   r   rµ  r   r    )r"   r   r   r$   r:   Úreconsr   r   r   Útest_unstack_odd_failureð  s$   &&ýúþû
z3TestStackUnstackMultiLevel.test_unstack_odd_failurec                 C   sz   |}|j }d|d< |jddd�}|j|d�}|d j|d� ¡ }tj|d |dd� |jd u s1J ‚|d jtjks;J ‚d S )	Nr   )r   Úfourr0   )rÒ   r  r   Fræ   r   )	r!   rä  r   r   r8   r[   rL   r   rt   )r"   Ú multiindex_dataframe_random_datar   Úframer$   r%   r:   r   r   r   Útest_stack_mixed_dtype  s   z1TestStackUnstackMultiLevel.test_stack_mixed_dtypec                 C   s¢   t g d¢g d¢g d¢g d¢t d¡dœƒ}d}tjt|d�� | g d	¢¡ t¡}W d   ƒ n1 s3w   Y  | 	¡ }|j
|d
�}t || |j¡ t¡¡ d S )N)ÚnaiverX  rX  ÚactiverY  rY  )r.   r/   r/   r/   r.   r.   )r0   r1   r-   r>   r0   r-   )ÚhirZ  Úbyer[  r[  Úpeaceg      @)r»   râ   ÚbarcoderÅ  Úextraz7DataFrameGroupBy.apply operated on the grouping columnsr�   )r»   râ   r]  rÅ  r   )r   r   r   r   rª  r©  Úgroupbyr‹  rC   r   r   r8   r7  r3   rb   r^   )r"   r   r$   r˜   r:   r'   r9  r   r   r   Útest_unstack_bug  s   ûÿ
ÿz+TestStackUnstackMultiLevel.test_unstack_bugc                 C   sT   |}|  ¡ }|jjdksJ ‚|jjddgksJ ‚|j|d�}|jj|jjks(J ‚d S )Nrû   râ   rü   r   )r   r3   r[   r4   ra   r   )r"   rU  r   rV  r'   r9  r   r   r   Ú!test_stack_unstack_preserve_names/  s   z<TestStackUnstackMultiLevel.test_stack_unstack_preserve_namesÚmethodr   r   c                 C   sÊ   |}|j d }|dkrd|ini }tjtdd�� t||ƒd	i |¤Ž W d   ƒ n1 s-w   Y  |dkrc|jd d …df }tjtdd�� t||ƒd	i |¤Ž W d   ƒ d S 1 s\w   Y  d S d S )
Nr   r   r   zdoes not match index namer�   Úmistaker   r   )rc  )rd   r•   r–   ÚKeyErrorÚgetattrr  )r"   rb  rU  r   rV  r$   r  rg   r   r   r   Ú#test_stack_unstack_wrong_level_name>  s   
ÿ"ÿýz>TestStackUnstackMultiLevel.test_stack_unstack_wrong_level_namec                 C   s*   |}|  d¡}|j dd�}t ||¡ d S )Nrü   r0   r)  rÂ   )r"   rU  rV  r:   r;   r   r   r   Útest_unstack_level_nameR  s   
z2TestStackUnstackMultiLevel.test_unstack_level_namec                 C   sd   |}|  d¡}|jd|d�}|  ¡ jd|d�}t ||¡ |jd|d�}|j|d�}t ||¡ d S )Nrü   râ   r   r   )r   r   r   r    r8   )r"   rU  r   rV  r'   r:   r;   r   r   r   Útest_stack_level_nameY  s   
z0TestStackUnstackMultiLevel.test_stack_level_namec           	      C   sF  |}|  ddg¡}|  d¡  d¡}t ||¡ |jj|jjks!J ‚|d }|  ddg¡}t ||d ¡ |jddg|d�}|rE|jdd�}| dd¡ dd	¡}|jdd
�}t ||¡ |j	j|j	jkseJ ‚|  dd	g¡}|  d¡  d¡jddd�}t ||¡ |  d	dg¡}|  d	¡  d¡jddd�}t ||j
d d …|jf ¡ d S )NÚyearÚmonthro   r   r  r6  r   r0   r1   r)  r3  )r   r   r    r4   ra   r   rµ  rã  rä  r3   rd   )	r"   r#  r   r$  r'   r;   rg   Ús_unstackedr9  r   r   r   Útest_stack_unstack_multipleh  s*    z6TestStackUnstackMultiLevel.test_stack_unstack_multiplec                 C   sX   |}|  ddg¡}tjtdd�� |jddg|d� W d   ƒ d S 1 s%w   Y  d S )Nri  rj  zlevel should containr�   r   r   )r   r•   r–   rè   r   ©r"   r#  r   r$  r'   r   r   r   Útest_stack_names_and_numbers�  s
   "ÿz7TestStackUnstackMultiLevel.test_stack_names_and_numbersc                 C   s˜   |}|  ddg¡}tjtdd�� |jddg|d� W d   ƒ n1 s$w   Y  tjtdd�� |jd	d
g|d� W d   ƒ d S 1 sEw   Y  d S )Nri  rj  zToo many levelsr�   r1   r-   r   znot a valid level numberrJ  rI  )r   r•   r–   Ú
IndexErrorr   rm  r   r   r   Ú!test_stack_multiple_out_of_bounds›  s   ÿ"ÿz<TestStackUnstackMultiLevel.test_stack_multiple_out_of_boundsc              	   C   sÐ  t jg d¢ddd�}tddgd dd	�}g d
¢}t ||g¡}t||d�}| ¡ }|jdd�}|jdd�}t jg d¢ddd�}	tg d¢g d¢dœ|	ddgd�}
d|
j_	t
 ||
¡ t
 ||
¡ t
 ||
j¡ t jg d¢ddd�}t jg d¢ddd�}t ||g¡}t||d�}| ¡ }|jdd�}|jdd�}t jg d¢ddd�}	t jg d¢ddd�}ttjtjtjtjddgtjtjddtjtjgddtjtjtjtjgg|	|d�}
t
 ||
¡ t
 ||
¡ t
 ||
j¡ d S )N)ú2013-01rq  ú2013-02rr  ú2013-03rs  ÚMÚperiod©r¤  r[   ro   rp   r-   Ústrr¤   ©r0   r1   r-   r>   rJ   ri   r5   r0   r)  r   )rq  rr  rs  )r0   r-   rJ   )r1   r>   ri   rË  r2   Úperiod1)ú2013-12ú2013-11ú2013-10ú2013-09ú2013-08ú2013-07Úperiod2)r  r~  r}  r|  r{  rz  r1   r>   ri   rJ   )r{   ÚPeriodIndexr   r   rñ   r	   r   r   r4   r[   r   r    r!   r   rB   )r"   Úidx1Úidx2Úvaluer§   rg   Úresult1Úresult2Úresult3Úe_idxr;   Úe_colsr   r   r   Útest_unstack_period_series«  sp   ý
ÿÿýý
ÿýýù
z5TestStackUnstackMultiLevel.test_unstack_period_seriesc                 C   sJ  t jg d¢ddd�}t jg d¢ddd�}g d¢g d¢d	œ}t ||g¡}t||d
�}| ¡ }|jdd�}|jdd�}t jddgddd�}	t jg d¢ddd�}
t d ¡ |
g¡}tg d¢g d¢g|	|d�}t ||¡ t ||¡ t jg d¢ddd�}	t jg d¢ddd�}
t d ¡ |	g¡}tg d¢g d¢g d¢g|
|d�}t ||¡ d S )N)ú2014-01ú2014-02rŒ  rŒ  r‹  r‹  rt  ry  rv  )rz  rz  rŒ  r|  r|  rŒ  r€  rx  )ri   rJ   r>   r-   r1   r0   rË  r5   r0   r)  r   r‹  rŒ  )r|  rz  rŒ  r|  rz  rŒ  zA A A B B B)rJ   r0   ri   r1   ri   r0   )r>   r1   r-   r-   rJ   r>   r2   )r‹  rŒ  r‹  rŒ  )r|  rz  rŒ  zA A B B)rJ   r>   r1   r-   )r0   r1   ri   rJ   )ri   r-   r0   r>   )	r{   r�  r   rñ   r   r   rm  r   r    )r"   r‚  rƒ  r„  r§   r$   r…  r†  r‡  Úe_1Úe_2r‰  r;   r   r   r   Útest_unstack_period_frameð  sN   ýýýÿ
ÿ
ÿÿz4TestStackUnstackMultiLevel.test_unstack_period_framec                 C   s0  dgd dgd  }dgd dgd  }t  g d¢d ¡}tj d¡ ddd	¡}t||||d
œƒ}| ddg¡}d|j_	| 
d¡}	t d¡}
|rJd}
tjt|
d�� |	 d¡ ¡  W d   ƒ n1 scw   Y  |	 d¡jdd�}|jd|d�}|	jd d …dgf  d¡ ¡ jd|d�}d|j_	t ||¡ d S )Nr0   r-   r1   r.   r/   )z
2013-01-03z
2013-01-04z
2013-01-05r   r¥  ri   )ÚIDÚNAMEÚDATEÚVAR1r’  r�  ÚParamsz&agg function failed [how->mean,dtype->z-dtype 'str' does not support operation 'mean'r�   zW-THUT)Únumeric_onlyr   r“  )r{   Úto_datetimer   rÇ   rÈ   Úintegersr   r_   r4   r[   r   ÚreÚescaper•   r–   r—   ÚresampleÚmeanr   rd   r   r    )r"   r   r  Úid_colr[   ÚdateÚvar1r$   ÚmultiÚunstr˜   Údownrô   rõ   r   r   r   Útest_stack_multiple_bug  s0   

ÿýÿz2TestStackUnstackMultiLevel.test_stack_multiple_bugc                 C   sÒ   t ddgddgddgdœƒ}| ddg¡}|sd	ntj}| ¡ j||d
�}t|ƒt| ¡ ƒks1J ‚|rVtj	t
dd�� | ¡ jd|d
� W d   ƒ d S 1 sOw   Y  d S | ¡ jd|d
�}t || ¡ ¡ d S )NÚa1Úa2Úb1Úb2r0   r  ro   rp   Fr¼  r   r�   T)r   r_   r   r¶  r   r   rC   rµ  r•   r–   rè   r   r    )r"   r   r$   rµ  r%   r   r   r   Útest_stack_dropna=  s   "ÿz,TestStackUnstackMultiLevel.test_stack_dropnac                 C   sT   t g d¢g d¢g d¢gg d¢g d¢gd�}g d¢|j_dd	g|j_| d
dg¡ d S )N)r   r   r   r   r0   r0   r0   r0   )r   r   r0   r0   r   r   r0   r0   ©r   r0   r   r0   r   r0   r   r0   rù   rú   r2   rš   r‘   rŸ   r/   rˆ   )r   r3   ra   r4   r   )r"   r   r$   r   r   r   Ú"test_unstack_multiple_hierarchicalP  s   ýú	z=TestStackUnstackMultiLevel.test_unstack_multiple_hierarchicalc              	   C   s¢   d}t tj d¡jd|d�tj d¡jd|d�tj d¡jdd	|d�tj d
¡jdd|d�tj d¡jd|d�tj d	¡ |¡dœƒ}| g d¢¡}| d¡ d S )Néè  r1   r¥  )Úsizer-   i,  r>   iùÿÿÿrj   rJ   iíÿÿÿé   ri   i¸  )ro   rp   rª   r½   r¾   r¿   )ro   rp   rª   r½   r¾   r¾   )r   r   rÇ   rÈ   r—  r×   r_   r   )r"   ÚNUM_ROWSr$   Úidfr   r   r   Útest_unstack_sparse_keyspace`  s   úÿz7TestStackUnstackMultiLevel.test_unstack_sparse_keyspacec                 C   sz   ddgg d¢g}g d¢g d¢g}t ||ƒ}ttj d¡ d¡|d�}| ¡ }t|jƒd	ks/J ‚|j	|d
�}t
 ||¡ d S )Nr   r0   r  rù   r  r1   )r>   r1   r5   r>   r   )r   r   r   rÇ   rÈ   r×   r   rC   r4   r   r   r    )r"   r   r9   rÿ   r3   r$   r:   rR  r   r   r   Útest_unstack_unobserved_keysu  s   
z7TestStackUnstackMultiLevel.test_unstack_unobserved_keysc              
   C   sè   G dd„ dt jƒ}| ¡ �]}| t d|¡ tt d¡t d¡t d¡gd�}d}tj	t
|d��# tjtd	d�� | ¡  W d   ƒ n1 sFw   Y  W d   ƒ n1 sUw   Y  W d   ƒ d S W d   ƒ d S 1 smw   Y  d S )
Nc                       s   e Zd Zd‡ fdd„Z‡  ZS )zaTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32.<locals>.MockUnstackerÚreturnNc                    s   t ƒ j|i |¤Ž tdƒ‚)NúDon't compute final result.)ÚsuperÚ__init__Ú	Exception)r"   Úargsr  ©Ú	__class__r   r   r´  �  s   zjTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32.<locals>.MockUnstacker.__init__)r±  N)ræ  rç  rè  r´  Ú__classcell__r   r   r·  r   ÚMockUnstackerŒ  s    rº  Ú
_Unstacker)é   r1   r¼  r5   z$The following operation may generater�   r²  )Úreshape_libr»  ÚcontextÚsetattrr   r   r+  r   r   rª  r   r•   r–   rµ  r   )r"   Úmonkeypatchrº  r   r$   r˜   r   r   r   Ú/test_unstack_number_of_levels_larger_than_int32‡  s"   
þ
ÿ€ÿù"ùzJTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32r9   c                 c   s*   � | ]}t jt  g d ¢|¡dd�V  qdS )rY   r1   rÌ   N)rÕ   rÖ   rì  )r€   Úwidthr   r   r   r  ¢  s
   € ÿ
ÿz$TestStackUnstackMultiLevel.<genexpr>r©   Ú	stack_levrí  TFc                 C   s¬   t |g d¢g d¢gd�}t|tdƒgd�}|ri nd|i}|j|fd|i|¤Ž}|jD ](}	|jD ]"}
|j|	|
f }|	|
| f}|
d|  }|j||f }||ksRJ ‚q0q+d S )	Nrù   rú   r  r>   )r4   re   rí  r   r0   )r   r   r6   r   r3   r4   rd   )r"   r9   rÃ  rí  r   r4   r$   r  Ú
df_stackedÚrowrð   r;   Ú
result_rowÚ
result_colr:   r   r   r   Ú%test_stack_order_with_unsorted_levels�  s   

ûÿz@TestStackUnstackMultiLevel.test_stack_order_with_unsorted_levelsc                    s~   t g d¢g d¢gt tdƒd¡t tdƒd¡gd�}t|tdƒt dt|ƒ ¡ dd¡d�‰ t	‡ ‡fdd	„ˆ j
D ƒƒs=J ‚d S )
N)ro   rª   rp   )rp   ro   rª   r-   r  rJ   rO   )r4   r3   re   c                 3   sN   � | ]"}ˆ j D ]}ˆ j||f ˆ jd ˆd�j||d  f|d f kV  qqdS )r   r   r0   N)r4   rd   r   )r€   rÅ  rð   ©r$   r   r   r   r  È  s   € üý"ÿÿz]TestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels_multi_row.<locals>.<genexpr>)r   r   rÍ   r6   Útiler   r   rC   r   r  r3   )r"   r   r   r   rÉ  r   Ú/test_stack_order_with_unsorted_levels_multi_rowº  s   þ ÿýzJTestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels_multi_rowc           
      C   s¬   d}d}t |g d¢g d¢gd�}t|tdƒgg d¢d�}|r i nd	d
i}|j|fd|i|¤Ž}t g d¢ddggg d¢g d¢gd�}tg d¢g d¢dœ|d�}	t ||	¡ d S )N)©r   r0   )r0   r   r0   rù   rú   r  r>   )r0   r   r1   r-   )r4   re   r3   rí  Tr   r  r   )r0   r0   r   r   r1   r1   r-   r-   )r0   r   r0   r   r0   r   r0   r   r¨  )r1   r-   r1   r-   r1   r-   r1   r-   rÌ  r5   )r   r   r6   r   r   r    )
r"   r   r9   rÃ  r4   r$   r  r:   r­   r;   r   r   r   Ú1test_stack_order_with_unsorted_levels_multi_row_2Ï  s"   þþûzLTestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels_multi_row_2c           	      C   sê   t  d¡}t  dd„ |D ƒdd„ |D ƒg¡}t|jddgd�}d|j_d	|i}tj|d
d�}ddg|j_	|j
t|jƒd
d�}|jddg|d� ddg¡}tddgddgddgddgddggg d¢tjddgddgd�d�}t ||¡ d S )NrJ   c                 S   ó   g | ]}d |› �‘qS )r/   r   r  r   r   r   r‚   ï  rƒ   zVTestStackUnstackMultiLevel.test_stack_unstack_unordered_multiindex.<locals>.<listcomp>c                 S   rÎ  rd  r   r  r   r   r   r‚   ð  rƒ   r/   r.   rÐ   rû   r@   r0   r  rü   r   Úa0Úb0r£  r¥  r¤  r¦  Úa3Úb3Úa4Úb4r¢  )r.   r@   )r/   r@   rœ   r2   )r   r   Úvstackr   r!   r4   r[   r{   r  ra   r7  rl  r   r   r   r]   r   r    )	r"   r   rz   re   r$   Úsecond_level_dictÚmulti_level_dfr:   r;   r   r   r   Ú'test_stack_unstack_unordered_multiindexç  s.   
þÿÿ ÿýzBTestStackUnstackMultiLevel.test_stack_unstack_unordered_multiindexc                 C   sf   |}d|d< d|d< |  d¡}|d jtjksJ ‚|s%|d jtjks'J ‚		 |d	 jtjks1J ‚d S )
Nr   r¾   r1   r¿   rj  r×  )r¾   r0   rÖ  )r¿   r0   )r   rL   r   rt   Úobject_)r"   r#  r  r$  r'   r   r   r   Útest_unstack_preserve_types	  s   
þþz6TestStackUnstackMultiLevel.test_unstack_preserve_typesc                 C   sl  t  t  d¡d¡}t  d¡}t|gd ddgg |gd t  d¡ d¡g d�}tt  d¡|d�}| ¡ }|jd	ks<J ‚|j|d
�}t	 
|| |j¡¡ tddgg|gd  t  d¡ d¡g|gd  d�}tt  d¡|d�}| d¡}|jd	ks{J ‚t|gd ddgg |gd  |gd t  d¡ d¡g |gd  d�}tt  d¡|d�}| d¡}|jd	ks´J ‚d S )Néô  r1   rk   r   r0   r  rª  r5   )rÛ  r1   r   r>   )r   rÊ  r   r   rÍ   r	   r   r   r   r   r8   r7  r3   )r"   r   rÿ   rÒ   r3   rg   r:   r%   r   r   r   Ú!test_unstack_group_index_overflow	  s2   
þþ
$þ
z<TestStackUnstackMultiLevel.test_unstack_group_index_overflowc                 C   sÚ   t g d¢g d¢dgd dœƒ ddg¡}d|d	< |s$t|jjƒd
ks$J ‚| d¡}|d  d¡|d< t g d¢tjdddggt	ddgdd�t
jg d¢d dgd�d�}|re|d  d¡|d< |d  d¡|d< t ||¡ d S )N)ro   ro   rp   )ÚcaÚcbrÞ  r  r-   )r.   r/   rÅ  r.   r/   r0   Úis_r1   ©rß  rÝ  r   )ç      $@rá  r´   r´   rá  rC  r´   ro   rp   r¤   ))rÅ  rÝ  ©rÅ  rÞ  rà  ©rß  rÞ  rœ   r2   râ  rc   rã  )r   r_   rC   rD   rE   r   rÍ  r   rB   r   r   r]   rb   r   r    )r"   rF   r$   r:   r;   r   r   r   Ú+test_unstack_with_missing_int_cast_to_float;	  s2   ýÿ
ú	
þýzFTestStackUnstackMultiLevel.test_unstack_with_missing_int_cast_to_floatc                 C   sª   t g d¢g d¢g d¢g d¢dœƒ}| g d¢¡}g d¢}|jj|dd�|_|jj|d	d�|_| d
¡d  ¡ j}tg d¢g d¢gg d¢g d¢gdd	gd�}t ||¡ d S )Nr
  )r-   r>   r0   r1   r  )ÚL1ÚL2ÚL3r@   )rå  ræ  rç  )Ún1Ún2Ún3Nrå  )r9   rÒ   ræ  rç  )r@   r0   r  )r1   r-   r   r0   rþ   )	r   r_   r3   Ú
set_levelsr   rä  r   r   rB  )r"   rÊ   Ú
new_levelsr:   r;   r   r   r   Útest_unstack_with_level_has_nan[	  s$   üÿýz:TestStackUnstackMultiLevel.test_unstack_with_level_has_nanc                 C   sÎ   t t ddg¡t g d¢¡d�}|jd|d�}|r<tdgdd	ggg d
¢g d¢gd�}tdgddggg d
¢g d¢gd�}ntg d¢ƒ}tg d¢ƒ}t dtjtjgtjddgtjddgg||d�}t 	||¡ d S )Nr0   rJ   ))r   NN)r   r1   r   )r   r1   r0   )r   r-   r   )r   r-   r0   rÐ   r1   r   r   rC  r´   rý  )rO   r   r0   r  r-   )©r   N)r   r   rÌ  )rî  )r   r1   )r   r-   r2   )
r   r   r+  r   r]   r   r   rB   r   r    )r"   r   r$   r:   r3   r4   r;   r   r   r   Ú$test_stack_nan_in_multiindex_columnss	  s$   ÿþ"$"ýz?TestStackUnstackMultiLevel.test_stack_nan_in_multiindex_columnsc                 C   sz  t  dgd dgd  t tdƒ¡t tdƒ¡g¡}tt d¡ dd¡|d�}|j	d	dg|d
�}|rttdtj
gd	tj
gtj
dgtj
dgdtj
gdtj
gtj
dgtj
dggddgt  dgd d	gd  t tdƒ¡t tdƒ¡g¡d�}nAtdtj
gtj
dgd	tj
gtj
dgdtj
gtj
dgdtj
gtj
dggddgt  dgd d	gd  t tdƒ¡t tdƒ¡g¡d�}t ||¡ d S )Nro   r1   rp   r=  Úccddrk   r>   rÐ   r0   r   r   r-   rJ   ri   rj   ÚababababÚccddccddr¥   ÚaabbaabbÚcdcdcdcd)r   rñ   r{   r”   rr   r   r   r   r   r   rB   r   r    )r"   r   r  r$   r:   r;   r   r   r   Ú"test_multi_level_stack_categorical’	  s\   ýÿø
ýÿôø
ýÿôz=TestStackUnstackMultiLevel.test_multi_level_stack_categoricalc                 C   sò   t t d¡ dd¡tjdtjfdgddgd�tdd	gd
d�tjd�}|j	|d�}|rAtdd	gtjdggg d¢g d¢gd
dgd�}ntjdtjfdd	tjfdgd
dgd�}t dtjgtjd	gdtjgtjdggtddgdd�|d�}t
 ||¡ d S )Nr>   r1   ro   rq   r³  r´  rœ   r   r0   ÚNumr¤   rð  r   r/   rù   rú   rþ   rî  )r0   r/   rC  rï  r=   rp   r¥   )r   r   r   r   r   r]   rB   r   rt   r   r   r    )r"   r   Údf_nanr:   r3   r;   r   r   r   Útest_stack_nan_levelÌ	  s0   ÿúýÿ"ýz/TestStackUnstackMultiLevel.test_stack_nan_levelc                 C   sŠ   t  dgddgg¡}tdt ddg¡i|d�}| ¡ }ttjdgddgd�tjdgddgd�d	œdgd�}t  d
dg¡|_t 	||¡ d S )Nro   r   r0   rÝ   r.   r/   r5   rŒ   rÌ  )rÝ   r   )rÝ   r0   )
r   r7   r   r{   r”   r   r]   r4   r   r    r¦   r   r   r   Ú test_unstack_categorical_columnsë	  s   þûz;TestStackUnstackMultiLevel.test_unstack_categorical_columnsc           
      C   sÂ   ddg}ddg}g d¢}t j|||gg d¢d�}ttt|ƒƒƒ}t||dgd	�}| d
dg¡}|j d¡|_d|j	d d …df< |j
d
dg|d� ¡ }|jdd�j
d
dg|d� ¡ }	t ||	¡ d S )NÚITAÚFRAÚA1ÚA2)ÚCRTÚDBTÚNET)ÚPAEÚVARÚTYPrœ   ÚVALUE)re   r3   r4   r  r  r   i'  )ÚA0r   r   r0   r  )r   r7   rr   r6   rC   r   r   r4   r6  rd   r   rä  r   r8   )
r"   r   r  r  r  r±   ÚVÚDFr:   r;   r   r   r   Útest_stack_unsortedú	  s    

ÿýz.TestStackUnstackMultiLevel.test_stack_unsortedc                 C   s&  t jddgddggddgd�}tg d¢d	d
�}t g d¢g d¢g d¢g¡}t|||t ¡ d�}|jd|d�}| 	tj
¡jd|d� 	t ¡ ¡}t ||¡ ||jd   	t ¡ ¡||jd < |jd|d�}ttjg d¢t ¡ d�tjg d¢t ¡ d�dœt  ||jd g¡d�}d|j_t ||¡ d S )NÚ54511Ú54515r‰  Út_meanÚstationÚelementrœ   r›   rP  r¤   )r€  éâ   r  é×   )r  r  r�   éÜ   )i1  éè   rP  r  rð  r   r   )rµ   rá  rá  g      "@g     s@g     À[@rK   )r  r  r  r  r  r  )r‰  r  r5   )r   r7   r   r   rò   r   r{   Ú
Int64Dtyper   rb   rc   r   r    r4   ÚFloat64Dtyper9   r[   )r"   r   r4   r3   Úarrr$   r:   r;   r   r   r   Útest_stack_nullable_dtype
  s6   ÿ
ÿ
ý"ÿÿü÷z4TestStackUnstackMultiLevel.test_stack_nullable_dtypec                 C   sŠ   ddgddgddgg}t j|dd�}tdddgi|d	�}| d
¡}tdgdggt jdgd d
gd�t jddgddgd�d�}t ||¡ d S )Nr.   r0   r1   ÚredÚblue)r@   r   rA   rœ   r   r5   r@   )r   r.   )r0   r  )r1   r  r   rA   r¥   )r   rñ   r   r   r]   r   r    )r"   Úarraysr§   r$   r:   r;   r   r   r   Útest_unstack_mixed_level_names;
  s   

ýz9TestStackUnstackMultiLevel.test_unstack_mixed_level_names)9ræ  rç  rè  r%  r•   ré  rë  r1  r5  rê  r<  rr   r   r   rÊ  r   rÍ   r]   rF  rS  rW  r`  ra  rf  rg  rh  rl  rn  rp  rŠ  r�  r¢  r§  r©  r¯  r°  ÚslowrÁ  rÕ   ÚchainÚfrom_iterabler6   rÈ  rË  rÍ  rØ  rÚ  rÜ  rä  rí  rï  rõ  rø  rù  r  r  r  r   r   r   r   r"  1  s*   üüüóþ
ÿ
L&þý	ýþý÷þ
ÿ
ÿ
ÿ

ÿ
ÿ
"ÿ
ÿ
E/ÿ
ÿ
ÿ

ÿþþÿ
ÿ
ÿ
% ÿ
ÿ
7ÿ
ÿ
ÿ
%r"  c                 C   sn   t g d¢g d¢g d¢gg d¢d�}|j| d�}tg d¢tg d¢g d¢gg d	¢g d
¢gd�d�}t ||¡ d S )Nr›   )r>   rJ   ri   )rj   rk   r�   )r@  r>  r?  rÐ   r   )	r0   r1   r-   r>   rJ   ri   rj   rk   r�   rY   )	r   r   r   r0   r0   r0   r1   r1   r1   )	r   r0   r1   r   r0   r1   r   r0   r1   r  r5   )r   r   r	   r   r   r8   )r   r$   r:   r;   r   r   r   Útest_stack_tuple_columnsI
  s   ÿþþr  zdtype, na_valuerÔ  Útest_multiindexc                 C   s¶   |rt  dt|g| d�g ¡}nt|g| d�}tddgi|d�}|jdd�}|r>t  t|g| d�t|g| d�tdgƒg¡}nt  t|g| d�tdgƒg¡}td|d�}t ||¡ d S )Nr1   rK   r.   r0   r5   Tr   )r   rñ   r   r   r   r	   r   r8   )rL   r  r  r3   r$   r:   r­   r;   r   r   r   Útest_stack_preserves_naY
  s&   ýÿþÿr  )1r   rÕ   r˜  Únumpyr   r•   Úpandas._libsr   Úpandas.errorsr   Úpandasr{   r   r   r   r   r	   r
   r   Úpandas._testingÚ_testingr   Úpandas.core.reshaper   r½  Úfixturer   r   ré  rë  ró  rô  rø  rÿ  rê  r¶  r  r  r  r  r  r  r  r!  r"  r  rB   rß  r  r   r   r   r   Ú<module>   s‚    $	
          
%






&
         üþ	