U
    f/e                    @   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  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 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!G dd dZ"dS )    )datetime)StringION)	DataFrameIndex
MultiIndexPeriodSeries	Timedelta
date_rangec                   @   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dCdD ZdEdF ZejdGdHdged$gdIdJ ZdKdL Z dMdN Z!dOdP Z"dQdR Z#dSdT Z$dUdV Z%dWdX Z&e'j(dYdZ Z)d[d\ Z*d]d^ Z+ejd_d`dagejdbe,dce,ddgdedf Z-ejd_d`dagejdge,dhdidjdkdldmdngfe,dodmdndkdldidjgfgdpdq Z.drds Z/ejdtdududdge0ddgdvdwggfdududd&ge0ddgdvdwggfduddd&ge0ddgdvdwggfgdxdy Z1ejdzdudgd{d| Z2ejdzdud}gd~d Z3d$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shapereshapestackr   unstacktmassert_frame_equalT)	selffloat_framedfstackedZ
stacked_df	unstackedZunstacked_dfZunstacked_colsZunstacked_cols_df r   I/tmp/pip-unpacked-wheel-tiezk1ph/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yr4   r5   )
r   r   NaNlen_mgrblocksAssertionErrorr   r   r,   )r   using_array_managerr   df2resr/   r   r   r   test_unstack_not_consolidatedA   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%   r2      dtyper4   r"   r4   r#   r5   r#   zr"   
fill_valuer"   r#   r4   r5   rF   r'   rA         ?r"   r#   jkr   )r4   r5   rF   w)rO   r#   rM   )r'   namerO   )r   r   int16r   from_tuplesr'   r   r   r   r   float	set_indexr,   r   Zreorder_levelsnamesastypeint64loc)	r   datar.   r/   r   r   keyr   sr   r   r   test_unstack_fillM   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!   r2   r?            ZAB)r(   rA   rB   rC   rD   rE   rG   rH   xyzrK   Ar"   )rb   r#   )Br"   rc   r#   rb   rc   rL   )r   listr   int32r   rR   r'   r   r(   r   r   rV   rQ   float64rS   )r   rowsr   r.   r/   r   r   r   test_unstack_fill_frame|   s2    
"
"
z,TestDataFrameReshape.test_unstack_fill_framec                 C   s   t dddj}t|}t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-01r2   periodsrB   rC   rD   rE   r   r!   r$   r%   rJ   r4   r5   rF   r)   rH   )r
   valuesr   r   rR   r'   r   r   pdNaTr   r   )r   ZdvrY   r.   r/   r   r   r    test_unstack_fill_frame_datetime   s"    
(,z5TestDataFrameReshape.test_unstack_fill_frame_datetimec                 C   s   dd t dD }t|}t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>r2   rB   rC   rD   rE   r   r!   r$   r%   rJ   r4   r5   rF   r)   rH   )r*   r   r   rR   r'   r   r   rn   ro   r   r   )r   tdrY   r.   r/   r   r   r   !test_unstack_fill_frame_timedelta   s"    
(,z6TestDataFrameReshape.test_unstack_fill_frame_timedeltac                 C   s   t dt dt dt dg}t|}t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-04rB   rC   rD   rE   r   r!   r$   r%   rJ   r4   r5   rF   r)   rH   )	r   r   r   rR   r'   r   r   r   r   )r   rl   rY   r.   r/   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categoryr@   rB   rC   rD   rE   Zaxaabc
categoriesZbcxrJ   r`   r)   z 'fill_value=d' is not present inmatchdrH   ZacaZbcc)r   r   rR   r'   r   r   rn   Categoricalre   r   r   pytestraises	TypeError)r   rY   r.   r/   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#   rx   r$   r%   r!   ra   rd   rU   	   r   er)   r   r"   r   r#   )r   rx   r   r"   r   r#   )r   rx   rP   r(   r'   )r   r+   r   r   rR   r   r   r   r   idxr   r.   r/   r   r   r   $test_unstack_tuplename_in_multiindex  s*     
,z9TestDataFrameReshape.test_unstack_tuplename_in_multiindexz>unstack_idx, expected_values, expected_index, expected_columnsra   r$   r%   )r$   r!   )r$   r2   r%   r!   )r%   r2   rc   Cr   r   r   r   r   N)ra   rc   r!   r2   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!   r2   ra   rc   r   r   r_   r   r)   r   )r   r+   r   r   r   r   )	r   Zunstack_idxZexpected_valuesZexpected_indexZexpected_columnsr   r   r.   r/   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ILZMIZNCr"   r#   rx   ry   r!   r$   r   Z20010102      ?g      I@g      Y@Zfloat32r1   g      @g      @rg   F   i2 Zint8)stater'   some_categoriesrb   rc   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_comparem  s    
zNTestDataFrameReshape.test_unstack_preserve_dtypes.<locals>.unstack_and_comparer   r'   r   r   r   r   rc   r   rb   )	r   r   rV   r   randomZrandrn   	TimestamprT   )r   r   r   df1r[   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stt
|jddgd|jddjdd d S )Nr!   repeat      r(   r$   r%   levelrG   T)Zinplace)r   rR   re   	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rb   catlongrc   r   r   rb   dogshortrc   r   r   expanimalhair_lengthr   r2   r   r   r$   FZcheck_nameszSlevel should contain all level names or all level numbers, not a mixture of the twor}   r   )r   rR   r   r   r   r   r   r   r(   rU   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   r2   r   r   r   r$   r%   Fr   )r   rR   r   r   r   r   r   r   r(   rU   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#   rx   lcolr&   r@   )
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   ZoneZtwor"   r#   r   r$   firstsecondthirdr-   codesrU   r)   r%   r@   r   r&   )r   r   r   r   r   r   r   r   rg   r   r   r   )r   mir[   r.   Zexpected_mir/   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 ]}|  }qt|| d S )Nr$   r%   r1   r2   r3   r"   r#   rx   r4   r5   r   r-   r   r!   r)   )r   
isinstancer   r:   r   r   r   r   r   r6   r   r'   r   r,   r   r*   )	r   r   rY   Zundor.   midxr/   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|| tdtdftjdddtjddddffD ]\}}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stt|
|	 qd S ) Nr$   r!   r2   r%   ABCDr   rW   r)   rb   rc   r   r   )Nrc   r   r1   rg   r   r   r?   Zf8r@   
   r"   rj   rk   )rb   r   r   rc   T)deepr   )r   r"   )r!   r%   )r   re   dtypesr   r   rA   r   r,   rT   r   r   r   zerosr   r
   ilocr   rV   r   r:   r   )r   rh   r   r.   r/   r<   r   rx   r   rightleftr   r   r   test_unstack_dtypes.  sr    ,
 
 
 
	z(TestDataFrameReshape.test_unstack_dtypesc              	   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 )
NrJ   )rx   r   c1r   r$   r%   r)   z5The name c1 occurs multiple times, use a level numberr}   )	r   rR   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   #test_unstack_non_unique_index_namesv  s    z8TestDataFrameReshape.test_unstack_non_unique_index_namesc              
   C   sz  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 st	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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
}dddddddddgt
jddgt
jddgfdddddddddgt
jddgt
jddgff}
|
D ]f\}}}}|j|d}t
dt
j }|	||< t ddg|g}t|d	d||d}t|| qd S )Nr"   rb   rc   r   r   rG   r$   r   r!   r)   r&   r^   r%   r2   axisr   rx   r?   r_         r]   r            r      )r   r+   r   r   r   r   r(   r-   allr:   r   r   r   Zconcatenater   r   )r   r   r   r.   Zexp_colr/   r-   r   blockrY   Zcasesr   ZidcesZ	col_levelZ	idx_levelZexp_datacolsr   r   r   test_unstack_unused_levels  sD     
  

**z/TestDataFrameReshape.test_unstack_unused_levelsr   rb   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IIrb   rc   r   r   F)Zdropr   r   )r   rT   rX   slicer   r   r   r+   r(   r'   Z	droplevelr   r   )r   r   r   indZ	selectionr.   r/   r   r   r   test_unstack_unused_level  s    "
 z.TestDataFrameReshape.test_unstack_unused_levelc                 C   s   t dggtjdggdgdtj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i5Zi6Zi7r   r   )r   r   rR   r   r   r   r   r   r   r.   r/   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        rc   r   r   r   c2r   r      r   (   r   r   r   r   r   )r   r   rR   r   r(   rU   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!   r2   rG   r   r"   r#   rx   r   r   fm1ZP3   ZA5o   m2r   r   r   r   r   )r   r   rR   r   r   r   r   r   r   r   &test_unstack_multi_level_rows_and_cols  s    z;TestDataFrameReshape.test_unstack_multi_level_rows_and_colsc           
         sN  dd   f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 d D ]R}|t|}tdD ]6}|j|d}| j t|kst||d  qqt 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/d0d1|j fd2d/d0d1 |d3< |d4< t	d5d6d7gD ]h}|t|}tdD ]J}|j|d}| j dt| ks*td8D ]}	|||	  q.qqd S )9Nc                 S   s   | | krdn| }|dS )N 1r   )valZval_strr   r   r   cast  s    z:TestDataFrameReshape.test_unstack_nan_index1.<locals>.castc                    s   dd }|   j \}}t||D ]V\}}t| j||f d}|| j| || j|  }tt	 |}||ks$t
q$d S )Nc                 S   s   t | trt| S | gS r   )r   tuplere   r"   r   r   r   <lambda>      zNTestDataFrameReshape.test_unstack_nan_index1.<locals>.verify.<locals>.<lambda>.)notnarm   Znonzerozipsortedr   splitr'   r(   mapr:   )r   Zmk_listrh   r   rs   rM   r   r   r  r   r   verify  s    z<TestDataFrameReshape.test_unstack_nan_index1.<locals>.verifyr"   r#   r   rO   r4   r5   rF   za.wzb.xz .yzd.z)jimjoejolier  r  r  r%   r   r!   r?   rx   r   r2   C   '   5   H   9   P      r   r   r   ;   2   >   L   4      <   3   )1st2nd3rdc                    s   d t | S )Nr  )joinr  rr  r   r   r  <  r  z>TestDataFrameReshape.test_unstack_nan_index1.<locals>.<lambda>r$   r   c                    s   d t | jd d d S )Nr  rG   )r-  r  r   r.  r  r   r   r  =  r  4th5thr*  r+  r,  )r0  r1  )r   r   r   rT   r   r   r   r   r   permutationsr(   re   r*   r  rm   sumr7   r:   apply)
r   r  r   r   r   r   r   ZlevZudfr   r   r  r   test_unstack_nan_index1  s    	





) z,TestDataFrameReshape.test_unstack_nan_index1c              	   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aaaabbbbr_   rb   rc   r   r!   r$   rb   rc   r   r!   r$   r%   r2   r?   r]   r^   r   r   r"   r#   r   r   )r%   r$   )r   re   r*   r   r6   r   rT   r   r   r  r  r   r   r   r   )r   r   r   valsr   r   r   r   r   r   test_unstack_nan_index2H  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
aaaaabbbbbrj   r?   rk   r%   r   r6  r7  rb   rc   r!   r   r$   r2   r]   r^   r_   r   r"   r#   r   r   rG   r   r   )r   re   r
   tolistr   r   r6   r   rT   r   r   r   r   r   r(   rV   rA   r   r   )r   r;   r   r   r8  r   r   r   r   r   r   test_unstack_nan_index3s  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	VZ>ZSng@>g]K=?i)=(ZAgga2U0*#ZagentZchangeZdosageZs_idioC  ipC  iqC  irC  isC  itC  r   r   r$   rG   r   r%   r!   r2   )
r   r   r   r   rT   r   r   r   r   rX   )r   r8  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stdD ]F}| D ]8\}}|d ||d
 |d ff}|| |j
| kstqqd S )Nr$   r%   z
2014-02-01r]   r   )rl   freqd   r   )r*  r+  r  r  r+  z
2014-02-02r,  )r$   r+  )r!   r+  )r$   r,  )r2   r,  r*  )r  r  )r   r
   r   r   r   r   roundrn   r   r   rX   rT   r   r  rm   r3  r7   r:   Ziterrows)r   r   r   r   r   r/  rZ   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!   r2   rb   rc   r   )r   r$   r%   r!   )rc   r&   )r   r   r   rR   r   r+   r   r   )r   tr   r.   ZeidxZecolsr/   r   r   r   %test_stack_datetime_column_multiIndex  s    "z:TestDataFrameReshape.test_stack_datetime_column_multiIndexc                 C   s`  dd }t jdddddgdd	gd
}dddddgddddgddddgdddgdddgdddgddgddgddgdgdgdgfD ]0}|||  t|dkr~|  |||  q~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|jd d}t|| d S )Nc                 S   s   t tdt|  dt| | d}dddddgddgf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rt	
|| q<t	|| q<d S )
Nr!   r   rG   r   r$   F)r   dropnaTr   )r   r   r   r7   r   r   r   intr   r   r,   r   r   rR   r(   to_numpyrU   )Z
multiindexr   r   r.   r/   r   r   r   _test_stack_with_multiindex  s&    

 
zWTestDataFrameReshape.test_stack_partial_multiIndex.<locals>._test_stack_with_multiindex)rc   r4   )rc   rF   )rb   r5   )r   r4   )r   uUpperLowerr   r   r$   r%   r!   r2   r]   r   FrD  r?   rH  r4   r5   rF   r   rc   r   r   )r'   r(   rA   )r   rR   r7   reverser   r   r   r   r   r   r   r   r   r   )r   rG  Zfull_multiindexZmultiindex_columnsr   r.   r/   r   r   r   test_stack_partial_multiIndex  sF    

$
z2TestDataFrameReshape.test_stack_partial_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 )Nr`   r|   rN  r   r   r   r   r)   )rn   CategoricalIndexre   r   r   r   r+   r'   r   r   r,   )r   rN  rO  cidxr   r.   r   r/   r   r   r   %test_stack_preserve_categorical_dtype  s    z:TestDataFrameReshape.test_stack_preserve_categorical_dtypezlabels,datar`   r   r   r   r   r'  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 )	NrP  rH  v)rN  r   r   r$   r)   )
rn   rQ  r  r   r+   r   r   r   r   r,   )r   rN  rO  rY   rR  Zcidx2r   r   r.   Zs_cidxr/   r   r   r   +test_stack_multi_preserve_categorical_dtype,  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#   rx   rb   rc   r   r$   r%   r!   rb   rc   r)   )	rn   r   r   r   r   r+   r   r   r,   )r   r   r   r.   r'   r/   r   r   r   ,test_stack_preserve_categorical_dtype_valuesA  s     zATestDataFrameReshape.test_stack_preserve_categorical_dtype_valueszindex, columnsr   r"   r#   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   rR   r'   rF  r(   r   r   r   Zasarrayr   Zassert_numpy_array_equal)	r   r'   r(   r   r   	new_indexr/   Zstacked_codesZexpected_codesr   r   r   )test_stack_multi_columns_non_unique_indexL  s    
  z>TestDataFrameReshape.test_stack_multi_columns_non_unique_indexr   c                 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)rb   r   rb   r$   )rc   r$   r"   r#   r   r   r$   ZInt64r@   rV  r)   r   r%   )r   rR   r   rn   r   r   r   rV   r   r   rb   rA   rc   r(   r   r,   r   r   )r   r   r'   r   r.   r/   Zexpected_dtypesr   r   r   "test_unstack_mixed_extension_typesa  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   rx   r   r]  r   r%   r$   r!   rc   rb   r&   r   )rx   rb   )rx   rc   )r   rb   )r   rc   r   r   )r   r   )r   r+   r   r(   rP   rR   r'   r   	swaplevel
sort_indexr   r   )r   r   r   r   r/   r.   r   r   r    test_unstack_swaplevel_sortlevelu  s    
 z5TestDataFrameReshape.test_unstack_swaplevel_sortlevel)4__name__
__module____qualname__r    r0   r>   r\   ri   rp   rv   rw   r   r   r   markparametrizer   rR   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r5  r9  r;  r=  ru   Z&skip_array_manager_not_yet_implementedrA  rC  rM  re   rS  rU  rW  r+   rZ  r\  r`  r   r   r   r   r      s   /%#*
 
&
"
*,)H
+
W+)
B   

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#   rx   r   r@   rB   rC   rD   rE   rJ   r`   r)   r   rH   )r   r   rR   r'   r   r   r   r   re   r   r   )rY   r.   r/   r   r   r   test_unstack_fill_frame_object  s     
  rf  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#   rx   )	timestampr"   r#   rx   ri  r   r   r   r$   r   r&   )	r   rn   r   rT   r   r   r   r   r   )r   r.   r/   r   r   r   "test_unstack_timezone_aware_values  s&    
		rj  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)r>  startendrh  rb   r"   r#   rx   r)   r   r$   r%   r   )r
   r   r   r   r   r   r,   )tsr   r.   r/   r   r   r    test_stack_timezone_aware_values  s    &rn  rD  TFc                 C   s@   t tg g gg g gtjd}ttjdj| d}t|| d S )NrK   r@   rK  )r   r   r   rg   r   r   r   r,   )rD  r/   r.   r   r   r   test_stack_empty_frame  s    ro  rI   c                 C   s8   t tjdj| dj|d}t tjd}t|| d S )Nr@   rK  rH   )r   r   rW   r   r   r   r   )rD  rI   r.   r/   r   r   r   test_stack_unstack_empty_frame  s    rp  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}   r@   )r   r   r   r   r   rW   r   )r   r   r   r    test_unstack_single_index_series  s    rq  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)rP   scoreemployedkidsgenderrP   ru  rv  rw  rH   r   g       @r   )rt  rr  Fr   )rt  rr  Tr   )rt  rs  Fr   )rt  rs  Tr   r   r&   )r   rT   r   r   r   rR   r   r   )r   r/   r.   r   r   r   test_unstacking_multi_index_df  s2    	
rx  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 )Nr3   )r5   rF   r"   r   r$   r   r   r5   rF   r   )r   r4   )r   r5   r&   )r   r+   r   r   r   rR   r   r   )r(   r   r.   Znew_columnsrY  r/   r   r   r   2test_stack_positional_level_duplicate_column_names  s    
ry  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	dd Z
dd Zdd Zdd Zejdddg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/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zejjd9d: Zd;d< Zd=d> Zd?d@ ZdAdB Z dCdD Z!dEdF Z"dGdH Z#dIdJ Z$dKdL Z%dMdN Z&dS )OTestStackUnstackMultiLevelc                 C   s6   |}|  }|   |t   |tj   d S r   )r   rV   rE  r   rf   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   rT   r   r   r   r+   r   r   r   )r   Zresult_rowsZresult_columnsZindex_productZexpected_rowr.   r/   r   r   r   test_unstack_partial  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$   r]  r$   )r$   Zquxr$   r2   r)   r$   r%   r   r   how)
r   rR   r   r   r   r   r   rD  r   r   )r   r'   r[   r   r/   r   r   r   &test_unstack_multiple_no_empty_columnsA  s    
zATestStackUnstackMultiLevel.test_unstack_multiple_no_empty_columnsc              	   C   sv  |}|  }| }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}dd }
t
tddd	tddddgd}tddgdddggttdd	dttd	dgd}| ttd|d }}|
|| dddg|_tddgddggttdd	dtdddgdgd}| ttd|d }}|
|| d}t||_	tddgddgddggttdd	dtdddgd	dd	gtdddgdgd}| ttd|d }}|
|| d S )Nr%   r   r   rG   r$   r   F)r   Z	ascendingr!   r   c                 S   s:   t | | | jjdkst| j|j }}t || d S )NF)r   r,   r'   Z	is_uniquer:   assert_index_equal)r   r   lirir   r   r   check  s    z4TestStackUnstackMultiLevel.test_stack.<locals>.checkr   r2   ababr*  r+  r,  r&   r"   r#   r   r)   ))r"   r%   )r#   r$   )r"   r$   )r#   r%   r]   )r   r   r   r   r_  r^  rX   r,   reindexr'   r   r   r   r   re   r   tiler   r   r(   rR   )r   r|  r}  r   	restackedZunlexsortedr.   r/   r   Zymd_stackedr  r   r   r   r   Ztplsr   r   r   
test_stackL  s    





(
(
	z%TestStackUnstackMultiLevel.test_stackc                 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%   )rn   Zread_csvr   rT   r   r   r   r   )r   rY   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   Zfourr$   )r   r   Fr   r   )
r   r_  r   r   r,   rP   r:   rA   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!   r2   hiZbyeZpeaceg      @)r   r   barcoderT  extrar   r   r  rT  )r   r   r   groupbyr4  r7   r   r   r   r,   r  r'   rV   rS   )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'   rP   r:   r(   rU   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   )rX   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.   r/   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.   r/   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st| 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monthrb   r   r$   r%   r   r   r  )r   r   r   r(   rU   r:   r   r^  r_  r'   rD  rX   )r   r|  r}  r   r/   r[   Zs_unstackedr  r   r   r   test_stack_unstack_multiple  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_numbers2  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_bounds=  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r>  rP   rb   rc   r!   strr   r$   r%   r2   r?   r]   r)   r   r   rV  r&   period12013-12z2013-112013-10z2013-09z2013-08z2013-07period2)rn   PeriodIndexr   r   r   r   r   r   r(   rP   r   r   r   r   r   )r   idx1idx2valuer   r[   result1result2result3Ze_idxr/   e_colsr   r   r   test_unstack_period_seriesJ  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!   r2   r?   r]   rV  r)   r   r   zA A A B B Br&   zA A B B)	rn   r  r   r   r   r   r  r   r   )r   r  r  r  r   r   r  r  r  Ze_1Ze_2r  r/   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 }|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   r?  r]   )IDNAMEDATEVAR1r  r  ZParamszW-THUr  )rn   Zto_datetimer   r   randintr   rT   r(   rP   r   ZresampleZmeanr   rX   r   r   )r   Zid_colrP   dateZvar1r   Z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$   r6  rb   rc   FrK  T)	r   rT   r   r   r7   rD  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#   rx   r   r   )r   r'   rU   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  r?  )sizei,  ir^   i   i  )rb   rc   r   r   r   r   rb   rc   r   r   r   )r   r   r   r  r   rT   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!   r2   r)   )r   r   r   r   r   r   r7   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   sL   t tjddtdtdgd}tjtdd |  W 5 Q R X d S )Ni   r%   r)   zint32 overflowr}   )	r   r   r   r   r   r   r   r   r   r   r   r   r   /test_unstack_number_of_levels_larger_than_int32  s     zJTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32c           
   	   C   s  dd }dD ]}t jt dddg|dd}|D ]`}t|ddddgddddggd}t|td	gd
}tdD ] }||}||||d|  qnq0q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}|||ddd d S )Nc                    s&   t  fdd jD s"td S )Nc                 3   sB   | ]:} j D ].} j||f j|| f| f kV  qqd S r   )r(   rX   )rr   rowr   r   
df_stackedZlev0Zlev1r   r   	<genexpr>  s    zsTestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels.<locals>.manual_compare_stacked.<locals>.<genexpr>)r   r'   r:   r  r   r  r   manual_compare_stacked  s    z`TestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels.<locals>.manual_compare_stackedr   r   r$   r%   r   r   r2   )r(   rY   rb   r   rc   r!   r?   rG   )r(   r'   rY   )r   r   r2  r   r   r*   r   r   r   r  r   r7   r   )
r   r  widthZlevels_possr-   r(   r   Z	stack_levr  r   r   r   r   %test_stack_order_with_unsorted_levels  s,      
  z@TestStackUnstackMultiLevel.test_stack_order_with_unsorted_levelsc                 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   rr   r4   r   r   r   rt   >  s     zVTestStackUnstackMultiLevel.test_stack_unstack_unordered_multiindex.<locals>.<listcomp>c                 S   s   g | ]}d | qS r  r   r  r   r   r   rt   ?  s     r#   r"   r   r   r4   r$   r   r   Za0Zb0r  r  r  r  a3Zb3Za4Zb4r   r%   r!   r2   )r"   r4   )r#   r4   r   r&   )r   r   Zvstackr   r   r(   rP   rn   concatrU   r  r  r   r   r   rR   r   r   )r   rm   rY   r   Zsecond_level_dictZmulti_level_dfr.   r/   r   r   r   'test_stack_unstack_unordered_multiindex9  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  r[  )r   r$   )r   r$   )r   rA   r   rg   r:   Zobject_r{  r   r   r   test_unstack_preserve_typesR  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st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%   r2   )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 )Nrb   rc   cacbr   r!   )r"   r#   rT  r"   r#   r$   is_r%   )r  r  r   g      $@r   r   r   )rA   rP   )rT  r  )rT  r  )r  r  r   r&   rW   )r   rT   r7   r8   r9   r:   r   rX  r   r   r   r   rR   rV   r   r   )r   r;   r   r.   r/   r   r   r   +test_unstack_with_missing_int_cast_to_float  s2    	

zFTestStackUnstackMultiLevel.test_unstack_with_missing_int_cast_to_floatc                 C   s   t 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!   r2   )L1L2L3r4   r  r  r  Zn1Zn2Zn3)r-   r   )r4   r$   r   r   )	r   rT   r'   Z
set_levelsr   r_  r   r   r  )r   r   Z
new_levelsr.   r/   r   r   r   test_unstack_with_level_has_nan  s$    



z:TestStackUnstackMultiLevel.test_unstack_with_level_has_nanc              	   C   s   t tddgt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   rR   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 )Nrb   r%   rc   r  Zccddr_   r2   r   r$   r   r!   r]   r?   r^   ZaabbaabbZcdcdcdcdr   )r   r   rn   r   re   r   r   r   r   r   r   r   r   )r   r   r   r.   r/   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 )Nr2   r%   rb   rd   rI  rJ  r   r   r$   ZNumr   )r(   r'   rA   r   g       @r1   rc   )r   r#   )r$   r#   r   )r   r   r   r   r   rR   r   r   rg   r   r   r   )r   Zdf_nanr.   r/   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 )Nrb   r   r$   r   r"   r#   r)   r{   r  )r   r   )r   r$   )
r   r+   r   rn   r   r   rR   r(   r   r   r   r   r   r    test_unstack_categorical_columns  s    z;TestStackUnstackMultiLevel.test_unstack_categorical_columns)'ra  rb  rc  r~  r   rd  re  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  Zslowr  r  r  r  r  r  r  r  r  r  r  r   r   r   r   rz    sj   

c

E/
!% !rz  )#r   ior   r   Znumpyr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsru   Zpandasrn   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingr   r   rf  rj  rn  rd  re  ro  rp  rq  rx  ry  rz  r   r   r   r   <module>   s:   $	        y
	