U
    `»{j›+ ã                   @   s  d dl m Z  d dlmZ d dlZd dlZd dl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 G dd„ dƒZd	d
„ Zdd„ Zdd„ Zej dddg¡dd„ ƒZej dddg¡ej ddd g¡dd„ ƒƒZdd„ Z dd„ Z!dd„ Z"dd„ Z#G dd „ d ƒZ$dS )!é    )Údatetime)ÚStringION)ÚPerformanceWarning)Ú	DataFrameÚIndexÚ
MultiIndexÚPeriodÚSeriesÚ	TimedeltaÚ
date_range)Úreshapec                   @   s  e Zd Zdd„ Zdd„ Zdd„ Z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ddddgddddgddddgddddggejddddgddgd�ejd d!d"d#gd$dgd�fd%ddddddddgddddddddgged&d'gdd(�ejd)d*d+d,d-d.d/d0gd$ddgd�fg¡d1d2„ ƒZd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Zd=d>„ Zd?d@„ ZdAdB„ Zej dCe dD¡e dD¡fejdDdEdF�ejdDdGdEdF�ff¡dHdI„ ƒZdJdK„ Z dLdM„ Z!ej dNdOdPdQdRdSddDdTdUgej"dVdgej"dDdgfddTdUdd'dWdXdPdQgej"dDdgej"dVdgff¡dYdZ„ ƒZ#ej d[d\dge$d$ƒg¡d]d^„ ƒZ%d_d`„ Z&dadb„ Z'dcdd„ Z(ej dedfdgg¡ej dhe)e*dƒƒ¡didj„ ƒƒZ+ej dee, -dkdldmg¡¡ej dhe)e*d&ƒƒ¡ej dndodpg¡dqdr„ ƒƒƒZ.dsdt„ Z/dudv„ Z0dwdx„ Z1dydz„ Z2d{d|„ Z3ej d}dOddd&d'gdOddd&gdOddd'gdOddgddd&gdd&d'gdOdgdOdgdOd&gdOgdgd'gd'd&dddOgd&dddOgd'dddOgdddOgd&ddgd'd&dgddOgddOgd&dOgg¡ej d~ddOddOdgddOgf¡d€d�„ ƒƒZ4d‚dƒ„ Z5ej d„d…d†g¡ej d‡e)dˆƒe)d‰ƒg¡dŠd‹„ ƒƒZ6ej d„d…d†g¡ej dŒe)d�ƒdGdUdWdPdŽdXgfe)d�ƒdŽdXdWdPdGdUgfg¡d�d‘„ ƒƒZ7d’d“„ Z8ej d”dOdOddge 9ddgdVd•gg¡fdOdOdd&ge 9ddgdVd•gg¡fdOddd&ge 9ddgdVd•gg¡fg¡d–d—„ ƒZ:ej d~dOdg¡d˜d™„ ƒZ;ej d~dOdšg¡d›dœ„ ƒZ<d$S )�ÚTestDataFrameReshapec              	   C   sÎ   |rt nd }d}| ¡ }tj||d��( t t |j¡¡ |j¡|d d …< W 5 Q R X | 	¡ }t
||dœƒ}| ¡ }| ¡ }	t ||¡ t |	d |¡ | d¡}
| d¡}t |
j|¡ t |d j|¡ d S )Nz&will attempt to set the values inplace©Úmatch)ÚfooÚbarr   r   )ÚFutureWarningÚcopyÚtmÚassert_produces_warningÚnpÚarangeÚprodÚshaper   Ústackr   ÚunstackÚassert_frame_equalÚT)ÚselfÚfloat_frameÚusing_array_managerÚwarnÚmsgÚdfÚstackedZ
stacked_dfÚ	unstackedZunstacked_dfZunstacked_colsZunstacked_cols_df© r&   úd/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/frame/test_stack_unstack.pyÚtest_stack_unstack   s    ,

z'TestDataFrameReshape.test_stack_unstackc                 C   sä   t dƒdddgddgg}td|d |d d�}| ¡ }tdt |d d… ¡d�}t ||¡ td|d t |dd … ¡d�}| d¡}tdt |d |d g¡|d d�}t ||¡ |ddg  d¡}|ddg }t ||¡ d S )	Né   ÚaÚbé   é   r   ©ÚindexÚcolumns©r/   )	Úranger   r   r	   r   Úfrom_productr   Úassert_series_equalr   )r   Úlevelsr#   ÚresultÚexpectedr&   r&   r'   Útest_stack_mixed_level/   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sLt‚| ¡ }| ¡ }t 	||¡ d S )Nr,   r-   ç      @é   ©ÚxÚyr<   r=   )
r   r   ÚNaNÚlenÚ_mgrÚblocksÚAssertionErrorr   r   r4   )r   r    r#   Údf2Úresr7   r&   r&   r'   Útest_unstack_not_consolidatedF   s    
z2TestDataFrameReshape.test_unstack_not_consolidatedc           	      C   s”  t ddddgtjd�}t dddd	g¡|_|jd
d�}tdd
dgddd
gdœdddgtjd�}t 	||¡ |jdd�}tdddgdddgdœdddgt
d�}t 	||¡ tdddgdddgdddgdddgdœƒ dddg¡}|jddgdd�}d}|| }t dddg|j|d�}t ||¡ | ddg¡}|j |jj¡|_| tj¡}|j|j }t 	||¡ |d }|jddgdd�}|d }t 	||¡ d S )Nr,   r-   r:   é   ©Údtype©r<   r*   ©r<   r+   ©r=   r+   ©Úzr*   éÿÿÿÿ©Ú
fill_value©r*   r+   r<   r=   rM   ©r/   rH   ç      à?r*   r+   ÚjÚkr   )r<   r=   rM   Úw)rV   r+   rT   )r/   ÚnamerV   )r	   r   Úint16r   Úfrom_tuplesr/   r   r   r   r   ÚfloatÚ	set_indexr4   r   Zreorder_levelsÚnamesÚastypeÚint64Úloc)	r   Údatar6   r7   r#   r%   Úkeyr$   Úsr&   r&   r'   Útest_unstack_fillR   sJ    
ÿ  ÿ  ÿ$ÿþz&TestDataFrameReshape.test_unstack_fillc                 C   sr  ddgddgddgddgg}t |td	ƒtjd
�}t ddddg¡|_|jdd�}ddddgddddgddddgg}t |tdƒtjd�}t ddddg¡|_t	 
||¡ |d  tj¡|d< |d  tj¡|d< |jdd�}|d  tj¡|d< |d  tj¡|d< t	 
||¡ |jdd�}ddddgddddgddddgg}t |tdƒtd�}t ddddg¡|_t	 
||¡ d S )Nr,   r-   r)   r:   rF   é   é   é   ZAB)r0   rH   rI   rJ   rK   rL   rN   rO   ÚxyzrR   ©ÚAr*   )ri   r+   )ÚBr*   ©rj   r+   ri   rj   rS   )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 ddddg¡|_| ¡ }t|d tj	|d	 g|d
 |d tj	gdœdddgd�}t
 ||¡ |j|d d�}t|d |d |d	 g|d
 |d |d gdœdddgd�}t
 ||¡ d S )Nú
2012-01-01r:   ©ÚperiodsrI   rJ   rK   rL   r   r)   r,   r-   rQ   r<   r=   rM   r1   rO   )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 ddddg¡|_| ¡ }t|d tj|d	 g|d
 |d tjgdœdddgd�}t	 
||¡ |j|d
 d�}t|d |d
 |d	 g|d
 |d |d
 gdœdddgd�}t	 
||¡ d S )Nc                 S   s   g | ]}t |d �‘qS ))Údays)r
   )Ú.0Úir&   r&   r'   Ú
<listcomp>À   s     zJTestDataFrameReshape.test_unstack_fill_frame_timedelta.<locals>.<listcomp>r:   rI   rJ   rK   rL   r   r)   r,   r-   rQ   r<   r=   rM   r1   rO   )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 ddddg¡|_| ¡ }t|d	 d |d
 g|d |d d gdœdddgd�}t ||¡ |j|d d�}t|d	 |d |d
 g|d |d |d gdœdddgd�}t ||¡ d S )Nz2012-01z2012-02z2012-03z2012-04rI   rJ   rK   rL   r   r)   r,   r-   rQ   r<   r=   rM   r1   rO   )	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 ddddgdd�}t dddd	g¡|_| ¡ }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 5 Q R X |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 )Nr*   r+   ÚcÚcategoryrG   rI   rJ   rK   rL   ZaxaÚabc©Ú
categoriesZbcxrQ   rg   r1   z9Cannot setitem on a Categorical with a new category \(d\)r   ÚdrO   ZacaZbcc)r	   r   rY   r/   r   r   ru   ÚCategoricalrl   r   r   ÚpytestÚraisesÚ	TypeError)r   r`   r6   r7   r"   r&   r&   r'   Ú#test_unstack_fill_frame_categoricaló   s.    
ÿþûþûz8TestDataFrameReshape.test_unstack_fill_frame_categoricalc              	   C   sº   t jdddgdddggddgd	�}tdgd
 dgd
 dœ|d�}| d¡}tddddddgddddddgddddddggt jddddddgd dgd	�tdddgdd�d�}t ||¡ d S )Nr*   r+   r   r,   r-   r)   rh   rk   ©r\   é	   ©r„   Úer1   ©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:   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-   c           	      C   sl   t jddgddgddggddd	g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_valuesZexpected_indexZexpected_columnsr•   r#   r6   r7   r&   r&   r'   Ú*test_unstack_mixed_type_name_in_multiindex/  s    & ÿ
  ÿz?TestDataFrameReshape.test_unstack_mixed_type_name_in_multiindexc                 C   s   t dddgdddgtdddgƒ d¡tj d¡d	d
t d¡tdddgƒ d¡tdddgƒ d¡dtd	ddgƒ d¡dœƒ}dd„ }| ddg¡}||dƒ | ddg¡}||dƒ | ddg¡}||dƒ | d d!dg¡}||d!ƒ | d"d#g¡}||d"ƒ | ddg¡}|d# }||dƒ d S )$NZILÚMIZNCr*   r+   r   r€   r)   r,   r   Z20010102ç      ð?g      I@g      Y@Zfloat32r9   g      @g      @rn   FéÈ   i2 Zint8)Ústater/   Úsome_categoriesri   rj   r˜   ÚDÚEÚFÚGÚHc                 S   s&   |   |g¡}|   |¡}t ||¡ d S ©N©r   r   r   )r#   Zcolumn_nameZ
unstacked1Z
unstacked2r&   r&   r'   Úunstack_and_comparer  s    
zNTestDataFrameReshape.test_unstack_preserve_dtypes.<locals>.unstack_and_comparer�   r/   rž   r¡   r˜   r¢   rj   r    ri   )	r   r	   r]   r   ÚrandomZrandru   Ú	Timestampr[   )r   r#   r¦   Údf1rb   r&   r&   r'   Útest_unstack_preserve_dtypes`  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 ksªt‚t
 |jddgd�|jdd�jdd�¡ d S )Nr)   ©Úrepeaté   é   ©r0   r,   r-   ©ÚleveléþÿÿÿrN   T)Zinplace)r   rY   rl   Ú	itertoolsÚproductr2   r   r   r§   Úrandnr   r   r   r   r0   Z	set_namesrB   )r   r0   r#   Zdf_namedZreturn_valuer&   r&   r'   Útest_stack_intsŠ  s    ( ÿ ÿz$TestDataFrameReshape.test_stack_intsc              	   C   s  t jddddgdddgd�}ttj d	d	¡|d
�}|jddgd�}|jddgd�}| ¡ }dddg|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 5 Q R X | ¡ }dddg|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,   F©Zcheck_nameszSlevel should contain all level names or all level numbers, not a mixture of the twor   r   )r   rY   r   r   r§   rµ   r   r   r0   r\   r   r   r†   r‡   Ú
ValueError)r   r0   r#   Úanimal_hair_stackedÚexp_hair_stackedrC   r"   Údf3r&   r&   r'   Útest_stack_mixed_levels›  sD    üù	  ÿ  ÿÿ  ÿz,TestDataFrameReshape.test_stack_mixed_levelsc                 C   s:  t jddddgdddgd�}ttj d	d	¡|d
�}|jddgd�}|jddgd�}|jddgd�}| ¡ }dddg|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ddg|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¯   r°   r   r,   r-   FrÂ   )r   rY   r   r   r§   rµ   r   r   r0   r\   r   r   )r   r0   r#   Zexp_animal_stackedrÄ   rÅ   rC   rÆ   r&   r&   r'   Útest_stack_int_level_namesÇ  s\    üù	  ÿ  ÿ  ÿ  ÿ  ÿ  ÿ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   ÚarrayÚnanÚ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ddddgddddgddddggd	d
dgd�}td|d�}| ddg¡ d¡}t ddgddggddddgddddggd	d
gd�}ttjtjdgdtjgtjdgdtjggtjd�|t	ddgdd�d�}t
 ||¡ d S )Nr   r   ÚoneÚtwor*   r+   r   r,   ÚfirstÚsecondÚthird©r5   Úcodesr\   r1   r-   rG   r’   r.   )r   r	   r   r   r   r   rÌ   rÍ   rn   r   r   r   )r   Úmirb   r6   Zexpected_mir7   r&   r&   r'   Útest_unstack_level_bindingþ  s*     ýý" ÿûz/TestDataFrameReshape.test_unstack_level_bindingc           	   	   C   sî   |  ¡ }t|tƒst‚|  ¡ j}t ||¡ tddtj	gddtj	gdœƒ}t
dddgƒ|_|  ¡ }td	d
gdddggddddddgddddddg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   ©r5   rØ   r)   r1   )r   Ú
isinstancer	   rB   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_series  s"    
þ
z+TestDataFrameReshape.test_unstack_to_seriesc                 C   s°  ddddgddddgddddgddddg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ddddgddddggdd�d�}t ||¡ | d	d
g¡}d|d< | 	d
¡}|j}tt d¡gd t d¡gd  t
jddddgddddggdd�d�}t ||¡ d|d< | 	d
¡}|j}tt d¡gd t d¡gd  t
jddddgddddggdd�d�}t ||¡ d S )Nr,   r)   r:   r-   ZABCDr¯   r^   r1   ri   rj   r˜   rŸ   )Nrj   rŠ   r9   rn   r   rÎ   )r   rl   Údtypesr	   r   rH   r   r4   r[   r   r   rË   )r   ro   r#   r6   r7   rC   rÆ   r&   r&   r'   Útest_unstack_dtypes3  sN    ,
 ÿþ
 ÿþ
 ÿþ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žt‚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   rB   r   r   )r   r   r„   r#   ÚrightÚleftr&   r&   r'   Útest_unstack_dtypes_mixed_date`  s    	
üÿ	z3TestDataFrameReshape.test_unstack_dtypes_mixed_datec              	   C   sx   t jddgddgd�}tddg|d�}d}tjt|d	�� | d¡ W 5 Q R X tjt|d	�� |j d¡ W 5 Q R X d S )
NrQ   )r   r„   Úc1rŠ   r,   r-   r1   z5The name c1 occurs multiple times, use a level numberr   )	r   rY   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   s`  t  dgddddgg¡d d… }tddggd	 |d
�}| ¡ }t  ddgdddgg¡}tddddddggdg|d�}t ||¡ |jjd |jd k ¡ sžt	‚dddgdddd	gg}ddddgddddg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\t	‚d S )Nr*   ri   rj   r˜   rŸ   rN   r,   r   r)   r1   r.   re   r-   r:   ©Úaxisr¯   )r   r3   r   r   r   r   r0   r5   ÚallrB   r   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‹   rf   é   r*   é   é   c                 C   s²   dddgddddgg}dd	ddgddd	dg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 )Nr*   r-   r   r,   r)   rF   re   r   rN   rf   r:   r1   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 dddgdddggddd	gd
�}|jddd	g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 )NiÚ  r*   ÚIiÛ  r+   ZIIri   rj   r˜   r¯   F)Zdropr   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dddddddggddddd	d
dgd�d�}| dddd	d
dg¡}t dggtjdddddddggddddd	d
dgd�tdgdd�d�}t ||¡ d S )Nr,   r   rè   rŠ   Úi1Úi2Úi3Úi4Zi5Úi6Úi7r“   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   s~   t ddgddggtjddgddggddgd�tjdd	d
gdd	dggdddgd�d�}| ddg¡jjdd … ddgkszt‚d S )Nç        rj   r˜   rŸ   rè   Úc2rŠ   râ   é   r­   é(   rý   rþ   rÿ   r“   r²   )r   r   rY   r   r0   r\   rB   ©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 d	d
dgdddgg¡tjdddgdddgdddgdddggdddgd�d�}| ddg¡}| dg¡ dg¡}t ||¡ d S )Nr,   r-   r)   r:   rN   r²   éýÿÿÿéüÿÿÿr*   r+   r   r„   r�   ÚfÚm1ZP3éÞ   ZA5éo   Úm2rý   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   s0  dd„ }t ddtjdgdddd	gd
dddgdœƒ}| ddg¡ ¡ d }| ddg¡ ¡ d j}t ||¡ | t|ƒ¡}|j|d�}| 	¡ j
 ¡ t|ƒks t‚dd„ }	|d  	¡ j
 ¡ \}
}t|
|ƒD ]b\}}t|d j||f  d¡ƒ}|	|d j| ƒ|	|d j| ƒ }tt||ƒƒ}||ksÈt‚qÈd S )Nc                 S   s   | | krdn| }|d›S ©NÚ Ú1r&   ©ÚvalZval_strr&   r&   r'   Úcast  s    z:TestDataFrameReshape.test_unstack_nan_index1.<locals>.castr*   r+   r„   rV   r<   r=   rM   za.wzb.xz .yzd.z)r  r  Újolier  r  r  r°   c                 S   s   t | tƒrt| ƒS | gS r¤   ©rÜ   Útuplerl   ©r*   r&   r&   r'   Ú<lambda>  ó    z>TestDataFrameReshape.test_unstack_nan_index1.<locals>.<lambda>Ú.)r   r   rÍ   r[   r   r   r   r   rl   Únotnart   Úsumr?   rB   ÚnonzeroÚzipÚsortedrä   Úsplitr/   r0   Úmap)r   r•   r  r  r#   ræ   rå   rÙ   ÚudfÚmk_listro   rö   rz   rT   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  ddddddddddddddddddd d!gd"œƒ}|j‡ fd#d$„d%d&�|j‡ fd'd$„d%d&� |d(< |d)< | t|ƒ¡}|j|d*�}| ¡ j 	¡ dt
|ƒ k�s2t‚d+d$„ }||  ¡ j ¡ \}}	t||	ƒD ]f\}
}t|| j|
|f  d,¡ƒ}||| j|
 ƒ||| j| ƒ }ttˆ |ƒƒ}||k�sZt‚�qZd S )-Nc                 S   s   | | krdn| }|d›S r  r&   r  r&   r&   r'   r  !  s    zATestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.castr„   r)   rF   r*   r-   r   r�   r+   r=   rV   rM   r:   r<   éC   é'   é5   éH   é9   éP   é   rô   rñ   r­   é;   é2   é>   éL   é4   é   é<   é3   )r.  r/  r0  c                    s   d  tˆ | ƒ¡S )Nr#  )Újoinr*  ©Úr©r  r&   r'   r!  N  r"  zETestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.<lambda>r,   rê   c                    s   d  tˆ | jd d d… ƒ¡S )Nr#  rN   )rB  r*  rä   rC  rE  r&   r'   r!  O  r"  r1  r2  r°   c                 S   s   t | tƒrt| ƒS | gS r¤   r  r   r&   r&   r'   r!  U  r"  r#  )r   r   rÍ   Úapplyr[   rl   r   r$  rt   r%  r?   rB   r&  r'  r(  rä   r)  r/   r0   r*  )r   r•   r  rÊ   r#   rÙ   r+  r,  ro   rö   rz   rT   ræ   rå   r&   rE  r'   Útest_unstack_nan_index_repeats  s|    
ÿþýüûÿ
þý
üû
úìòÿ)þ $z3TestDataFrameReshape.test_unstack_nan_index_repeatsc              	   C   sr  t tdƒtdƒtdƒdœƒ}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œƒ}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œƒ}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   ©ri   rj   r˜   ©r)   r,   ri   rj   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]  sN    þ  ÿ$&  ÿ$&  ÿ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ddddddgddddddggd d
gd�}t |||d�}|rú|jddddg }||  |d j¡||< t ||¡ d S )NZ
aaaaabbbbbrq   rF   rr   r-   râ   rH  rI  ri   rj   r)   r   r,   r:   rd   re   rf   r‹   r*   r+   r’   r˜   rN   r×   r“   )r   rl   r   Útolistr   r   r>   rä   r[   r   rÌ   rÍ   r   r   r0   r]   rH   r   r   )r   r    r#   ræ   rJ  r•   rö   rå   r&   r&   r'   Útest_unstack_nan_index3ˆ  s(    ýÿ*ýz,TestDataFrameReshape.test_unstack_nan_index3c              	   C   sV  dt jt jdgddt jdgddt jdgddd	d
gddd	d
gddd	d
gg}t|ddddgddddddgd�}| ¡  dddg¡ ¡ }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dddddggdddddgdddddggd dgd�}t|||d�}t ||¡ |j	dd …  ¡  dddg¡}t | ¡ |¡ d S )NZHgi¼ç�(ÚUr  ZPbg¢	VÍZ§Ý>ZSngº@¹ÕÂø>gÌ]KÈ=‹?i)=‘(ZAgga2U0*©#¿ZagentZchangeZdosageZs_idioC  ipC  iqC  irC  isC  itC  r“   r   r,   rN   r×   r-   r)   r:   )
r   rÍ   r   r   r[   r   r   r   r   r_   )r   rJ  r#   ræ   r•   rö   rå   r&   r&   r'   Útest_unstack_nan_index4¤  s<    


ú
ýþýýz,TestDataFrameReshape.test_unstack_nan_index4c                 C   s  t ddddddgtdddd�dt d¡ tj d¡d  d¡d	œƒ}|d
 t d¡ |d< tj	 |j
d< |j
d< tj	 |j
d< |j
d< | dd
dg¡ d
dg¡}| ¡ j ¡ dt|ƒ ks¾t‚dD ]F}| ¡ D ]8\}}|d ||d
 |d ff}|| |j
| ksÎt‚qÎqÂd S )Nr,   r-   z
2014-02-01rd   rŸ   )rs   Úfreqéd   râ   )r.  r/  r  r  r/  z
2014-02-02r0  )r,   r/  )r)   r/  )r,   r0  )r:   r0  r.  r  )r   r   r   r   r§   rµ   Úroundru   r¨   rÍ   r_   r[   r   r$  rt   r%  r?   rB   Ziterrows)r   r#   ræ   rÊ   rÞ   rD  ra   r&   r&   r'   Útest_unstack_nan_index5Í  s     üÿ	z,TestDataFrameReshape.test_unstack_nan_index5c                 C   sz   t dddƒ}tddddgt |ddfg¡d�}| ¡ }t d	d
g¡}t |dfg¡}tddddg||d�}t ||¡ d S )NiÞ  r,   r-   r)   r:   ri   rj   r¯   )r   r,   r-   r)   )rj   r.   )r   r   r   rY   r   r3   r   r   )r   Útr#   r6   ZeidxZecolsr7   r&   r&   r'   Ú%test_stack_datetime_column_multiIndexä  s    "z:TestDataFrameReshape.test_stack_datetime_column_multiIndexÚmultiindex_columnsr±   rN   c                 C   sä   t jdddddgddgd�}|| }tt d	t|ƒ ¡ d	t|ƒ¡|d
�}|j|dd�}t|t	ƒr”|j|dd�}t|t
ƒrˆt ||¡ nt ||¡ t j|j ¡ |jjd�|_|j|dd�}t|t
ƒrÔt ||¡ nt ||¡ d S )N©rj   r<   ©rj   rM   ©ri   r=   ©r˜   r<   ©r˜   ÚuÚUpperÚLowerrŠ   r)   r¯   F)r±   ÚdropnaT)r   rY   r   r   r   r?   r   r   rÜ   Úintr	   r   r4   r   r0   Úto_numpyr\   )r   rV  r±   Úfull_multiindexZ
multiindexr#   r6   r7   r&   r&   r'   Útest_stack_partial_multiIndexï  s.    þþ

 ÿ
z2TestDataFrameReshape.test_stack_partial_multiIndexc              	   C   sÜ   t jdddddgddgd�}tt d	¡ d
d¡|dddg d�}|jdd�}tdd
gdtjgddgdtjggt ddgddddggddddgddddggd dgd�tddgdd�d�}|d  	|j
d ¡|d< t ||¡ d S )NrW  rX  rY  rZ  r[  r]  r^  rŠ   rd   r-   r)   r   r,   r¯   F©r_  rF   r:   r\  r<   r=   rM   r×   rj   r˜   r’   r.   )r   rY   r   r   r   r   r   rÍ   r   r]   rà   r   r   )r   rb  r#   r6   r7   r&   r&   r'   Útest_stack_full_multiIndex*  s"    þ$ýù	z/TestDataFrameReshape.test_stack_full_multiIndexÚorderedFTÚlabelsZyxzZyxyc                 C   sb   t j|tdƒ|d�}tdddgg|d�}| ¡ }t |j|g¡}tdddg|d�}t	 
||¡ d S )Nrg   ©rƒ   rf  râ   rñ   rò   r¯   r1   )ru   ÚCategoricalIndexrl   r   r   r   r3   r/   r	   r   r4   )r   rf  rg  Úcidxr#   r6   rÝ   r7   r&   r&   r'   Ú%test_stack_preserve_categorical_dtype>  s    z:TestDataFrameReshape.test_stack_preserve_categorical_dtypezlabels,datarg   r?  Zzyxc                 C   s�   t j|t|ƒ|d�}t jddg|d�}t ||g¡}tt|ƒg|d�}| ddg¡}t jt|ƒ|d�}	t|t dg|	|g¡d�}
t 	||
¡ d S )	Nrh  r\  Úv)rf  r¯   r   r,   r1   )
ru   ri  r(  r   r3   r   r   r	   r   r4   )r   rf  rg  r`   rj  Zcidx2rÝ   r#   r6   Zs_cidxr7   r&   r&   r'   Ú+test_stack_multi_preserve_categorical_dtypeM  s    
z@TestDataFrameReshape.test_stack_multi_preserve_categorical_dtypec                 C   st   t  ddddg¡}t||dœƒ}| ¡ }t ddddgd	d
gg¡}tt  ddddddddg¡|d�}t ||¡ d S )Nr*   r+   r   ©ri   rj   r   r,   r-   r)   ri   rj   r1   )	ru   r…   r   r   r   r3   r	   r   r4   )r   r¸   r#   r6   r/   r7   r&   r&   r'   Ú,test_stack_preserve_categorical_dtype_valuesb  s     ÿzATestDataFrameReshape.test_stack_preserve_categorical_dtype_valueszindex, columnsr+   c           	      C   st   t ||d� d¡}| ¡ }t |j ¡ ¡}t | ¡ ||jd�}t 	||¡ t
 |jj¡}t
 |j¡}t ||¡ d S )Nr.   r,   )r   Úfillnar   r   rY   r/   ra  r0   r   r   r   ZasarrayrØ   Zassert_numpy_array_equal)	r   r/   r0   r#   r$   Ú	new_indexr7   Zstacked_codesZexpected_codesr&   r&   r'   Ú)test_stack_multi_columns_non_unique_indexm  s    
  ÿz>TestDataFrameReshape.test_stack_multi_columns_non_unique_indexc                 C   s®   t jdddgddgd�}ttjddd gd	d
�t dddg¡dœ|d�}|j|d�}| t¡j|d�}t	|j
jgd |jjgd  |jd�}t |j|¡ t | t¡|¡ d S )N)ri   r   ©ri   r,   )rj   r,   r*   r+   rŠ   r   r,   ZInt64rG   rn  r1   r°   r-   )r   rY   r   ru   rÌ   r…   r   r]   rÎ   r	   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d	dddggt jddddgddgd�d�}d|j_| ¡ jdd�j	d|d�}t
 ||¡ d S )Nr   r„   r   r   ru  rŠ   r-   r,   r)   rj   ri   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(   r8   rE   rc   rp   rw   r}   r~   r‰   r–   r†   ÚmarkÚ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   r-  r³   ÚpermutationsrG  rK  rM  rO  rS  rU  rc  re  rk  rm  ro  r3   rr  rt  rx  r&   r&   r&   r'   r      s  /%#*
 ÿ
þú&ø
õüôþ"
*,)-þþ

**þþ

=+)



ëþ þþ   ýþ

r   c                  C   s    t ddddgdd�} t dddd	g¡| _|  ¡ }tdtjdgddtjgd
œtdƒd�}t	 
||¡ | jdd�}tdddgdddgd
œtdƒd�}t	 
||¡ d S )Nr*   r+   r   rÎ   rG   rI   rJ   rK   rL   rQ   rg   r1   r„   rO   )r	   r   rY   r/   r   r   r   rÍ   rl   r   r   )r`   r6   r7   r&   r&   r'   Útest_unstack_fill_frame_object©  s     
ÿ ÿ ÿr  c                  C   sž   t tjddd�gdgdgdgdœddddg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_values¿  s&    ü
ù	ýý	rƒ  c                  C   sn   t ddddd�} td| iddd	gd
�}| ¡ }t| tddd	gdggdddgdddggd�d
�}t ||¡ d S )NrŸ   Z20180101Z20180103zAmerica/New_York)rP  ÚstartÚendr�  ri   r*   r+   r   r1   r   r,   r-   rÛ   )r   r   r   r	   r   r   r4   )Útsr#   r6   r7   r&   r&   r'   Ú test_stack_timezone_aware_values×  s    &þr‡  r_  TFc                 C   s@   t tg g gg g gƒtjd�}ttjd�j| d�}t ||¡ d S )NrR   rG   rd  )r	   r   r   rn   r   r   r   r4   )r_  r7   r6   r&   r&   r'   Útest_stack_empty_frameã  s    rˆ  rP   c                 C   s8   t tjd�j| d�j|d�}t tjd�}t ||¡ d S )NrG   rd  rO   )r   r   r^   r   r   r   r   )r_  rP   r6   r7   r&   r&   r'   Útest_stack_unstack_empty_frameë  s    ÿr‰  c               	   C   s2   d} t jt| d�� ttjd� ¡  W 5 Q R X 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
œƒ} |  ddddg¡} | jdgdd�} | jddd�jddd�}| jddgdd�}t ddddgddddggtddgdd�tjddddgd dddgd�d�}t ||¡ d S )NZAliceZBobg      #@rf   FTr   ÚfemaleÚmale)rW   ÚscoreÚemployedÚkidsÚgenderrW   rŽ  r�  r�  rO   r  g       @r’   )r�  r‹  Fr   )r�  r‹  Tr   )r�  rŒ  Fr   )r�  rŒ  Tr   rŠ   r.   )r   r[   r   r   r   rY   r   r   )r#   r7   r6   r&   r&   r'   Útest_unstacking_multi_index_dfý  s2    ûÿ	ü
ùýr‘  c                  C   s†   t jddgddgd�} tddddgg| 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=   rM   r*   rŠ   r,   r¯   r   r=   rM   r’   )r   r<   )r   r=   r.   )r   r3   r   r   r   rY   r   r   )r0   r#   r6   Znew_columnsrq  r7   r&   r&   r'   Ú2test_stack_positional_level_duplicate_column_names  s    
r’  c                    sž   t  tdƒdddgg¡}ttj dd¡|d�‰ ˆ d  tj¡ˆ d< | s`t	d	d
„ ˆ j
jD ƒƒs`t‚ˆ  ¡ }tj‡ fdd„tdƒD ƒtdƒdd�}t ||¡ d S )NrF   ri   rj   r˜   ró   r:   r1   r,   c                 s   s   | ]}|j j V  qd S r¤   )Zmgr_locsZis_slice_like©ry   r<   r&   r&   r'   Ú	<genexpr>0  s     z5test_unstack_non_slice_like_blocks.<locals>.<genexpr>c                    s   g | ]}ˆ |   ¡ ‘qS r&   )r   )ry   Ún©r#   r&   r'   r{   4  s     z6test_unstack_non_slice_like_blocks.<locals>.<listcomp>)Úkeysrë   )r   r3   r2   r   r   r§   rµ   r]   r^   Úanyr@   rA   rB   r   ru   Úconcatr   r   )r    rÙ   rD   r7   r&   r–  r'   Ú"test_unstack_non_slice_like_blocks)  s    &rš  c                   @   s6  e Zd Zdd„ Zej dddddddgddddddggdd	d
dddgdddddgfdddddgdddddggdd	d
ddgddddgfdddddgdddddggdd	d
ddgddddgfg¡dd„ ƒZdd„ Zdd„ Z	ej de
dƒdddgeddgdddgge e d¡ d¡d¡e e d¡d¡gd�ge
dƒdddgeddgddgge e d¡ d¡d¡e dddgd¡gd�ge d¡dddgeddgddgddgge e d¡ d¡d¡e dddgdd dg¡e dddgd¡gd�gg¡d!d"„ ƒZd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zej d+d,d-g¡d.d/„ ƒZd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Zd<d=„ Zd>d?„ Zd@dA„ ZdBdC„ Z dDdE„ Z!dFdG„ Z"ejj#dHdI„ ƒZ$ej dJe%j& 'dKdL„ dMD ƒ¡¡ej dNe(dƒ¡dOdP„ ƒƒZ)dQdR„ Z*dSdT„ Z+dUdV„ Z,dWdX„ Z-dYdZ„ Z.d[d\„ Z/d]d^„ Z0d_d`„ Z1dadb„ Z2dcdd„ Z3dedf„ Z4dgdh„ Z5dS )iÚ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_unstack9  s
    z'TestStackUnstackMultiLevel.test_unstackz5result_rows,result_columns,index_product,expected_rowr,   Ng      >@r-   Úix1Úix2Zcol1Zcol2Zcol3Zcol4c                 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_partialF  s    ÿ ÿûz/TestStackUnstackMultiLevel.test_unstack_partialc                 C   sR   t  ddddg¡}ttj d¡|d�}| ddg¡}|jdd	d
�}t 	||¡ d S )N)r   r   r   )r   r   r   )r,   ru  r,   )r,   Zquxr,   r:   r1   r,   r-   rì   ©rë   Úhow)
r   rY   r	   r   r§   rµ   r   r_  r   r   )r   r/   rb   r%   r7   r&   r&   r'   Ú&test_unstack_multiple_no_empty_columnsq  s    
ÿzATestStackUnstackMultiLevel.test_unstack_multiple_no_empty_columnsc           
      C   sî  |}|  ¡ }| ¡ }t ||¡ |jdd�}|  d¡}| ¡ }t |jdd�|¡ |d d d… }|  d¡}| ¡  dd¡}t |jdd�|¡ | dd¡}|  d¡jdddd�}| d¡ dd¡}t |jdd�|¡ |  ¡ }|jddd�}| ¡ }t ||¡ |  d¡  d¡}| d¡}|  ¡ }t ||¡ | d¡}|  d¡}t ||¡ | d¡}| ¡   d¡  d¡}t ||¡ |  d¡jd d …d d d	…f }| ¡  ¡ }| ¡ }	t ||	 |j	¡¡ |  d¡ d
¡}|  d¡ d¡}t 
||¡ d S )Nr-   r°   r   rN   r,   rê   F)rë   Z	ascendingr)   r²   )r   r   r   r   rw  rv  r_   r4   Úreindexr/   Zassert_equal)
r   r�  rž  r%   Ú	restackedZunlexsortedr6   r7   r$   Zymd_stackedr&   r&   r'   Ú
test_stack|  sJ    





z%TestStackUnstackMultiLevel.test_stackzidx, columns, exp_idxÚababr.  r/  r0  r*   r+   r)   r:   rÛ   r   ))r*   r-   )r+   r,   )r*   r,   )r+   r-   rd   c           	      C   sp   t t d¡ dd¡||d�}| ¡ }tt d¡|d�}t ||¡ |jj	dksRt
‚|j|j }}t ||¡ d S )Nrò   r:   r)   r.   r1   F)r   r   r   r   r   r	   r   r4   r/   Z	is_uniquerB   Úassert_index_equal)	r   r•   r0   Zexp_idxr#   r6   r7   ZliÚrir&   r&   r'   Útest_stack_duplicate_index´  s    &ýz5TestStackUnstackMultiLevel.test_stack_duplicate_indexc                 C   s@   d}t  t|ƒ¡ dddg¡}| d¡}| ¡ }t ||¡ d S )Na  day,time,smoker,sum,len
Fri,Dinner,No,8.25,3.
Fri,Dinner,Yes,27.03,9
Fri,Lunch,No,3.0,1
Fri,Lunch,Yes,13.68,6
Sat,Dinner,No,139.63,45
Sat,Dinner,Yes,120.77,42
Sun,Dinner,No,180.57,57
Sun,Dinner,Yes,66.82,19
Thu,Dinner,No,3.0,1
Thu,Lunch,No,117.32,44
Thu,Lunch,Yes,51.51,17ÚdayÚtimeZsmokerr-   )ru   Zread_csvr   r[   r   r   r   r   )r   r`   r#   r6   Úreconsr&   r&   r'   Útest_unstack_odd_failureæ  s
    
z3TestStackUnstackMultiLevel.test_unstack_odd_failurec                 C   sr   |}|j }d|d< |jddd�}| ¡ }|d  ¡  ¡ }tj|d |dd� |jd ksZt‚|d jtj	ksnt‚d S )Nr   )r   Úfourr,   )r±   rë   FrÂ   r   )
r   rw  r   r   r4   rW   rB   rH   r   Zfloat_)r   Ú multiindex_dataframe_random_dataÚframer#   r$   r6   r&   r&   r'   Útest_stack_mixed_dtypeü  s    z1TestStackUnstackMultiLevel.test_stack_mixed_dtypec              
   C   s�   t ddddddgddddddgddddddgd	d	d
d
d
dgt d¡dœƒ}| ddddg¡ t¡}| ¡ }| ¡ }t 	|| 
|j¡ t¡¡ d S )NZnaiveZactiver*   r+   r,   r-   r)   r:   ÚhiZbyeZpeaceg      @)r�   r¿   Úbarcoderl  Úextrar�   r¿   r¶  rl  )r   r   r   ÚgroupbyrF  r?   r   r   r   r4   r¦  r/   r]   rZ   )r   r#   r6   r%   r§  r&   r&   r'   Útest_unstack_bug	  s    ûÿ
z+TestStackUnstackMultiLevel.test_unstack_bugc                 C   sP   |}|  ¡ }|jjdkst‚|jjddgks0t‚| ¡ }|jj|jjksLt‚d S )NrÔ   r¿   rÕ   )r   r/   rW   rB   r0   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 }tjtdd�� t||ƒdƒ W 5 Q R X |dkrx|jd d …df }tjtdd�� t||ƒdƒ W 5 Q R X d S )Nr   zdoes not match index namer   Zmistaker   r   )r_   r†   r‡   ÚKeyErrorÚgetattrrä   )r   r»  r²  r³  r#   rb   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Õ   r,   r°   r¥   )r   r²  r³  r6   r7   r&   r&   r'   Útest_unstack_level_name7  s    
z2TestStackUnstackMultiLevel.test_unstack_level_namec                 C   sT   |}|  d¡}| d¡}|  ¡  d¡}t ||¡ | d¡}| ¡ }t ||¡ d S )NrÕ   r¿   r   )r   r   r   r   r4   )r   r²  r³  r%   r6   r7   r&   r&   r'   Útest_stack_level_name>  s    


z0TestStackUnstackMultiLevel.test_stack_level_namec                 C   s2  |}|  ddg¡}|  d¡  d¡}t ||¡ |jj|jjksBt‚|d }|  ddg¡}t ||d ¡ | ddg¡}| dd¡ dd¡}|jdd�}t ||¡ |j	j|j	jks¶t‚|  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   r0   r\   rB   r   rv  rw  r/   r_  r_   )r   r�  rž  r%   r7   rb   Zs_unstackedr§  r&   r&   r'   Útest_stack_unstack_multipleJ  s&    z6TestStackUnstackMultiLevel.test_stack_unstack_multiplec              	   C   s>   |}|  ddg¡}tjtdd�� | ddg¡ W 5 Q R X d S )NrÁ  rÂ  zlevel should containr   r   )r   r†   r‡   rÃ   r   rœ  r&   r&   r'   Útest_stack_names_and_numbersi  s    z7TestStackUnstackMultiLevel.test_stack_names_and_numbersc              	   C   sf   |}|  ddg¡}tjtdd�� | ddg¡ W 5 Q R X tjtdd�� | dd	g¡ W 5 Q R X d S )
NrÁ  rÂ  zToo many levelsr   r-   r)   znot a valid level numberr  r  )r   r†   r‡   Ú
IndexErrorr   rœ  r&   r&   r'   Ú!test_stack_multiple_out_of_boundst  s    z<TestStackUnstackMultiLevel.test_stack_multiple_out_of_boundsc              	   C   s   t jddddddgddd�}tddgd	 d
d�}ddd	dddg}t ||g¡}t||d�}| ¡ }|jdd�}|jdd�}t jdddgddd�}	tdd	dgdddgdœ|	ddgd�}
d
|
j_	t
 ||
¡ t
 ||
¡ t
 ||
j¡ t jddddddgddd�}t jddddddgddd�}t ||g¡}t||d�}| ¡ }|jdd�}|jdd�}t jdddgddd�}	t jddddddg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 )Nz2013-01z2013-02z2013-03ÚMZperiod©rP  rW   ri   rj   r)   Ústrr’   r,   r-   r:   rF   rd   r1   r°   r   rn  r.   Úperiod1ú2013-12z2013-11ú2013-10z2013-09z2013-08z2013-07Úperiod2)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�  s|    ý  ÿ  ÿýý  ÿýýù
z5TestStackUnstackMultiLevel.test_unstack_period_seriesc                 C   s”  t jddddddgddd�}t jddddddgddd�}d	d
ddddgddddd
d	gdœ}t ||g¡}t||d�}| ¡ }|jd	d�}|jdd�}t jddgddd�}	t jddddddgddd�}
t d ¡ |
g¡}tdd	dd
dd	gdd
ddddgg|	|d�}t ||¡ t ||¡ t jddddgddd�}	t jdddgddd�}
t d ¡ |	g¡}tddd
dgd	d
ddgddd	dgg|
|d�}t ||¡ d S )Nz2014-01z2014-02rÇ  rÊ  rÈ  rË  rÌ  rÍ  r,   r-   r)   r:   rF   rd   rn  r1   r°   r   zA A A B B Br.   zA A B B)	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Æ  s^    ýý"ý  ÿ
  ÿ  ÿ   ÿz4TestStackUnstackMultiLevel.test_unstack_period_framec              	   C   sð   dgd dgd  }dgd dgd  }t  dddgd ¡}tj d	d
d¡}t||||dœƒ}| ddg¡}d|j_| 	d¡}d}t
jt|d�� | d¡ ¡ }	W 5 Q R X |	 d¡}
|jd d …dgf  d¡ ¡  d¡}d|j_t
 |
|¡ d S )Nr,   r)   r-   r*   r+   z
2013-01-03z
2013-01-04z
2013-01-05r   rQ  rd   )ÚIDÚNAMEÚDATEÚVAR1rÚ  rØ  ZParamsz!The default value of numeric_onlyr   zW-THUrÛ  )ru   Úto_datetimer   r§   Úrandintr   r[   r0   rW   r   r   r   r   ZresampleZmeanr   r_   r   )r   Zid_colrW   ÚdateZvar1r#   ÚmultiZunstr"   ZdownrÏ   rÐ   r&   r&   r'   Útest_stack_multiple_bugõ  s    

$z2TestStackUnstackMultiLevel.test_stack_multiple_bugc                 C   sv   t ddgddgddgdœƒ}| ddg¡}| ¡ jd	d
�}t|ƒt| ¡ ƒksRt‚| ¡ jdd
�}t || ¡ ¡ d S )NÚa1Úa2Úb1Úb2r,   rH  ri   rj   Frd  T)	r   r[   r   r   r?   r_  rB   r   r   )r   r#   r$   r&   r&   r'   Útest_stack_dropna	  s    z,TestStackUnstackMultiLevel.test_stack_dropnac                 C   s‚   t ddddddddgddddddddgddddddddggddddgddddggd�}dddg|j_ddg|j_| ddg¡ d S )	Nr   r,   r.   r*   r+   r   r„   r�   )r   r/   r\   r0   r   r	  r&   r&   r'   Ú"test_unstack_multiple_hierarchical  s    ýú	z=TestStackUnstackMultiLevel.test_unstack_multiple_hierarchicalc              	   C   s„   d}t tjjd|d�tjjd|d�tjjdd|d�tjjdd|d�tjjd	|d�tj |¡d
œƒ}| dddddg¡}| d¡ d S )Néè  rQ  )Úsizei,  iùÿÿÿre   iíÿÿÿé   i¸  )ri   rj   r˜   rŸ   r    r¡   ri   rj   r˜   rŸ   r    )r   r   r§   rÝ  rµ   r[   r   )r   ZNUM_ROWSr#   Zidfr&   r&   r'   Útest_unstack_sparse_keyspace$  s    
úÿz7TestStackUnstackMultiLevel.test_unstack_sparse_keyspacec                 C   s~   ddgddddgg}ddddgddddgg}t ||ƒ}ttj dd¡|d�}| ¡ }t|jƒdksft‚| 	¡ }t
 ||¡ d S )Nr   r,   r-   r)   r:   r1   )r   r   r   r§   rµ   r   r?   r0   rB   r   r   r   )r   r5   rØ   r/   r#   r6   r¯  r&   r&   r'   Útest_unstack_unobserved_keys9  s    
z7TestStackUnstackMultiLevel.test_unstack_unobserved_keysc                 C   sž   G dd„ dt jƒ}| ¡ �z}| t d|¡ ttj dd¡t d¡t d¡gd�}d}t	j
t|d��( tjtd	d�� | ¡  W 5 Q R X W 5 Q R X W 5 Q R X 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||Ž tdƒ‚d S )NúDon't compute final result.)ÚsuperÚ__init__Ú	Exception)r   ÚargsÚkwargs©Ú	__class__r&   r'   rï  N  s    zjTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32.<locals>.MockUnstacker.__init__)ry  rz  r{  rï  Ú__classcell__r&   r&   ró  r'   ÚMockUnstackerM  s   rö  Ú
_Unstackeri   r-   r1   z$The following operation may generater   rí  )Úreshape_libr÷  ÚcontextÚsetattrr   r   r§   rµ   r   r   r   r   r†   r‡   rð  r   )r   Zmonkeypatchrö  Úmr#   r"   r&   r&   r'   Ú/test_unstack_number_of_levels_larger_than_int32H  s    
þzJTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32r5   c                 c   s*   | ]"}t jt  d ddg|¡dd�V  qdS )r   r,   r-   r«   N)r³   r´   r~  )ry   Úwidthr&   r&   r'   r”  `  s   ÿz$TestStackUnstackMultiLevel.<genexpr>r—   Ú	stack_levc                    s`   t |ddddgddddggd�}t|tdƒgd�‰ ˆ  ˆ¡‰t‡ ‡‡fdd„ˆ jD ƒƒs\t‚d S )Nr   r,   rÛ   r:   )r0   r`   c                 3   sF   | ]>}ˆ j D ]2}ˆ j||f ˆj||ˆ f|d ˆ  f kV  qqdS )r,   N)r0   r_   ©ry   ÚrowrÊ   ©r#   Z
df_stackedrþ  r&   r'   r”  l  s    ýÿzSTestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels.<locals>.<genexpr>)r   r   r2   r   rì   r/   rB   )r   r5   rþ  r0   r&   r  r'   Ú%test_stack_order_with_unsorted_levels^  s     
ýz@TestStackUnstackMultiLevel.test_stack_order_with_unsorted_levelsc                    s€   t dddgdddg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|t‚d S )Nri   r˜   rj   r)   rÛ   rF   rN   )r0   r/   r`   c                 3   sH   | ]@}ˆ j D ]4}ˆ j||f ˆ  d ¡j||d  f|d f kV  qqdS )r   r,   N)r0   r_   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/   rB   )r   rÙ   r&   r–  r'   Ú/test_stack_order_with_unsorted_levels_multi_rows  s    þ  ÿþzJTestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels_multi_rowc                 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�}| ddg¡ ddg¡}tddgddgddgddgddggdd
dddg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{   ‰  s     zVTestStackUnstackMultiLevel.test_stack_unstack_unordered_multiindex.<locals>.<listcomp>c                 S   s   g | ]}d |› �‘qS r   r&   r“  r&   r&   r'   r{   Š  s     r+   r*   r¯   rÔ   r<   r,   rê   rÕ   Za0Zb0rá  rã  râ  rä  Úa3Zb3Za4Zb4r   r-   r)   r:   )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   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   s^   |}d|d< d|d< |  d¡}|d jtjks2t‚|d jtjksFt‚|d jtjksZt‚d S )	Nr   r    r-   r¡   rÂ  rs  )r    r,   )r¡   r,   )r   rH   r   rn   rB   Zobject_rœ  r&   r&   r'   Útest_unstack_preserve_types�  s    
z6TestStackUnstackMultiLevel.test_unstack_preserve_typesc                 C   sj  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sxt‚| 	¡ }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òt‚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�sft‚d S )Néô  r-   rf   r   r,   rÛ   rç  r1   )r  r-   r:   )r   r  r   r   r¬   r	   r   r   rB   r   r   r4   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 dddgdddgdgd dœƒ dd	g¡}d
|d< |sLt|jjƒdksLt‚| d	¡}|d  d¡|d< t ddddgtj	dddggt
ddgddd�tjddddgd d	gd�d�}|rØ|d  d¡|d< |d  d¡|d< t ||¡ d S )Nri   rj   ÚcaÚcbrâ   r)   )r*   r+   rl  r*   r+   r,   Úis_r-   )r  r
  r   g      $@r›   r  rÎ   )rH   rW   )rl  r
  )rl  r  )r  r  rŠ   r.   r^   )r   r[   r?   r@   rA   rB   r   rp  r   rÍ   r   r   rY   r]   r   r   )r   r    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 ddddgddddgddddgddddgdœƒ}| dddg¡}d	d
dd g}|jj|dd�|_|jj|dd�|_| d¡d  ¡ j}td	d
dd gd	d
dd ggddddgddddggddgd�}t ||¡ d S )Nr,   r-   r)   r:   )ÚL1ÚL2ÚL3r<   r  r  r  Zn1Zn2Zn3)r5   r±   )r<   r,   r   r×   )	r   r[   r/   Z
set_levelsr   rw  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 dddddg¡d�}| d	¡}t d
tjtjgtjd
d
gtjd
d
ggtdddgƒtddd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   N)r   r   ©r   r,   )r   r-   )r   r)   r.   )
r   r   rõ   r   rY   r   rÍ   r   r   r   r  r&   r&   r'   Ú$test_stack_nan_in_multiindex_columns  s$    ûÿþ
"ýz?TestStackUnstackMultiLevel.test_stack_nan_in_multiindex_columnsc                 C   sî   t  dgd dgd  t tdƒ¡t tdƒ¡g¡}tt d¡ dd¡|d�}| 	d	dg¡}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)   rd   rF   re   ZaabbaabbZcdcdcdcdr“   )r   rË   ru   r…   rl   r   r   r   r   r   rÍ   r   r   )r   rÝ   r#   r6   r7   r&   r&   r'   Ú"test_multi_level_stack_categorical  s6    ýÿø
ýÿô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�}| 	¡ }t dtjgtjd	gdtjgtjdggtddgdd�tjdtjfdd	tjfdgd
dgd�d�}t
 ||¡ d S )Nr:   r-   ri   rk   r]  r^  rŠ   r   r,   ÚNumr’   ©r0   r/   rH   r  g       @r9   rj   )r   r+   )r,   r+   r“   )r   r   r   r   r   rY   rÍ   r   rn   r   r   r   )r   Zdf_nanr6   r7   r&   r&   r'   Útest_stack_nan_level>  s&     ÿú" ÿý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_columnsR  s    þûz;TestStackUnstackMultiLevel.test_unstack_categorical_columnsc           	      C   s¾   ddg}ddg}dddg}t j|||gdd	d
gd�}ttt|ƒƒƒ}t||dgd�}| d	d
g¡}|j d¡|_d|j	d d …df< | 
d	d
g¡ ¡ }|jdd� 
d	d
g¡ ¡ }t ||¡ d S )NZITAZFRAÚA1ÚA2ZCRTZDBTÚNETÚPAEÚVARÚTYPrŠ   ZVALUE)r`   r/   r0   r   i'  )ZA0r  r,   rê   )r   r3   rl   r2   r?   r   r   r0   rú   r_   r   rw  r   r4   )	r   r  r  r  rš   ÚVZDFr6   r7   r&   r&   r'   Útest_stack_unsorteda  s    
z.TestStackUnstackMultiLevel.test_stack_unsortedc                 C   sê   t jddgddggddgd�}tdd	d
gdd�}t ddddgddddgddddgg¡}t|||t ¡ d�}| d¡}| 	tj
¡ d¡ 	t ¡ ¡}t ||¡ ||jd   	t ¡ ¡||jd < | d¡}| 	t¡ d¡}t ||¡ d S )NZ54511Z54515rD  Zt_meanÚstationÚelementrŠ   r,   r-   r)   r®  r’   r;  éâ   râ   é×   r‹   éÜ   i1  éè   r  r  r   )r   r3   r   r   rÌ   r   ru   Z
Int64Dtyper   r]   r^   r   r   r0   ZFloat64DtyperÎ   )r   r0   r/   Zarrr#   r6   r7   r&   r&   r'   Útest_stack_nullable_dtypes  s     ÿ(
"
z4TestStackUnstackMultiLevel.test_stack_nullable_dtype)6ry  rz  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Ö  r×  rà  rå  ræ  rê  rë  Zslowrü  r³   ÚchainÚfrom_iterabler2   r  r  r  r  r	  r  r  r  r  r  r  r   r'  r&   r&   r&   r'   r›  8  s¼   
üüüóþ
8þþý(þý	ýþýìþ$


E/
þþ% !r›  )%r   Úior   r³   Únumpyr   r†   Zpandas.errorsr   Zpandasru   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingr   Zpandas.core.reshaper   rø  r   r  rƒ  r‡  r|  r}  rˆ  r‰  rŠ  r‘  r’  rš  r›  r&   r&   r&   r'   Ú<module>   s@   $	         
	