U
    ¾mœd/ ã                   @   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¤   |  ¡ }t t |j¡¡ |j¡|d d …< | ¡ }t||dœƒ}| ¡ }| ¡ }t	 
||¡ t	 
|d |¡ | d¡}| d¡}t	 
|j|¡ t	 
|d j|¡ d S )N)ÚfooÚbarr   r   )ÚcopyÚnpÚarangeÚprodÚshaper   Ústackr   ÚunstackÚtmÚassert_frame_equalÚT)	ÚselfÚfloat_frameÚdfÚstackedZ
stacked_dfÚ	unstackedZunstacked_dfZunstacked_colsZunstacked_cols_df© r   ú^/home/sam/Atlas/atlas_env/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Úyr5   r6   )
r   r   ÚNaNÚlenÚ_mgrÚblocksÚAssertionErrorr   r   r-   )r   Úusing_array_managerr   Údf2Úresr0   r   r   r    Útest_unstack_not_consolidatedB   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&   r3   é   ©Údtype©r5   r#   ©r5   r$   ©r6   r$   ©Úzr#   éÿÿÿÿ©Ú
fill_value©r#   r$   r5   r6   rG   ©r(   rB   ç      à?r#   r$   ÚjÚkr   )r5   r6   rG   Úw)rP   r$   rN   )r(   ÚnamerP   )r	   r   Úint16r   Úfrom_tuplesr(   r   r   r   r   ÚfloatÚ	set_indexr-   r   Zreorder_levelsÚnamesÚastypeÚint64Úloc)	r   Údatar/   r0   r   r   Úkeyr   Úsr   r   r    Útest_unstack_fillN   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"   r3   r@   é   é   é   ZAB)r)   rB   rC   rD   rE   rF   rH   rI   ÚxyzrL   ©ÚAr#   )rc   r$   )ÚBr#   ©rd   r$   rc   rd   rM   )r   Úlistr   Úint32r   rS   r(   r   r)   r   r   rW   rR   Úfloat64rT   )r   Úrowsr   r/   r0   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-01r3   ©ÚperiodsrC   rD   rE   rF   r   r"   r%   r&   rK   r5   r6   rG   r*   rI   )r   Úvaluesr	   r   rS   r(   r   r   ÚpdÚNaTr   r   )r   ZdvrZ   r/   r0   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>r3   rC   rD   rE   rF   r   r"   r%   r&   rK   r5   r6   rG   r*   rI   )r+   r	   r   rS   r(   r   r   ro   rp   r   r   )r   ÚtdrZ   r/   r0   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-04rC   rD   rE   rF   r   r"   r%   r&   rK   r5   r6   rG   r*   rI   )	r   r	   r   rS   r(   r   r   r   r   )r   rm   rZ   r/   r0   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ÚcategoryrA   rC   rD   rE   rF   ZaxaÚabc©Ú
categoriesZbcxrK   ra   r*   z9Cannot setitem on a Categorical with a new category \(d\)©ÚmatchÚdrI   ZacaZbcc)r	   r   rS   r(   r   r   ro   ÚCategoricalrf   r   r   ÚpytestÚraisesÚ	TypeError)r   rZ   r/   r0   Úmsgr   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$   ry   r%   r&   r"   rb   re   ©rV   é	   ©r€   Úer*   ©r€   r#   ©r€   r$   )r€   ry   ©rŠ   r#   ©rŠ   r$   )rŠ   ry   ©rQ   ©r)   r(   )r   r,   r   r   rS   r   r   r   ©r   Úidxr   r/   r0   r   r   r    Ú$test_unstack_tuplename_in_multiindex  s*     ÿ
,ú÷óz9TestDataFrameReshape.test_unstack_tuplename_in_multiindexz>unstack_idx, expected_values, expected_index, expected_columnsrb   r%   r&   )r%   r"   )r%   r3   ©r&   r"   )r&   r3   rd   ÚCr‡   r‹   rŒ   r�   rŽ   N)rb   rd   r"   r3   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"   r3   rb   rd   r•   r‡   r`   r‰   r*   r�   )r   r,   r   r   r   r   )	r   Zunstack_idxZexpected_valuesZexpected_indexZexpected_columnsr’   r   r/   r0   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$   ry   rz   r"   r%   r   Z20010102ç      ð?g      I@g      Y@Zfloat32r2   g      @g      @rh   FéÈ   i2 Zint8)Ústater(   Úsome_categoriesrc   rd   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_compareh  s    
zNTestDataFrameReshape.test_unstack_preserve_dtypes.<locals>.unstack_and_comparerš   r(   r›   rž   r•   rŸ   rd   r�   rc   )	r   r	   rW   r   ÚrandomZrandro   Ú	TimestamprU   )r   r   r£   Údf1r\   r   r   r    Útest_unstack_preserve_dtypesV  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é   é   ©r)   r%   r&   ©ÚleveléþÿÿÿrH   T)Zinplace)r   rS   rf   Ú	itertoolsÚproductr+   r   r   r¤   Úrandnr   r   r   r   r)   Z	set_namesr;   )r   r)   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©rc   ÚcatÚlong©rd   rµ   r¶   ©rc   ÚdogÚshort©rd   r¹   rº   ÚexpÚanimalÚhair_lengthr‡   r3   r¬   r­   r%   F©Zcheck_nameszSlevel should contain all level names or all level numbers, not a mixture of the twor~   r   )r   rS   r   r   r¤   r²   r   r   r)   rV   r   r   r‚   rƒ   Ú
ValueError)r   r)   r   Úanimal_hair_stackedÚexp_hair_stackedr=   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‡   r3   r¬   r­   r   r%   r&   Fr¿   )r   rS   r   r   r¤   r²   r   r   r)   rV   r   r   )r   r)   r   Zexp_animal_stackedrÁ   rÂ   r=   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$   ry   ÚlÚcolr'   rA   )
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©r.   ÚcodesrV   r*   r&   rA   r�   r'   )r   r	   r   r   r   r   rÉ   rÊ   rh   r   r   r   )r   Úmir\   r/   Zexpected_mir0   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&   r2   r3   r4   r#   r$   ry   r5   r6   r   ©r.   rÕ   r"   r*   )r   Ú
isinstancer	   r;   r   r   r   r   r   r7   r   r(   r   r-   r   r+   )	r   r   rZ   Zundor/   Úmidxr0   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"   r3   r&   ZABCDr¬   rX   r*   rc   rd   r•   rœ   )Nrd   r‡   r2   rh   r   rË   )r   rf   Údtypesr	   r   rB   r   r-   rU   r   r   rÈ   )r   ri   r   r/   r0   r=   rÃ   r   r   r    Útest_unstack_dtypes)  sN    ,
 ÿþ
 ÿþ
 ÿþz(TestDataFrameReshape.test_unstack_dtypeszc, dr@   Zf8rA   é
   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#   r@   rk   rl   )rc   r•   rœ   rd   r"   T)Údeeprc   rd   rœ   rX   r   )rœ   r#   )r"   r&   )r   r   Úilocr   rU   rW   r   r   r;   r   r   )r   ry   r€   r   ÚrightÚleftr   r   r    Útest_unstack_dtypes_mixed_dateU  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 )
NrK   )ry   r€   Úc1r‡   r%   r&   r*   z5The name c1 occurs multiple times, use a level numberr~   )	r   rS   r   r‚   rƒ   rÀ   r   r   r   )r   r’   r   r…   r   r   r    Ú#test_unstack_non_unique_index_namess  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#   rc   rd   r•   rœ   rH   r%   r   r"   r*   r'   r_   r&   r3   ©Úaxisr¬   )r   r,   r   r   r   r   r)   r.   Úallr;   r   r   r   Zconcatenate)	r   r’   r   r/   Zexp_colr0   r.   rÕ   Úblockr   r   r    Útest_unstack_unused_levels}  s&     
 ÿz/TestDataFrameReshape.test_unstack_unused_levelsz"level, idces, col_level, idx_levelr   é   é   r^   rˆ   r`   é   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&   ry   r%   r"   r@   r_   r   rH   r`   r3   r*   r­   é   r^   r'   )r   r   r   r   r   r   ÚzerosrÊ   r,   r   r   )r   r®   ZidcesZ	col_levelZ	idx_levelr.   rÕ   r’   rZ   r   r/   Zexp_dataÚcolsr0   r   r   r    Ú)test_unstack_unused_levels_mixed_with_nan•  s    

z>TestDataFrameReshape.test_unstack_unused_levels_mixed_with_nanró   rc   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IIrc   rd   r•   r¬   F)Zdropr   r‡   )r   rU   rY   Úslicer   rá   r   r,   r)   r(   Ú	droplevelr   r   )r   ró   r   ÚindZ	selectionr/   r0   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   rS   r   r   r   r   ©r   r   r/   r0   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ç        rd   r•   rœ   rå   Úc2r‡   rß   é   rª   é(   rú   rû   rü   r�   r¯   )r   r   rS   r   r)   rV   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 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"   r3   rH   r¯   éýÿÿÿéüÿÿÿr#   r$   ry   r€   rŠ   ÚfÚm1ZP3éÞ   ZA5éo   Úm2rú   rû   rü   r‡   r�   )r   r   rS   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€   rP   r5   r6   rG   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Ù   Útuplerf   ©r#   r   r   r    Ú<lambda>
  ó    z>TestDataFrameReshape.test_unstack_nan_index1.<locals>.<lambda>Ú.)r   r   rÊ   rU   r   r   r   r   rf   Únotnarn   Úsumr8   r;   ÚnonzeroÚzipÚsortedrá   Úsplitr(   r)   Úmap)r   r’   r  r  r   rã   râ   rÖ   ÚudfÚmk_listri   ró   rt   rN   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"   r@   r#   r&   ry   rŠ   r$   r6   rP   rG   r3   r5   éC   é'   é5   éH   é9   éP   é   rñ   rî   rª   é;   é2   é>   éL   é4   é   é<   é3   )r+  r,  r-  c                    s   d  tˆ | ƒ¡S )Nr   )Újoinr'  ©Úr©r  r   r    r  C  r  zETestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.<lambda>r%   rç   c                    s   d  tˆ | jd d d… ƒ¡S )Nr   rH   )r?  r'  rá   r@  rB  r   r    r  D  r  r.  r/  r­   c                 S   s   t | tƒrt| ƒS | gS r¡   r  r  r   r   r    r  J  r  r   )r   r   rÊ   ÚapplyrU   rf   r   r!  rn   r"  r8   r;   r#  r$  r%  rá   r&  r(   r)   r'  )r   r’   r  rÇ   r   rÖ   r(  r)  ri   ró   rt   rN   rã   râ   r   rB  r    Útest_unstack_nan_index_repeats  s|    
ÿþýüûÿ
þý
üû
úìòÿ)þ $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aaaabbbbr`   ©rc   rd   r•   rd   rT   ©r"   r%   rc   r   r"   r%   r&   r3   r@   r^   r_   r�   r•   r#   r$   rÔ   r�   )r&   r%   )r   rf   r+   rW   r   r7   rá   rU   r   rÊ   r'  r$  r   r   r   r   )r   r   rã   Úvalsr’   ró   râ   r   r   r    Útest_unstack_nan_index2R  sT    þ  ÿ$&  ÿ$&  ÿ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
aaaaabbbbbrk   r@   rl   r&   rß   rE  rF  rc   rd   r"   r   r%   r3   r^   r_   r`   rˆ   r#   r$   r�   r•   rH   rÔ   r�   )r   rf   r   Útolistr   r   r7   rá   rU   r   rÉ   rÊ   r   r   r)   rW   rB   r   r   )r   r<   r   rã   rG  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%   rH   rÔ   r&   r"   r3   )
r   rÊ   r   r   rU   r   r   r   r   rY   )r   rG  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-01r^   rœ   )rm   Úfreqéd   rß   )r+  r,  r  r  r,  z
2014-02-02r-  )r%   r,  )r"   r,  )r%   r-  )r3   r-  r+  r  )r   r   r   r   r¤   r²   Úroundro   r¥   rÊ   rY   rU   r   r!  rn   r"  r8   r;   Ziterrows)r   r   rã   rÇ   rÛ   rA  r[   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"   r3   rc   rd   r¬   ©r   r%   r&   r"   )rd   r'   )r   r   r   rS   r   r,   r   r   )r   Útr   r/   ZeidxZecolsr0   r   r   r    Ú%test_stack_datetime_column_multiIndexß  s    "z:TestDataFrameReshape.test_stack_datetime_column_multiIndexÚmultiindex_columnsr®   rH   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©rd   r5   ©rd   rG   ©rc   r6   ©r•   r5   ©r•   ÚuÚUpperÚLowerr‡   r"   r¬   F)r®   ÚdropnaT)r   rS   r   r   r   r8   r   r   rÙ   Úintr	   r   r-   r   r)   Úto_numpyrV   )r   rT  r®   Úfull_multiindexZ
multiindexr   r/   r0   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 )NrU  rV  rW  rX  rY  r[  r\  r‡   r^   r&   r"   r   r%   r¬   F©r]  r@   r3   rZ  r5   r6   rG   rÔ   rd   r•   r�   r'   )r   rS   r   r   r   r   r   rÊ   r   rW   rÝ   r   r   )r   r`  r   r/   r0   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 )Nra   ©r}   rd  rß   rî   rï   r¬   r*   )ro   ÚCategoricalIndexrf   r   r   r   r,   r(   r	   r   r-   )r   rd  re  Úcidxr   r/   rÚ   r0   r   r   r    Ú%test_stack_preserve_categorical_dtype9  s    z:TestDataFrameReshape.test_stack_preserve_categorical_dtypezlabels,datara   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 )	Nrf  rZ  Úv)rd  r¬   r   r%   r*   )
ro   rg  r%  r   r,   r   r   r	   r   r-   )r   rd  re  rZ   rh  Zcidx2rÚ   r   r/   Zs_cidxr0   r   r   r    Ú+test_stack_multi_preserve_categorical_dtypeH  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$   ry   ©rc   rd   r   r%   r&   r"   rc   rd   r*   )	ro   r�   r   r   r   r,   r	   r   r-   )r   rµ   r   r/   r(   r0   r   r   r    Ú,test_stack_preserve_categorical_dtype_values]  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   rS   r(   r_  r)   r   r   r   ZasarrayrÕ   Zassert_numpy_array_equal)	r   r(   r)   r   r   Ú	new_indexr0   Zstacked_codesZexpected_codesr   r   r    Ú)test_stack_multi_columns_non_unique_indexh  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)rc   r   ©rc   r%   )rd   r%   r#   r$   r‡   r   r%   ZInt64rA   rl  r*   r­   r&   )r   rS   r   ro   rÉ   r�   r   rW   rË   r	   rc   rB   rd   r)   r   r-   rÝ   r   )r   r®   r(   r   r/   r0   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€   ry   r   rs  r‡   r&   r%   r"   rd   rc   r'   r   )ry   rc   )ry   rd   )r€   rc   )r€   rd   r¬   rç   )rè   r®   )r   r,   r   r)   rQ   rS   r(   r   Ú	swaplevelÚ
sort_indexr   r   )r   r®   rÖ   r   r0   r/   r   r   r    Ú test_unstack_swaplevel_sortlevel‘  s    
 ÿþz5TestDataFrameReshape.test_unstack_swaplevel_sortlevel)=Ú__name__Ú
__module__Ú__qualname__r!   r1   r?   r]   rj   rq   rw   rx   r†   r“   r‚   ÚmarkÚparametrizer   rS   r   r–   r§   r³   rÄ   rÅ   rÎ   r×   rÜ   rÞ   r   rò   r   rä   ræ   rë   rÊ   rô   rö   rù   r  r  r  rf   r+   r*  r°   ÚpermutationsrD  rH  rJ  rL  rP  rS  ra  rc  ri  rk  rm  r,   rp  rr  rv  r   r   r   r    r      s  .$"*
 ÿ
þú&ø
õüôþ"
*,),þþ

**þþ

=1)



ëþ þþ   ýþ

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$   ry   rË   rA   rC   rD   rE   rF   rK   ra   r*   r€   rI   )r	   r   rS   r(   r   r   r   rÊ   rf   r   r   )rZ   r/   r0   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$   ry   )Ú	timestampr#   r$   ry   r€  r¬   r�   r   r%   rÔ   r'   )	r   ro   r¥   rU   r   r   r   r   r   )r   r/   r0   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)rM  ÚstartÚendr  rc   r#   r$   ry   r*   r   r%   r&   rØ   )r   r   r   r	   r   r   r-   )Útsr   r/   r0   r   r   r    Ú test_stack_timezone_aware_valuesÒ  s    &þr…  r]  TFc                 C   s^   t jg t jd�t jg t jd�g}tt jt|g g gd�d�}tt jd�j| d�}t 	||¡ d S )NrA   rØ   )rB   r(   rb  )
r   rÉ   rX   r	   rh   r   r   r   r   r-   )r]  r.   r0   r/   r   r   r    Útest_stack_empty_frameÞ  s     r†  rJ   c                 C   s8   t tjd�j| d�j|d�}t tjd�}t ||¡ d S )NrA   rb  rI   )r   r   rX   r   r   r   r   )r]  rJ   r/   r0   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~   rA   )r‚   rƒ   rÀ   r	   r   rX   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      #@r`   FTr   ÚfemaleÚmale)rQ   ÚscoreÚemployedÚkidsÚgenderrQ   rŒ  r�  rŽ  rI   r  g       @r�   )r‹  r‰  Fr   )r‹  r‰  Tr   )r‹  rŠ  Fr   )r‹  rŠ  Tr   r‡   r'   )r   rU   r   r   r   rS   r   r   )r   r0   r/   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 )Nr4   )r6   rG   r#   r‡   r%   r¬   r   r6   rG   r�   )r   r5   )r   r6   r'   )r   r,   r   r   r   rS   r   r   )r)   r   r/   Znew_columnsro  r0   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¡tj d¡ tj¡tj d¡tj d¡dœ|d�‰ | stt	dd	„ ˆ j
jD ƒƒstt‚ˆ  ¡ }tj‡ fd
d„tdƒD ƒtdƒdd�}t ||¡ d S )Nr@   rc   rd   r•   rð   rQ  r*   c                 s   s   | ]}|j j V  qd S r¡   )Zmgr_locsZis_slice_like©rs   r5   r   r   r    Ú	<genexpr>3  s     z5test_unstack_non_slice_like_blocks.<locals>.<genexpr>c                    s   g | ]}ˆ |   ¡ ‘qS r   )r   )rs   Ún©r   r   r    ru   7  s     z6test_unstack_non_slice_like_blocks.<locals>.<listcomp>r3   r%   )Úkeysrè   )r   r,   r+   r   r   r¤   r²   rW   rX   Úanyr9   r:   r;   r   ro   Úconcatr   r   )r<   rÖ   r>   r0   r   r”  r    Ú"test_unstack_non_slice_like_blocks%  s    


üù	&r˜  c                   @   s>  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„ Z5didj„ Z6dS )kÚTestStackUnstackMultiLevelc                 C   s6   |}|  ¡ }|  ¡  | t¡  ¡  | tj¡  ¡  d S r¡   )r   rW   r^  r   rg   ©r   Ú/multiindex_year_month_day_dataframe_random_dataÚymdr   r   r   r    Útest_unstack<  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   rU   rá   r   r   r,   r   r   r   )r   Zresult_rowsZresult_columnsZindex_productZexpected_rowr/   r0   r   r   r    Útest_unstack_partialI  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%   rs  r%   )r%   Zquxr%   r3   r*   r%   r&   ré   ©rè   Úhow)
r   rS   r	   r   r¤   r²   r   r]  r   r   )r   r(   r\   r   r0   r   r   r    Ú&test_unstack_multiple_no_empty_columnst  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   rH   r%   rç   F)rè   Z	ascendingr"   r¯   )r   r   r   r   ru  rt  rY   r-   Úreindexr(   Zassert_equal)
r   r›  rœ  r   Ú	restackedZunlexsortedr/   r0   r   Zymd_stackedr   r   r    Ú
test_stack  sJ    





z%TestStackUnstackMultiLevel.test_stackzidx, columns, exp_idxÚababr+  r,  r-  r#   r$   r"   r3   rØ   r   ))r#   r&   )r$   r%   )r#   r%   )r$   r&   r^   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ï   r3   r"   r'   r*   F)r   r   r   r   r   r	   r   r-   r(   Z	is_uniquer;   Úassert_index_equal)	r   r’   r)   Zexp_idxr   r/   r0   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&   )ro   Zread_csvr   rU   r   r   r   r   )r   rZ   r   r/   Ú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   ru  r   r   r-   rQ   r;   rB   r   Zfloat_)r   Ú multiindex_dataframe_random_dataÚframer   r   r/   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naiveÚactiver#   r$   r%   r&   r"   r3   ÚhiZbyeZpeaceg      @)rš   r¼   Úbarcoderj  Úextrarš   r¼   rµ  rj  )r   r   r   ÚgroupbyrC  r8   r   r   r   r-   r¤  r(   rW   rT   )r   r   r/   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(   rQ   r;   r)   rV   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   )rY   r‚   rƒ   ÚKeyErrorÚgetattrrá   )r   rº  r°  r±  r   r\   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±  r/   r0   r   r   r    Útest_unstack_level_name:  s    
z2TestStackUnstackMultiLevel.test_unstack_level_namec                 C   sT   |}|  d¡}| d¡}|  ¡  d¡}t ||¡ | d¡}| ¡ }t ||¡ d S )NrÒ   r¼   r   )r   r   r   r   r-   )r   r°  r±  r   r/   r0   r   r   r    Útest_stack_level_nameA  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Úmonthrc   r   r%   r&   r­   ré   r¡  )r   r   r   r)   rV   r;   r   rt  ru  r(   r]  rY   )r   r›  rœ  r   r0   r\   Zs_unstackedr¥  r   r   r    Útest_stack_unstack_multipleM  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_numbersl  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_boundsw  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©rM  rQ   rc   rd   r"   Ústrr�   r%   r&   r3   r@   r^   r*   r­   r   rl  r'   Úperiod1ú2013-12z2013-11ú2013-10z2013-09z2013-08z2013-07Úperiod2)ro   ÚPeriodIndexr   r   rÈ   r	   r   r   r)   rQ   r   r   r   r   rÊ   )r   Úidx1Úidx2Úvaluer’   r\   Úresult1Úresult2Úresult3Ze_idxr0   Ú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"   r3   r@   r^   rl  r*   r­   r   zA A A B B Br'   zA A B B)	ro   rÍ  r   rÈ   r   r   r&  r   r   )r   rÎ  rÏ  rÐ  r’   r   rÑ  rÒ  rÓ  Ze_1Ze_2rÔ  r0   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¡}t
jtdd�� | d¡ ¡  W 5 Q R X | d¡jdd�}| 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   rN  r^   )ÚIDÚNAMEÚDATEÚVAR1rÙ  r×  ZParamszCould not convertr~   zW-THUT)Znumeric_onlyrÚ  )ro   Úto_datetimer   r¤   Úrandintr   rU   r)   rQ   r   r‚   rƒ   r„   ZresampleZmeanr   rY   r   r   )r   Zid_colrQ   ÚdateZvar1r   ÚmultiZunstZ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%   rE  rc   rd   Frb  T)	r   rU   r   r   r8   r]  r;   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$   ry   r€   rŠ   )r   r(   rV   r)   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éè  rN  )Úsizei,  iùÿÿÿr_   iíÿÿÿé   i¸  )rc   rd   r•   rœ   r�   rž   rc   rd   r•   rœ   r�   )r   r   r¤   rÜ  r²   rU   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"   r3   r*   )r   r   r   r¤   r²   r   r8   r)   r;   r   r   r   )r   r.   rÕ   r(   r   r/   r­  r   r   r    Útest_unstack_unobserved_keys;  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î  P  s    zjTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32.<locals>.MockUnstacker.__init__)rw  rx  ry  rî  Ú__classcell__r   r   rò  r    ÚMockUnstackerO  s   rõ  Ú
_Unstackeri   r&   r*   z$The following operation may generater~   rì  )Úreshape_librö  ÚcontextÚsetattrr   r   r¤   r²   r   r   Zassert_produces_warningr   r‚   rƒ   rï  r   )r   Zmonkeypatchrõ  Úmr   r…   r   r   r    Ú/test_unstack_number_of_levels_larger_than_int32J  s    
þzJTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32r.   c                 c   s*   | ]"}t jt  d ddg|¡dd�V  qdS )r   r%   r&   r¨   N)r°   r±   r|  )rs   Úwidthr   r   r    r’  b  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Ø   r3   )r)   rZ   c                 3   sF   | ]>}ˆ j D ]2}ˆ j||f ˆj||ˆ f|d ˆ  f kV  qqdS )r%   N)r)   rY   ©rs   ÚrowrÇ   ©r   Z
df_stackedrý  r   r    r’  n  s    ýÿzSTestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels.<locals>.<genexpr>)r   r   r+   r   ré   r(   r;   )r   r.   rý  r)   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 )Nrc   r•   rd   r"   rØ   r@   rH   )r)   r(   rZ   c                 3   sH   | ]@}ˆ j D ]4}ˆ j||f ˆ  d ¡j||d  f|d f kV  qqdS )r   r%   N)r)   rY   r   rþ  r”  r   r    r’  €  s    þz]TestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels_multi_row.<locals>.<genexpr>)r   r   r©   r+   Útiler   r   r8   r   ré   r(   r;   )r   rÖ   r   r”  r    Ú/test_stack_order_with_unsorted_levels_multi_rowu  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 )Nr@   c                 S   s   g | ]}d |› �‘qS )r$   r   r‘  r   r   r    ru   ‹  s     zVTestStackUnstackMultiLevel.test_stack_unstack_unordered_multiindex.<locals>.<listcomp>c                 S   s   g | ]}d |› �‘qS r  r   r‘  r   r   r    ru   Œ  s     r$   r#   r¬   rÑ   r5   r%   rç   rÒ   Za0Zb0rà  râ  rá  rã  Úa3Zb3Za4Zb4r   r&   r"   r3   )r#   r5   )r$   r5   r‡   r'   )r   r   Zvstackr   r   r)   rQ   ro   r—  rV   r¤  r%  r   r   r   rS   r   r   )r   rn   rZ   r   Zsecond_level_dictZmulti_level_dfr/   r0   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Á  rq  )r�   r%   )rž   r%   )r   rB   r   rh   r;   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&   r`   r   r%   rØ   ræ  r*   )r  r&   r3   )r   r  r   r   r©   r	   r   r   r;   r   r   r-   r¤  r(   )r   rÕ   r®   r(   r\   r/   r   r   r   r    Ú!test_unstack_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 )Nrc   rd   ÚcaÚcbrß   r"   )r#   r$   rj  r#   r$   r%   Úis_r&   )r  r	  r   g      $@r˜   r  rË   )rB   rQ   )rj  r	  )rj  r
  )r  r
  r‡   r'   rX   )r   rU   r8   r9   r:   r;   r   rn  r   rÊ   r   r   rS   rW   r   r   )r   r<   r   r/   r0   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"   r3   )ÚL1ÚL2ÚL3r5   r  r  r  Zn1Zn2Zn3)r.   r®   )r5   r%   r   rÔ   )	r   rU   r(   Z
set_levelsr   ru  r   r   r¨  )r   r¦   Z
new_levelsr/   r0   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%   r@   )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   rS   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 )Nrc   r&   rd   r§  Zccddr`   r3   r¬   r%   r   r"   r^   r@   r_   ZaabbaabbZcdcdcdcdr�   )r   rÈ   ro   r�   rf   r   r   r   r   r   rÊ   r   r   )r   rÚ   r   r/   r0   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 )Nr3   r&   rc   re   r[  r\  r‡   r   r%   ÚNumr�   ©r)   r(   rB   r  g       @r2   rd   )r   r$   )r%   r$   r�   )r   r   r   r   r   rS   rÊ   r   rh   r   r   r   )r   Zdf_nanr/   r0   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 )Nrc   r   r%   rµ   r#   r$   r*   r|   r  )rµ   r   )rµ   r%   )
r   r,   r   ro   r�   r   rS   r)   r   r   r‘   r   r   r    Ú test_unstack_categorical_columnsT  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)rZ   r(   r)   r   i'  )ZA0r  r%   rç   )r   r,   rf   r+   r8   r   r   r)   r÷   rY   r   ru  r   r-   )	r   r  r  r  r—   ÚVZDFr/   r0   r   r   r    Útest_stack_unsortedc  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54515rA  Zt_meanÚstationÚelementr‡   r%   r&   r"   r¬  r�   r8  éâ   rß   é×   rˆ   éÜ   i1  éè   r  r  r   )r   r,   r   r   rÉ   r   ro   Z
Int64Dtyper   rW   rX   r   r   r)   ZFloat64DtyperË   )r   r)   r(   Zarrr   r/   r0   r   r   r    Útest_stack_nullable_dtypeu  s     ÿ(
"
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)r5   r   r6   r‡   rú  r*   r5   )rú  r#   )r%   r'  )r&   r(  r   r6   r�   )r   rÈ   r   r   rS   r   r   )r   Zarraysr’   r   r/   r0   r   r   r    Útest_unstack_mixed_level_names�  s    

ýz9TestStackUnstackMultiLevel.test_unstack_mixed_level_names)7rw  rx  ry  r�  r‚   rz  r{  r   r£  r¦  rf   r   r   r  r   r©   rS   rª  r®  r²  r¸  r¹  r½  r¾  r¿  rÂ  rÃ  rÅ  rÕ  rÖ  rß  rä  rå  ré  rê  Zslowrû  r°   ÚchainÚfrom_iterabler+   r  r  r  r  r  r  r  r  r  r  r  r  r&  r)  r   r   r   r    r™  ;  s¾   
üüüóþ
8þþý(þý	ýþýìþ$


E/
þþ% !r™  )%r   Úior   r°   Únumpyr   r‚   Zpandas.errorsr   Zpandasro   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingr   Zpandas.core.reshaper   r÷  r   r}  r�  r…  rz  r{  r†  r‡  rˆ  r�  r�  r˜  r™  r   r   r   r    Ú<module>   s@   $	         
	