a
    é´«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   úd/var/www/html/laksyashrimp/venv/lib/python3.9/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ÚstackedZ
stacked_dfÚ	unstackedZunstacked_dfZunstacked_colsZ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   ©r/   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< |sLt|jjƒdksLJ ‚| ¡ }| ¡ }t ||¡ d S )Nr,   r-   ç      @é   ©ÚxÚyr<   r=   )	r   r   ÚnanÚlenÚ_mgrÚblocksr   r   r4   )r"   Úusing_array_managerr$   Údf2Úresr7   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)r,   r-   r:   é   ©Údtype©)r<   r*   )r<   r+   )r=   r+   )Úzr*   éÿÿÿÿ©Ú
fill_value)r,   rK   rF   )r-   r:   rK   ©r*   r+   ©r<   r=   rJ   ©r/   rH   ç      à?)r,   rQ   rF   )r-   r:   rQ   ©r*   r*   r+   )ÚjÚkrS   ©r   r,   r-   )r<   r=   rJ   Úwr<   r=   r   )rV   r+   rS   )r   r   r-   )r/   Únamer   rV   )r	   r   Úint16r   Úfrom_tuplesr/   r   r   r   r    ÚfloatÚ	set_indexr4   r   Zreorder_levelsÚnamesÚastypeÚint64Úloc)
r"   r   Údatar6   r7   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 )Nr,   r-   r)   r:   rF   é   é   é   ZAB)r0   rH   rI   rK   rL   )r,   r)   r-   r:   )rK   rF   rK   rd   )re   rK   rf   rK   ÚxyzrP   )©ÚAr*   )ri   r+   )ÚBr*   ©rj   r+   ri   rj   rQ   )rQ   rF   rQ   rd   )re   rQ   rf   rQ   )r   Úlistr   Úint32r   rY   r/   r   r0   r   r    r]   rX   Úfloat64rZ   )r"   Úrowsr$   r6   r7   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:   ©ÚperiodsrI   r   r)   r,   r-   rN   rO   r1   rL   )r   Úvaluesr	   r   rY   r/   r   r   ÚpdÚNaTr   r    )r"   Zdvr`   r6   r7   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:   rI   r   r)   r,   r-   rN   rO   r1   rL   )r2   r	   r   rY   r/   r   r   ru   rv   r   r    )r"   Útdr`   r6   r7   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-04rI   r   r)   r,   r-   rN   rO   r1   rL   )	r   r	   r   rY   r/   r   r   r   r    )r"   rs   r`   r6   r7   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 s¢0    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*   ÚcategoryrG   rI   ZaxaÚabc©Ú
categoriesZbcxrN   rg   r1   z9Cannot setitem on a Categorical with a new category \(d\)©ÚmatchÚdrL   r�   ZacaZbcc)r	   r   rY   r/   r   r   ru   ÚCategoricalrl   r   r    ÚpytestÚraisesÚ	TypeError)r"   r`   r6   r7   Úmsgr   r   r   Ú#test_unstack_fill_frame_categoricalö   s.    ÿþû*þû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�   ©r,   r-   r)   rh   rk   ©r\   r,   é	   r-   ©rˆ   Úer1   )r,   r,   r,   r-   r-   r-   )©rˆ   r*   ©rˆ   r+   )rˆ   r�   ©r”   r*   ©r”   r+   )r”   r�   ©rW   ©r0   r/   )r   r3   r   r   rY   r   r   r    ©r"   Úidxr$   r6   r7   r   r   r   Ú$test_unstack_tuplename_in_multiindex  s    ÿ
÷óz9TestDataFrameReshape.test_unstack_tuplename_in_multiindexz>unstack_idx, expected_values, expected_index, expected_columnsrh   )r,   r,   r-   r-   ))r,   r)   )r,   r:   ©r-   r)   )r-   r:   rj   ÚCr‘   )r•   r–   r—   r˜   N)rh   rj   )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-   )r”   r+   r,   )r”   r+   r-   )Nrh   rj   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+   r,   r-   r)   r:   )rh   rj   rŸ   r‘   rf   r“   r1   rš   )r   r3   r   r   r   r    )	r"   Zunstack_idxZexpected_valuesÚexpected_indexÚexpected_columnsrœ   r$   r6   r7   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)ZILÚMIZNCr�   r‚   r-   r)   r,   r   Z20010102)ç      ð?ç      I@g      Y@Zfloat32)r9   ç      @ç      @rn   F)r,   éÈ   i2 Zint8)Ústater/   Úsome_categoriesri   rj   rŸ   ÚDÚEÚFÚGÚHc                 S   s&   |   |g¡}|   |¡}t ||¡ d S r   ©r   r   r    )r$   Zcolumn_nameZ
unstacked1Z
unstacked2r   r   r   Úunstack_and_comparet  s    
zNTestDataFrameReshape.test_unstack_preserve_dtypes.<locals>.unstack_and_comparer©   r/   rª   r­   rŸ   )r®   rj   r©   rj   r¬   ri   )	r   r	   r]   r   ÚrandomÚdefault_rngru   Ú	Timestampr[   )r"   r$   r±   Údf1rb   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)   ©Úrepeatr-   )é   é   ©r0   r,   ©Úlevelr   éþÿÿÿrK   T)Zinplace)r   rY   rl   Ú	itertoolsÚproductr2   r   r   r²   r³   Ústandard_normalr   r    r   r   r0   Z	set_names)r"   r   r0   r$   Zdf_namedZ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 sÞ0    Y  | ¡ }g d¢|j	_
tj|jddg|d	�|dd� d S )N©)ri   ÚcatÚlong)rj   rÄ   rÅ   )ri   ÚdogÚshort)rj   rÆ   rÇ   ©ÚexpÚanimalÚhair_lengthr‘   r-   ©r:   r:   r»   rÊ   rË   r¼   rÉ   )rÉ   rÊ   r,   r,   F©Zcheck_nameszSlevel should contain all level names or all level numbers, not a mixture of the twor†   r   )rÉ   rÊ   r   )r   rY   r   r   r²   r³   rÁ   r   r   r0   r\   r   r    rŠ   r‹   Ú
ValueError)	r"   r   r0   r$   Úanimal_hair_stackedÚexp_hair_stackedrC   r�   Údf3r   r   r   Útest_stack_mixed_levels­  sH    ù	ÿÿÿýý	ÿ0ý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‘   r-   rÌ   r»   rÉ   rÊ   r¼   rË   rU   r,   FrÍ   r   )r-   r   r,   )r   rY   r   r   r²   r³   rÁ   r   r   r0   r\   r   r    )	r"   r   r0   r$   Zexp_animal_stackedrÏ   rÐ   rC   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Úcolr.   rG   )
r   r   Úfrom_arraysr   r   Úarrayr>   Ú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   r,   r,   ©r   r,   r   r,   )r,   r   r,   r   )ÚfirstÚsecondÚthird©r5   Úcodesr\   r   r1   r,   r-   r   rà   rá   rG   râ   r™   r.   )r   r	   r   r   r   r   r×   r>   rn   r   r   r    )r"   r   Úmirb   r6   Zexpected_mir7   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 )Nr,   r-   r9   r:   r;   r�   r<   r=   )r   r   r   r,   r,   r,   )r   r,   r-   r   r,   r-   ©r5   rä   r)   r1   )r   Ú
isinstancer	   r!   r   r    r   r   r>   r   r/   r   r4   r   r2   )	r"   r#   r`   Zundor6   Úmidxr7   Z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}|�rNt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)r,   r,   r)   r:   ©r,   r-   r)   r:   )r-   r,   r)   r:   )r-   r-   r)   r:   ÚABCDr»   r^   r:   r1   ri   rj   )rŸ   rŸ   r«   r«   )r,   r-   r,   r-   )Nrj   r‘   r9   rŸ   rn   r-   r   r«   )Úna_valuerØ   )r   rl   Údtypesr	   r   rH   r   r4   r[   r   r   rÖ   ru   ZStringDtyper>   )	r"   Úusing_infer_stringro   r$   r6   r7   rC   rÑ   rH   r   r   r   Útest_unstack_dtypesn  sP    
ÿþ
ÿþ
ÿýÿþz(TestDataFrameReshape.test_unstack_dtypeszc, drF   Zf8rG   é
   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sžJ ‚t 	||¡ d S )Nr*   rF   rq   rr   )ri   rŸ   r«   rj   r)   T)Údeepri   rj   r«   r^   r   )r«   r*   )r)   r-   )
r   r   Úilocr   r[   r]   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 sX0    Y  tjt|d	��  |jjd|d
� W d   ƒ n1 s–0    Y  d S )NrN   )r�   rˆ   Úc1r‘   r,   r-   r1   z5The name c1 occurs multiple times, use a level numberr†   r   )	r   rY   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   sD  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 ¡ s�J ‚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*   )ri   rj   rŸ   r«   rK   r,   r   r)   r1   ©ri   rj   rŸ   )r,   r,   r,   r   r   r   r.   )r   r,   re   ©r   r,   r-   r)   rÞ   ©r   r-   r   r-   r:   r-   ©Úaxisr»   )r   r3   r   r   r   r    r0   r5   Úallr   r   r   Zconcatenate)	r"   rœ   r$   r6   Zexp_colr7   r5   rä   Úblockr   r   r   Útest_unstack_unused_levelsÊ  s$    
ÿz/TestDataFrameReshape.test_unstack_unused_levelsz"level, idces, col_level, idx_levelr   )é   é   rd   r’   r-   rF   rf   é   r*   r-   r,   )rf   r  r,   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*   r-   r�   )r,   r)   rF   re   )r   rK   r,   r,   )r   r-   rK   r-   rf   r:   r-   r1   ©r½   é   r   r,   r)   rd   r.   )r   r   r   r   r   r   Úzerosr>   r3   r   r    )r"   r½   ZidcesZ	col_levelZ	idx_levelr5   rä   rœ   r`   r$   r6   Zexp_dataÚcolsr7   r   r   r   Ú)test_unstack_unused_levels_mixed_with_nanâ  s    

z>TestDataFrameReshape.test_unstack_unused_levels_mixed_with_nanr
  ri   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+   ZIIrú   r»   F)Zdropr  r   rŸ   r‘   )r   r[   r_   Úslicer   rô   r   r3   r0   r/   Ú	droplevelr   r    )r"   r
  r$   ÚindZ	selectionr6   r7   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 )Nr,   r   rø   r‘   )r   r   r,   r   r   r   r,   )Úi1Úi2Úi3Úi4Úi5Úi6Úi7rš   )r  r  r  r  r  r  )rø   r  r  r  r  r  r  r  r™   )r   r   rY   r   r   r   r    ©r"   r$   r6   r7   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stJ ‚d S )Nç        rj   rŸ   r«   rø   Úc2r‘   )rò   é   r¹   )rò   r  é(   ©r  r  r  rš   r  r  r¾   )r   r   rY   r   r0   r\   )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 )Nr,   r-   r)   r:   rK   r¾   éýÿÿÿéüÿÿÿr�   )rˆ   r”   Úf)Úm1ÚP3éÞ   )r#  ÚA5éo   )Úm2r$  r%  )r(  r&  r'  r  r‘   rš   r  r  )r   r   rY   r   r   r    r  r   r   r   Ú&test_unstack_multi_level_rows_and_cols-  s    üùýz;TestDataFrameReshape.test_unstack_multi_level_rows_and_colsrœ   ©ÚjimÚjoe)r,  r+  Ú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s˜J ‚dd„ }	|d  	¡ j
 ¡ \}
}t|
|ƒD ]b\}}t|d j||f  d¡ƒ}|	|d j| ƒ|	|d j| ƒ }tt||ƒƒ}||ksÀJ ‚qÀd S )Nc                 S   s   | | krdn| }|d›S ©NÚ Ú1r   ©ÚvalZval_strr   r   r   ÚcastD  s    z:TestDataFrameReshape.test_unstack_nan_index1.<locals>.castr*   r+   rˆ   )rV   r<   r=   rJ   )za.wzb.xz .yzd.z)r+  r,  Újolier+  r,  r4  r  c                 S   s   t | tƒrt| ƒS | gS r   ©rè   Útuplerl   ©r*   r   r   r   Ú<lambda>W  r|   z>TestDataFrameReshape.test_unstack_nan_index1.<locals>.<lambda>Ú.)r   r   r>   r[   r   r!   r   r    rl   Únotnart   Úsumr?   ÚnonzeroÚzipÚsortedrô   Úsplitr/   r0   Úmap)r"   rœ   r-  r3  r$   rö   rõ   rå   ÚudfÚmk_listro   r
  rz   rS   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 ]f\}
}t|| j|
|f  d¡ƒ}||| j|
 ƒ||| j| ƒ }ttˆ |ƒƒ}||k�s6J ‚�q6d S )Nc                 S   s   | | krdn| }|d›S r.  r   r1  r   r   r   r3  c  s    zATestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.castrˆ   r)   rF   r*   r-   r�   r”   r+   r=   rV   rJ   r:   r<   )éC   é'   é5   éH   é9   éP   é   r  r  r¹   é;   é2   é>   rQ  éL   é4   é   rL  é<   é3   rD  c                    s   d  tˆ | ƒ¡S )Nr9  )Újoinr@  ©Úr©r3  r   r   r8  �  r|   zETestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.<lambda>r,   rý   c                    s   d  tˆ | jd d d… ƒ¡S )Nr9  rK   )rY  r@  rô   rZ  r\  r   r   r8  ‘  r|   rH  rI  r  c                 S   s   t | tƒrt| ƒS | gS r   r5  r7  r   r   r   r8  —  r|   r9  )r   r   r>   Úapplyr[   rl   r   r:  rt   r;  r?   r<  r=  r>  rô   r?  r/   r0   r@  )r"   rœ   r-  rÕ   r$   rå   rA  rB  ro   r
  rz   rS   rö   rõ   r   r\  r   Útest_unstack_nan_index_repeats_  sT    
ÿþýüûÿ
þý
üû
úòÿ)þ $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 )NZaaaabbbbrf   rú   rj   rZ   ©r)   r,   ri   r   r)   r,   r-   r:   rF   rd   re   r™   rŸ   r*   r+   rã   rš   )r-   r,   )r   rl   r2   r]   r   r>   rô   r[   r   r@  r=  r   r   r   r    )r"   r$   rö   Úvalsrœ   r
  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�}|ræ|jg d¢ }||  |d j¡||< t ||¡ d S )NZ
aaaaabbbbbrq   rF   rr   r-   rò   rú   r_  ri   rj   r)   r   r,   r:   rd   re   rf   r’   r*   r+   r™   rŸ   )r   r   r   r   r   r   )rK   r   r,   r-   r)   r:   rã   rš   )r,   r-   r)   rF   )r   rl   r   Útolistr   r   r>   rô   r[   r   r×   r   r   r0   r]   rH   r   r    )r"   rB   r$   rö   r`  rœ   r
  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¼ç�(ÚUr  ÚPbg¢	VÍZ§Ý>)ÚSnçº@¹ÕÂø>çÌ]KÈ=‹?é)=‘()ÚAgr  ri  rj  )rd  ça2U0*©#¿ri  rj  )ÚagentÚchangeÚdosageÚs_id)ioC  épC  iqC  irC  isC  itC  rš   )rp  ro  rm  rl  rh  rj  ri  r   r,   rK   rp  ro  rã   rn  )rk  rd  rf  rg  re  )r   r   r   r   r   ©r   r,   r-   r)   r:   rm  rq  )
r   r>   r   r   r[   r   r   r   r    r_   )r"   r`  r$   rö   rœ   r
  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 ]F}| ¡ D ]8\}}|d ||d
 |d ff}|| |j| ksÊJ ‚qÊq¾d S )N)r,   r-   r,   r-   r,   r-   z
2014-02-01rd   r«   )rs   Úfreqéd   r-   rò   )rE  rF  r+  r,  rF  z
2014-02-02rG  )r,   rF  )r)   rF  )r,   rG  )r:   rG  rD  r*  rE  )r   r   r   r   r²   r³   rÁ   Úroundru   r´   r>   r_   r[   r   r:  rt   r;  r?   Ziterrows)r"   r$   rö   rÕ   rê   r[  ra   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�}|r2d nt}d}tj||d�� |j|d	�}W d   ƒ n1 sj0    Y  t d
dg¡}t |dfg¡}tg d¢||d�}	t 	||	¡ d S )NiÞ  r,   rì   ri   rj   r»   z2The previous implementation of stack is deprecatedr†   r   rû   )rj   r.   )
r   r   r   rY   ÚFutureWarningr   Úassert_produces_warningr   r3   r    )
r"   r   Útr$   Úwarnr�   r6   ZeidxZecolsr7   r   r   r   Ú%test_stack_datetime_column_multiIndex,  s    *z:TestDataFrameReshape.test_stack_datetime_column_multiIndexÚmultiindex_columnsrr  rû   )r   r,   r-   r:   rU   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½   rK   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ƒr¤|s¤|j	|d	|d�}	t
|	tƒr˜t ||	¡ nt ||	¡ tj|j ¡ |jjd�|_|j	|||d�}	t
|	tƒræt ||	¡ nt ||	¡ d S )
NF©)rj   r<   )rj   rJ   )ri   r=   )rŸ   r<   )rŸ   ÚuÚUpperÚLowerr‘   r)   r»   )r½   Údropnar   T)r   Ú
no_defaultr   rY   r   r   r   r?   r   r   rè   Úintr	   r   r4   r    r0   Úto_numpyr\   )
r"   r}  r½   r   r‚  Úfull_multiindexZ
multiindexr$   r6   r7   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‘   rd   r-   r)   )r   r,   r)   r»   F©r‚  r   r   r,   rF   r:   )r  r<   r=   rJ   rÞ   )r,   r)   r,   r)   rã   rj   rŸ   r™   r.   )r   rY   r   r   r   r   r   rƒ  r   r>   r   r]   rï   rô   r   r    )r"   r   r†  r$   r‚  r6   r7   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 )NZyxzrg   ©r…   rŠ  )rò   r  r  r»   r   r1   )ru   ÚCategoricalIndexrl   r   r   r   r3   r/   r	   r   r4   )r"   rŠ  r   Úcidxr$   r6   ré   r7   r   r   r   Ú%test_stack_preserve_categorical_dtype‘  s    z:TestDataFrameReshape.test_stack_preserve_categorical_dtypezlabels,datarg   )rò   r  r  r  rV  r  Zzyx)rV  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�}	|r`|nt|ƒ}t j||d�}
|r‚t|ƒn|}t|t dg|
|g¡d	�}t 	|	|¡ d S )
Nr‹  r  Úv)rŠ  r»   r   r,   r   r1   )
ru   rŒ  r>  r   r3   r   r   r	   r   r4   )r"   rŠ  Úlabelsr`   r   r�  Zcidx2ré   r$   r6   Zs_cidxZexpected_datar7   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�   ©ri   rj   r   rû   ri   rj   )r*   r*   r*   r*   r+   r+   r�   r�   r1   )	ru   r‰   r   r   r   r3   r	   r   r4   )r"   r   rÄ   r$   r6   r/   r7   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   r-   r)   c           
      C   sx   t ||d� d¡}|j|d�}t |j ¡ ¡}t | ¡ ||jd�}t 	||¡ t
 |jj¡}t
 |j¡}	t ||	¡ d S )Nr.   r,   r   )r   Úfillnar   r   rY   r/   r…  r0   r   r    r   Zasarrayrä   Zassert_numpy_array_equal)
r"   r/   r0   r   r$   r%   Ú	new_indexr7   Zstacked_codesZ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_dtyper9   r¦   ÚInt64ÚFloat64r   r   ÚstringrØ   c           
      C   sR   t t||d�t||d�dœƒ}|j|d�}| t¡j|d� |¡}	t ||	¡ d S )NrG   )©ri   r,   )ri   r-   r   )r   r	   r   r]   rØ   r   r    )
r"   Zvals1Zvals2Zdtype1Zdtype2Zexpected_dtyper   r$   r6   r7   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)©ri   r   rš  )rj   r,   r*   r+   r‘   )r   r,   Nr—  rG   rR   r’  r1   r  r   rœ  r-   )r   rY   r   ru   r×   r‰   r   r]   rØ   r”  ÚNAr	   ri   rH   rj   r0   r   r4   rï   r    )r"   r½   r/   r$   r6   r7   Z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‘   r-   r,   r)   rj   ri   r.   r   )r)   r,   r-   r   ))r�   ri   )r�   rj   )rˆ   ri   )rˆ   rj   r»   rý   )rþ   r½   )r   r3   r   r0   rW   rY   r/   r   Ú	swaplevelÚ
sort_indexr   r    )r"   r½   rå   r$   r7   r6   r   r   r   Ú test_unstack_swaplevel_sortlevel  s    ÿþz5TestDataFrameReshape.test_unstack_swaplevel_sortlevel)?Ú__name__Ú
__module__Ú__qualname__r'   rŠ   ÚmarkÚfilterwarningsr8   rE   rc   rp   rw   r~   r   rŽ   r�   Úparametrizer   rY   r   r¢   r¶   rÂ   rÒ   rÓ   rÛ   ræ   rë   rñ   r   r	  r   r÷   rù   r  r>   r  r  r  r  r  r)  rl   r2   rC  r¿   Úpermutationsr^  ra  rc  rs  rw  r|  r‡  r‰  rŽ  r‘  r“  r3   r–  r›  rž  r¢  r   r   r   r   r      sR  ÿ
ÿ
.$"ÿþú
õüôþ"
*ÿ
ÿ
8ÿ
=ÿ
1þþ
ÿ

þþ

=1)ÿëþ!ÿ

ÿþþÿ
ýþÿþþ
r   rH   rn   r˜  c                 C   s   t  g d¢¡}| t dd¡||d�}|jddd�}| tu rJt  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 rÂt  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Ý   rJ   r+   )rÝ   r=   r*   )rÜ   rJ   r+   )rÜ   r=   r*   r¤   r§   rP   rK   F)r½   Úsort©r   r+   )r   r*   r+   r*   ç       @r9   r¦   ))rÝ   rJ   )rÝ   r=   )rÜ   rJ   )rÜ   r=   ©r0   r/   rH   r,   r-   )r   rJ   r+   )r   r=   r*   )rJ   r+   )r=   r*   rÝ   rÜ   )r/   r0   rH   )	r   rY   r   r   r   r   r>   r   r    )Zframe_or_seriesrH   r/   Úobjr6   r¡   r7   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Ø   rG   rI   r*   r+   r�   rN   rg   rP   rˆ   rL   )r*   rˆ   r*   )r+   r�   rˆ   )r	   r   rY   r/   r   r   r   r>   rl   rØ   r   r    )r`   r6   r7   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   r,   rã   r.   )	r   ru   r´   r[   r   r   r   r   r    )r$   r6   r7   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«   Z20180101Z20180103zAmerica/New_York)rt  ÚstartÚendr²  ri   r�   r1   r   rU   ©r   r   r   rç   )r   r   r   r	   r   r   r4   )r   Útsr$   r6   r7   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�}|rŽ| tjurŽtj	t
dd��& tt jd�j| |d� W d   ƒ q°1 s‚0    Y  n"tt jd�j| |d�}t ||¡ d S )NrG   rç   )rH   r/   údropna must be unspecifiedr†   rˆ  )r   r×   r^   r	   rn   r   r   rƒ  rŠ   r‹   rÎ   r   r   r   r4   )r‚  r   r5   r7   r6   r   r   r   Útest_stack_empty_frame‰  s     6ÿr»  rM   c                 C   s–   |r\| t jur\tjtdd��. ttjd�j| |d�j	|d� W d   ƒ q’1 sP0    Y  n6ttjd�j| |d�j	|d�}ttjd�}t
 ||¡ d S )Nrº  r†   rG   rˆ  rL   )r   rƒ  rŠ   r‹   rÎ   r   r   r^   r   r   r   r    )r‚  rM   r   r6   r7   r   r   r   Útest_stack_unstack_empty_frame™  s    ÿþ&ÿþÿr¼  c                  C   sF   d} t jt| d��  ttjd� ¡  W d   ƒ n1 s80    Y  d S )Nz'index must be a MultiIndex to unstack.*r†   rG   )rŠ   r‹   rÎ   r	   r   r^   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 )NZAliceZBobç      #@rf   FTr   ÚfemaleÚmale)rW   ÚscoreÚemployedÚkidsÚgender)rW   rÂ  rÃ  rÄ  rÄ  rL   rÂ  rÃ  )r¾  r  r  r  )r  r  r  g       @rW   r™   ))rÁ  r¿  Fr   )rÁ  r¿  Tr   )rÁ  rÀ  Fr   )rÁ  rÀ  Tr   )NrÄ  rÂ  rÃ  r‘   r.   )r   r[   r   r   r   rY   r   r    )r$   r7   r6   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;   )r=   rJ   r*   r‘   ©r,   r,   r,   r,   r»   r   r   r=   rJ   r™   )r   r<   )r   r=   r,   r.   )r   r3   r   r   r   rY   r   r    )r   r0   r$   r6   Znew_columnsr•  r7   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�‰ | sŠt
dd„ ˆ jjD ƒƒsŠJ ‚ˆ  ¡ }tj‡ fd	d
„tdƒD ƒtdƒdd�}t ||¡ d S )NrF   rú   r-   r  rû   r1   c                 s   s   | ]}|j j V  qd S r   )Zmgr_locsZis_slice_like©ry   r<   r   r   r   Ú	<genexpr>ï  r|   z5test_unstack_non_slice_like_blocks.<locals>.<genexpr>c                    s   g | ]}ˆ |   ¡ ‘qS r   )r   )ry   Ún©r$   r   r   r{   ó  r|   z6test_unstack_non_slice_like_blocks.<locals>.<listcomp>r:   r,   )Úkeysrþ   )r   r3   r2   r   r   r²   r³   rÁ   r]   r^   Úanyr@   rA   r   ru   Úconcatr   r    )rB   rå   rD   r7   r   rË  r   Ú"test_unstack_non_slice_like_blocksá  s    üù	&rÏ  c                 C   sD  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�}| rRi nddi}|jf 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f d| dœ|¤Ž}t ||¡ d S ) N)r,   r-   r9   r¦   )r-   r)   r¦   r§   r)   r:   rj   ri   r<   r=   rÞ   rß   rç   r»   rª  Fr   r¼   r¤   r9   r¬  r¦   r§   r;   )r   r   r,   r,   r-   r-   )rj   ri   rj   ri   rj   ri   r1   )r¤   r9   r¬  r¦   r9   )r¬  r¦   r9   r§   r¦   )r   r   r,   r,   r-   )rj   ri   rj   ri   rj   )rj   rj   ri   ri   )r<   r=   r<   r=   )r   r>   r   r   r   rÖ   r   r    )r   r`   r$   Úkwargsr6   r7   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	�}| r4i 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¬  r9   r¦   rÄ   rÆ   r.   rª  Fr   r,   r   ))rÄ   rÒ  rÓ  )rÄ   rÔ  rÕ  )rÆ   rÒ  rÓ  )rÆ   rÔ  rÕ  )r¤   r¬  r9   r¦   r1   )r   rY   r   r   r	   r   r4   )r   rœ   r$   rÐ  r6   r    r7   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   r]   r„  r   rm   )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)r,   r,   NNç      >@N)r-   r-   NNrÛ  N)Úix1Úix2Úcol1Úcol2Úcol3Zcol4r-   )NNrÛ  N)r,   r,   NNrÛ  )r-   r-   NNrÛ  )rÜ  rÝ  rÞ  rß  rà  )NNrÛ  )r-   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Ý  r,   r-   r‘   r™   rš   )	r   r[   rô   r   r   r3   r   r   r    )r"   Zresult_rowsZresult_columnsZindex_productZexpected_rowr6   r7   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   )r,   rŸ  r,   )r,   Zquxr,   r-   r:   r1   r,   rÿ   ©rþ   Úhow)r   rY   r	   r   r²   r³   rÁ   r   r‚  r   r    )r"   r/   rb   r&   r7   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�}|rf|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�}|�rN|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ÿ   ©rã  r-   r  r   rK   r,   rý   r)   r¾   )r   r   r‚  r   r    r¡  r   r_   r4   Úreindexr/   Zassert_equal)r"   rØ  r   rÙ  r&   Ú	restackedZunlexsortedr6   r7   r%   Zymd_stackedr   r   r   Ú
test_stacku  sf    


ÿz%TestStackUnstackMultiLevel.test_stackzidx, columns, exp_idxÚabab)rE  rF  rE  r*   r+   rE  rF  r)   )r   r,   r   r:   rç   )©r*   r-   ©r+   r,   ©r*   r,   )r+   r-   r,   )r,   r   r,   )r)   rd   r)   c                 C   s¸   t t d¡ dd¡||d�}|r`d}tjt|d�� |j|d� W d   ƒ q´1 sT0    Y  nT|j|d�}tt d¡|d�}t	 
||¡ |jjd	u sšJ ‚|j|j }	}
t	 |	|
¡ d S )
Nr  r:   r)   r.   z8Columns with duplicate values are not supported in stackr†   r   r1   F)r   r   r   r   rŠ   r‹   rÎ   r   r	   r   r4   r/   Z	is_uniqueÚassert_index_equal)r"   rœ   r0   Zexp_idxr   r$   r�   r6   r7   Ú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:   ÚSatr-   ÚSunÚThur)   ZDinnerZLunchrF   ÚNoÚYes)rõ  rõ  rö  )ÚdayÚtimeZsmokerr‘   r  rn   rG   )r;  r?   r1   r   rÿ   rå  )
r   rÖ   r   r   r   r   r   r‚  r   r    )r"   r   rå   r$   r6   Ú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 sbJ ‚|d jtjksvJ ‚d S )	Nr   )r   Úfourr,   )r½   rþ   r   FrÍ   r   )	r!   r¡  r   r   r4   rW   rH   r   rn   )r"   Ú multiindex_dataframe_random_datar   Úframer$   r%   r6   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 sf0    Y  | 	¡ }|j
|d
�}t || |j¡ t¡¡ d S )N)Únaiverÿ  rÿ  Úactiver   r   )r*   r+   r+   r+   r*   r*   )r,   r-   r)   r:   r,   r)   )Úhir  Úbyer  r  Zpeaceg      @)r©   rÉ   Úbarcoder�  Úextraz7DataFrameGroupBy.apply operated on the grouping columnsr†   )r©   rÉ   r  r�  r   )r   r   r   r   ry  rx  Úgroupbyr]  r?   r   r   r4   ræ  r/   r]   rZ   )r"   r   r$   r�   r6   r&   rç  r   r   r   Útest_unstack_bug  s    ûÿ
2z+TestStackUnstackMultiLevel.test_unstack_bugc                 C   sT   |}|  ¡ }|jjdksJ ‚|jjddgks0J ‚|j|d�}|jj|jjksPJ ‚d S )Nrà   rÉ   rá   r   )r   r/   rW   r0   r\   r   )r"   rü  r   rý  r&   rç  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 sZ0    Y  |dkrÀ|jd d …df }tjtdd��$ t||ƒd
i |¤Ž W d   ƒ n1 s¶0    Y  d S )Nr   r   r   zdoes not match index namer†   Úmistaker   r   )r	  )r	  )r_   rŠ   r‹   ÚKeyErrorÚgetattrrô   )r"   r  rü  r   rý  r$   rÐ  rb   r   r   r   Ú#test_stack_unstack_wrong_level_name>  s    
2z>TestStackUnstackMultiLevel.test_stack_unstack_wrong_level_namec                 C   s*   |}|  d¡}|j dd�}t ||¡ d S )Nrá   r,   r  r°   )r"   rü  rý  r6   r7   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    r4   )r"   rü  r   rý  r&   r6   r7   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sBJ ‚|d }|  ddg¡}t ||d ¡ |jddg|d�}|rŠ|jdd�}| dd¡ dd	¡}|jdd
�}t ||¡ |j	j|j	jksÊJ ‚|  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Úmonthri   r   rÿ   rå  r   r,   r-   r  râ  )r   r   r    r0   r\   r   r‚  r   r¡  r/   r_   )	r"   rØ  r   rÙ  r&   r7   rb   Zs_unstackedrç  r   r   r   Útest_stack_unstack_multipleh  s*    z6TestStackUnstackMultiLevel.test_stack_unstack_multiplec                 C   sV   |}|  ddg¡}tjtdd��" |jddg|d� W d   ƒ n1 sH0    Y  d S )Nr  r  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 sH0    Y  tjtdd��" |jd	d
g|d� W d   ƒ n1 sˆ0    Y  d S )Nr  r  zToo many levelsr†   r-   r)   r   znot a valid level numberr!  r   )r   rŠ   r‹   Ú
IndexErrorr   r  r   r   r   Ú!test_stack_multiple_out_of_bounds›  s    0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-01r  ú2013-02r  ú2013-03r  ÚMZperiod©rt  rW   ri   rj   r)   Ústrr™   ©r,   r-   r)   r:   rF   rd   r1   r,   r  r   )r  r  r  )r,   r)   rF   )r-   r:   rd   r’  r.   Úperiod1)ú2013-12ú2013-11ú2013-10ú2013-09ú2013-08ú2013-07Úperiod2)r#  r"  r!  r   r  r  r-   r:   rd   rF   )ru   ÚPeriodIndexr   r   rÖ   r	   r   r   r0   rW   r   r    r!   r   r>   )r"   Úidx1Úidx2Úvaluerœ   rb   Úresult1Úresult2Úresult3Ze_idxr7   Ú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.  r  r  r  )r  r  r/  r   r   r/  r$  r  )rd   rF   r:   r)   r-   r,   r’  r1   r,   r  r   r.  r/  )r   r  r/  r   r  r/  zA A A B B B)rF   r,   rd   r-   rd   r,   )r:   r-   r)   r)   rF   r:   r.   )r.  r/  r.  r/  )r   r  r/  zA A B B)rF   r:   r-   r)   )r,   r-   rd   rF   )rd   r)   r,   r:   )	ru   r%  r   rÖ   r   r   r?  r   r    )r"   r&  r'  r(  rœ   r$   r)  r*  r+  Ze_1Ze_2r,  r7   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¡}
|r”d}
tjt|
d�� |	 d¡ ¡  W d   ƒ n1 sÆ0    Y  |	 d¡jdd�}|jd|d�}|	jd d …dgf  d¡ ¡ jd|d�}d|j_	t ||¡ d S )Nr,   r)   r-   r*   r+   )z
2013-01-03z
2013-01-04z
2013-01-05r   ru  rd   )ÚIDÚNAMEÚDATEÚVAR1r3  r1  ZParamsz&agg function failed [how->mean,dtype->z-dtype 'str' does not support operation 'mean'r†   zW-THUT)Znumeric_onlyr   r4  )ru   Úto_datetimer   r²   r³   Úintegersr   r[   r0   rW   r   ÚreÚescaperŠ   r‹   rŒ   ZresampleÚmeanr   r_   r   r    )r"   r   rð   Zid_colrW   ÚdateZvar1r$   ZmultiZunstr�   ZdownrÙ   rÚ   r   r   r   Útest_stack_multiple_bug  s.    

,ÿýÿz2TestStackUnstackMultiLevel.test_stack_multiple_bugc                 C   sÎ   t ddgddgddgdœƒ}| ddg¡}|s2d	ntj}| ¡ j||d
�}t|ƒt| ¡ ƒksbJ ‚|r¨tj	t
dd��" | ¡ jd|d
� W d   ƒ qÊ1 sœ0    Y  n"| ¡ jd|d
�}t || ¡ ¡ d S )NÚa1Úa2Úb1Úb2r,   rú   ri   rj   Frˆ  rº  r†   T)r   r[   r   rƒ  r   r   r?   r‚  rŠ   r‹   rÎ   r   r    )r"   r   r$   r‚  r%   r   r   r   Útest_stack_dropna=  s    2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   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   r/   r\   r0   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éè  r-   ru  )Úsizer)   i,  r:   iùÿÿÿre   rF   iíÿÿÿé   rd   i¸  )ri   rj   rŸ   r«   r¬   r­   )ri   rj   rŸ   r«   r¬   r¬   )r   r   r²   r³   r6  rÁ   r[   r   )r"   ZNUM_ROWSr$   Z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   r,   rû   rÞ   rü   r-   )r:   r-   r1   r:   r   )r   r   r   r²   r³   rÁ   r   r?   r0   r   r   r    )r"   r   r5   rä   r/   r$   r6   rù  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��F tjtd	d�� | ¡  W d   ƒ n1 sŒ0    Y  W d   ƒ n1 sª0    Y  W d   ƒ n1 sÈ0    Y  d S )
Nc                       s"   e Zd Zddœ‡ fdd„Z‡  ZS )zaTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32.<locals>.MockUnstackerN)Úreturnc                    s   t ƒ j|i |¤Ž tdƒ‚d S )NúDon't compute final result.)ÚsuperÚ__init__Ú	Exception)r"   ÚargsrÐ  ©Ú	__class__r   r   rK  �  s    zjTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32.<locals>.MockUnstacker.__init__)r£  r¤  r¥  rK  Ú__classcell__r   r   rN  r   ÚMockUnstackerŒ  s   rQ  Ú
_Unstacker)é   r-   rS  r1   z$The following operation may generater†   rI  )Úreshape_librR  ÚcontextÚsetattrr   r   r	  r   r   ry  r   rŠ   r‹   rL  r   )r"   ZmonkeypatchrQ  rÕ  r$   r�   r   r   r   Ú/test_unstack_number_of_levels_larger_than_int32‡  s    
þzJTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32r5   c                 c   s(   | ] }t jt  g d ¢|¡dd�V  qdS )rU   r-   r·   N)r¿   rÀ   r©  )ry   Ú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�}|r2i nd|i}|j|fd|i|¤Ž}|jD ]P}	|jD ]D}
|j|	|
f }|	|
| f}|
d|  }|j||f }||ks`J ‚q`qVd S )	NrÞ   rß   rç   r:   )r0   r`   rª  r   r,   )r   r   r2   r   r/   r0   r_   )r"   r5   rY  rª  r   r0   r$   rÐ  Z
df_stackedÚrowrÕ   r7   Z
result_rowZ
result_colr6   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 ƒƒszJ ‚d S )
N)ri   rŸ   rj   )rj   ri   rŸ   r)   rç   rF   rK   )r0   r/   r`   c                 3   sL   | ]D}ˆ j D ]8}ˆ j||f ˆ jd ˆd�j||d  f|d f kV  qqdS )r   r   r,   N)r0   r_   r   )ry   rZ  rÕ   ©r$   r   r   r   rÉ  È  s
   
ý"ÿz]TestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels_multi_row.<locals>.<genexpr>)r   r   r¸   r2   Útiler   r   r?   r   rÿ   r/   )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   r,   )r,   r   r,   rÞ   rß   rç   r:   )r,   r   r-   r)   )r0   r`   r/   rª  Tr   rû   r   )r,   r,   r   r   r-   r-   r)   r)   )r,   r   r,   r   r,   r   r,   r   rA  )r-   r)   r-   r)   r-   r)   r-   r)   r_  r1   )r   r   r2   r   r   r    )
r"   r   r5   rY  r0   r$   rÐ  r6   r    r7   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 )NrF   c                 S   s   g | ]}d |› �‘qS )r+   r   rÈ  r   r   r   r{   ï  r|   zVTestStackUnstackMultiLevel.test_stack_unstack_unordered_multiindex.<locals>.<listcomp>c                 S   s   g | ]}d |› �‘qS r7  r   rÈ  r   r   r   r{   ð  r|   r+   r*   r»   rà   r<   r,   rý   rá   r   Za0Zb0r<  r>  r=  r?  Úa3Zb3Za4Zb4rr  )r*   r<   )r+   r<   r‘   r.   )r   r   Zvstackr   r!   r0   rW   ru   rÎ  r\   ræ  r>  r   r   r   rY   r   r    )	r"   r   rt   r`   r$   Zsecond_level_dictZmulti_level_dfr6   r7   r   r   r   Ú'test_stack_unstack_unordered_multiindexç  s.    
þÿÿ ÿýzBTestStackUnstackMultiLevel.test_stack_unstack_unordered_multiindexc                 C   sh   |}d|d< d|d< |  d¡}|d jtjks2J ‚|sH|d jtjksPndsPJ ‚|d	 jtjksdJ ‚d S )
Nr   r¬   r-   r­   r  rš  )r¬   r,   r™  )r­   r,   )r   rH   r   rn   Zobject_)r"   rØ  rð   rÙ  r&   r   r   r   Útest_unstack_preserve_types	  s    
þÿýz6TestStackUnstackMultiLevel.test_unstack_preserve_typesc                 C   sn  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sxJ ‚|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�sjJ ‚d S )Néô  r-   rf   r   r,   rç   rC  r1   )rd  r-   r   r:   )r   r]  r   r   r¸   r	   r   r   r   r   r4   ræ  r/   )r"   r   rä   r½   r/   rb   r6   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	< |sHt|jjƒd
ksHJ ‚| 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�}|rÊ|d  d¡|d< |d  d¡|d< t ||¡ d S )N)ri   ri   rj   )ÚcaÚcbrg  rò   r)   )r*   r+   r�  r*   r+   r,   Úis_r-   ©rh  rf  r   )ç      $@rj  r¤   r¤   rj  r  r¤   ri   rj   r™   ))r�  rf  ©r�  rg  ri  ©rh  rg  r‘   r.   rk  r^   rl  )r   r[   r?   r@   rA   r   r”  r   r>   r   r   rY   r]   r   r    )r"   rB   r$   r6   r7   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:   r,   r-   rÆ  )ÚL1ÚL2ÚL3r<   )rn  ro  rp  )Zn1Zn2Zn3Nrn  )r5   r½   ro  rp  )r<   r,   rû   )r-   r)   r   r,   rã   )	r   r[   r/   Z
set_levelsr   r¡  r   r   rí  )r"   rµ   Z
new_levelsr6   r7   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�}|rxt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 )Nr,   rF   ))r   NN)r   r-   r   )r   r-   r,   )r   r)   r   )r   r)   r,   r»   r-   r   r   r  r¤   r·  )rK   r   r,   rç   r)   )©r   N)r   r   r_  )rr  )r   r-   )r   r)   r.   )
r   r   r	  r   rY   r   r   r>   r   r    )r"   r   r$   r6   r/   r0   r7   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
�}|rèt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�}n‚t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 )Nri   r-   rj   ré  Zccddrf   r:   r»   r,   r   r   r)   rF   rd   re   ZababababZccddccddrš   ZaabbaabbZcdcdcdcd)r   rÖ   ru   r‰   rl   r   r   r   r   r   r>   r   r    )r"   r   ré   r$   r6   r7   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�}|r‚t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:   r-   ri   rk   r€  r�  r‘   r   r,   ÚNumr™   r­  r   r+   rÞ   rß   rã   r«  )r,   r+   r  r¬  r9   rj   rš   )r   r   r   r   r   rY   r>   r   rn   r   r   r    )r"   r   Zdf_nanr6   r/   r7   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 )Nri   r   r,   rÄ   r*   r+   r1   r„   r_  )rÄ   r   )rÄ   r,   )
r   r3   r   ru   r‰   r   rY   r0   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 )NZITAZFRAÚA1ÚA2)ZCRTZDBTÚNET)ÚPAEÚVARÚTYPr‘   ZVALUE)r`   r/   r0   r|  r}  r   i'  )ZA0rz  r   r,   rý   )r   r3   rl   r2   r?   r   r   r0   r  r_   r   r¡  r   r4   )
r"   r   r{  r|  r}  r£   ÚVZDFr6   r7   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 )NZ54511Z54515r[  Út_meanÚstationÚelementr‘   r�   rø  r™   )rR  éâ   rò   é×   )rò   r„  r’   éÜ   )i1  éè   r'  r…  r­  r   r   )r¥   rj  rj  g      "@g     s@g     À[@rG   )rƒ  r„  r„  r…  r†  r…  )r[  r€  r1   )r   r3   r   r   r×   r   ru   Z
Int64Dtyper   r]   r^   r   r    r0   ZFloat64Dtyper5   rW   )r"   r   r0   r/   Zarrr$   r6   r7   r   r   r   Útest_stack_nullable_dtype
  s8    ÿÿþÿ"ÿÿü÷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*   r,   r-   ÚredÚblue)r<   r   r=   r‘   rÕ  r1   r<   )rÕ  r*   )r,   rˆ  )r-   r‰  r   r=   rš   )r   rÖ   r   r   rY   r   r    )r"   Zarraysrœ   r$   r6   r7   r   r   r   Útest_unstack_mixed_level_names;
  s    

ýz9TestStackUnstackMultiLevel.test_unstack_mixed_level_names)9r£  r¤  r¥  rÚ  rŠ   r¦  r¨  rá  rä  r§  rè  rl   r   r   r]  r   r¸   rY   rð  rú  rþ  r  r  r  r  r  r  r  r  r-  r0  r;  r@  rB  rF  rG  ZslowrW  r¿   ÚchainÚfrom_iterabler2   r[  r^  r`  rb  rc  re  rm  rq  rs  rt  rv  rw  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:   rF   rd   )re   rf   r’   )rì  rê  rë  r»   r   )	r,   r-   r)   r:   rF   rd   re   rf   r’   rU   )	r   r   r   r,   r,   r,   r-   r-   r-   )	r   r,   r-   r   r,   r-   r   r,   r-   rç   r1   )r   r   r	   r   r   r4   )r   r$   r6   r7   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 )Nr-   rG   r*   r,   r1   Tr   )r   rÖ   r   r   r   r	   r   r4   )rH   rî   rŽ  r/   r$   r6   r    r7   r   r   r   Útest_stack_preserves_naY
  s&    ýÿþÿr�  )1r   r¿   r7  Únumpyr   rŠ   Zpandas._libsr   Zpandas.errorsr   Zpandasru   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingr   Zpandas.core.reshaper   rT  Zfixturer   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   Ú<module>   s€   $	
          
%





&

         üþ	