o
    i+                    @   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g dg dg dg dgejg dddgdejg dddgdfdg dg dged d!gdd"ejg d#g d$dfgd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zejd7ed8ed8fejd8d9d:ejd8d;d9d:ffd<d= Zd>d? Z d@dA Z!ejdBdCg dDej"dEdFgej"d8dGgfdGg dHej"d8dGgej"dEdFgffdIdJ Z#ejdKdLdge$dgdMdN Z%dOdP Z&dQdR Z'dSdT Z(ejdUdVdWgejdXe)e*dFdYdZ Z+ejdUe,-g d[ejdXe)e*d ejd\d]d^gd_d` Z.dadb Z/dcdd Z0dedf Z1dgdh Z2didj Z3ejdkg dlg dmg dng dog dpg dqdCdGgdCdFgdCd gdCgdFgd!gg drg dsg dtg dug dvg dwdGdCgdFdCgd dCggejdxdydCdGdCdGgdGdCgfdzd{ Z4d|d} Z5ejd~ddgejde)de)dgdd Z6ejd~ddgejde)dg dfe)dg dfgdd Z7dd Z8ejdg de9dGdFgdEdggfg de9dGdFgdEdggfg dme9dGdFgdEdggfgdd Z:ejdxdCdGgdd Z;ejdxdCdgdd Z<dS )TestDataFrameReshapec                 C   s   |rt nd }d}| }tj||d tt|j|j|d d < W d    n1 s/w   Y  |	 }t
||d}| }| }	t|| t|	d | |d}
|d}t|
j| t|d j| d S )Nz&will attempt to set the values inplacematch)foobarr   r   )DeprecationWarningcopytmassert_produces_warningnparangeprodshaper   stackr   unstackassert_frame_equalT)selffloat_frameusing_array_managerwarnmsgdfstacked
stacked_df	unstackedunstacked_dfunstacked_colsunstacked_cols_df r*   `/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/frame/test_stack_unstack.pytest_stack_unstack   s    $

z'TestDataFrameReshape.test_stack_unstackc                 C   s   t dg d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   )r-   ab      r   indexcolumnsr3   r.   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< |s&t|jjdks&J | }| }t|| d S )Nr0   r1         @   xyr@   rA   )	r   r   NaNlen_mgrblocksr   r   r8   )r   r    r#   df2resr;   r*   r*   r+   test_unstack_not_consolidatedF   s   
z2TestDataFrameReshape.test_unstack_not_consolidatedc           	      C   st  t g dtjd}tg d|_|jdd}tg dg ddg d	tjd
}t	|| |jdd}tg dg ddg d	t
d
}t	|| tg dg dg dg ddg d	}|jddgdd}d}|| }t g d|j|d}t|| |ddg}|j|jj|_|tj}|j|j }t	|| |d }|jddgdd}|d }t	|| d S )N)r0   r1   r>      dtype)r@   r.   )r@   r/   )rA   r/   )zr.   
fill_value)r0   rN   rI   )r1   r>   rN   r.   r/   r@   rA   rM   r3   rK         ?)r0   rT   rI   )r1   r>   rT   r.   r.   r/   )jkrV   r   r0   r1   )r@   rA   rM   wr@   rA   r   )rY   r/   rV   )r   r   r1   )r3   namerY   )r	   r   int16r   from_tuplesr3   r   r   r   r   float	set_indexr8   r   reorder_levelsnamesastypeint64loc)	r   datar:   r;   r#   r&   keyr$   sr*   r*   r+   test_unstack_fillR   sB   
z&TestDataFrameReshape.test_unstack_fillc                 C   sN  ddgddgddgddgg}t |td	tjd
}tg d|_|jdd}g dg dg dg}t |tdtjd}tg d|_t	
|| |d tj|d< |d tj|d< |jdd}|d tj|d< |d tj|d< t	
|| |jdd}g dg dg dg}t |tdtd}tg d|_t	
|| d S )Nr0   r1   r-   r>   rI            AB)r4   rK   rL   rN   rO   )r0   r-   r1   r>   )rN   rI   rN   rh   )ri   rN   rj   rN   xyzrS   )Ar.   )rn   r/   )Br.   ro   r/   rn   ro   rT   )rT   rI   rT   rh   )ri   rT   rj   rT   )r   listr   int32r   r\   r3   r   r4   r   r   ra   r[   float64r]   )r   rowsr#   r:   r;   r*   r*   r+   test_unstack_fill_frame   s2   z,TestDataFrameReshape.test_unstack_fill_framec                 C   s   t dddj}t|}tg d|_| }t|d tj	|d g|d |d tj	gd	g d
d}t
|| |j|d d}t|d |d |d g|d |d |d gd	g d
d}t
|| d S )N
2012-01-01r>   periodsrL   r   r-   r0   r1   rQ   rR   r5   rO   )r   valuesr	   r   r\   r3   r   r   pdNaTr   r   )r   dvrd   r:   r;   r*   r*   r+    test_unstack_fill_frame_datetime   s"   (,z5TestDataFrameReshape.test_unstack_fill_frame_datetimec                 C   s   dd t dD }t|}tg d|_| }t|d tj|d g|d |d tjgd	g d
d}t	
|| |j|d d}t|d |d |d g|d |d |d gd	g d
d}t	
|| d S )Nc                 S   s   g | ]}t |d qS ))days)r
   ).0ir*   r*   r+   
<listcomp>       zJTestDataFrameReshape.test_unstack_fill_frame_timedelta.<locals>.<listcomp>r>   rL   r   r-   r0   r1   rQ   rR   r5   rO   )r6   r	   r   r\   r3   r   r   rz   r{   r   r   )r   tdrd   r:   r;   r*   r*   r+   !test_unstack_fill_frame_timedelta   s"   (,z6TestDataFrameReshape.test_unstack_fill_frame_timedeltac                 C   s   t dt dt dt dg}t|}tg d|_| }t|d d |d g|d |d	 d gd
g dd}t|| |j|d d}t|d |d |d g|d |d	 |d gd
g dd}t|| d S )Nz2012-01z2012-02z2012-03z2012-04rL   r   r-   r0   r1   rQ   rR   r5   rO   )	r   r	   r   r\   r3   r   r   r   r   )r   rx   rd   r:   r;   r*   r*   r+   test_unstack_fill_frame_period   s.   $z3TestDataFrameReshape.test_unstack_fill_frame_periodc                 C   s  t g ddd}tg d|_| }ttjtdtddtjtdtddd	td
d}t	
|| d}tjt|d |jdd W d    n1 sQw   Y  |jdd}ttjtdtddtjtdtddd	td
d}t	
|| d S )Nr.   r/   cr.   categoryrJ   rL   axaabc
categoriesbcxrQ   rl   r5   z9Cannot setitem on a Categorical with a new category \(d\)r   drO   r   acabcc)r	   r   r\   r3   r   r   rz   Categoricalrq   r   r   pytestraises	TypeError)r   rd   r:   r;   r"   r*   r*   r+   #test_unstack_fill_frame_categorical   s0   z8TestDataFrameReshape.test_unstack_fill_frame_categoricalc                 C   s   t jg dg dgddgd}tdgd dgd d	|d
}|d}tg dg dg dgt jg dd dgdtg dddd}t|| d S )Nr.   r/   r   r0   r1   r-   rm   rp   r`   r0   	   r1   r   er5   )r0   r0   r0   r1   r1   r1   )r   r.   r   r/   )r   r   r   r.   r   r/   )r   r   rZ   r4   r3   )r   r7   r   r   r\   r   r   r   r   idxr#   r:   r;   r*   r*   r+   $test_unstack_tuplename_in_multiindex  s   
z9TestDataFrameReshape.test_unstack_tuplename_in_multiindexz>unstack_idx, expected_values, expected_index, expected_columnsrm   )r0   r0   r1   r1   ))r0   r-   )r0   r>   r1   r-   )r1   r>   ro   Cr   )r   r   r   r   N)rm   ro   )r0   r0   r0   r0   r1   r1   r1   r1   r-   r>   r   ))r   r.   r0   )r   r.   r1   )r   r/   r0   )r   r/   r1   )r   r.   r0   )r   r.   r1   )r   r/   r0   )r   r/   r1   )Nrm   ro   c           	      C   sj   t jddgddgddggg dd}tdgd	 dgd	 d
|d}||}t|||d}t|| d S )Nr.   r/   r0   r1   r-   r>   )rm   ro   r   r   rj   r   r5   r   )r   r7   r   r   r   r   )	r   unstack_idxexpected_valuesexpected_indexexpected_columnsr   r#   r:   r;   r*   r*   r+   *test_unstack_mixed_type_name_in_multiindex/  s   &
z?TestDataFrameReshape.test_unstack_mixed_type_name_in_multiindexc                 C   s  t g dg dtg ddtjdddtdtg dd	tg d
ddtg ddd}dd }|ddg}||d |ddg}||d |ddg}||d |g d}||d |ddg}||d |ddg}|d }||d d S )N)ILMINCr   r   r-   r0   r   20010102)      ?g      I@g      Y@float32)r=   g      @g      @rs   F)r0      i2 int8)stater3   some_categoriesrn   ro   r   DEFGHc                 S   s&   |  |g}|  |}t|| d S Nr   r   r   )r#   column_name
unstacked1
unstacked2r*   r*   r+   unstack_and_comparer  s   
zNTestDataFrameReshape.test_unstack_preserve_dtypes.<locals>.unstack_and_comparer   r3   r   r   r   )r   ro   r   ro   r   rn   )	r   r	   ra   r   randomrandrz   	Timestampr^   )r   r#   r   df1rf   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 u sUJ t
|jddgd|jddjdd d S )Nr-   repeat      r4   r0   r1   levelrN   T)inplace)r   r\   rq   	itertoolsproductr6   r   r   r   randnr   r   r   r   r4   	set_names)r   r4   r#   df_namedreturn_valuer*   r*   r+   test_stack_ints  s   (  z$TestDataFrameReshape.test_stack_intsc                 C   s  t jg dg dd}ttjdd|d}|jddgd}|jd	dgd}| }g d
|j_	t
j|jddgd|dd t
j|jd	dgd|dd d}tjt|d |jddgd W d    n1 shw   Y  | }g d|j_	t
j|jddgd|dd d S )N)rn   catlong)ro   r   r   )rn   dogshort)ro   r   r   expanimalhair_lengthr   r>   r   r   r   r   r   )r   r   r0   r0   Fcheck_nameszSlevel should contain all level names or all level numbers, not a mixture of the twor   r   )r   r   r   )r   r\   r   r   r   r   r   r   r4   r`   r   r   r   r   
ValueError)r   r4   r#   animal_hair_stackedexp_hair_stackedrF   r"   df3r*   r*   r+   test_stack_mixed_levels  s2   	
z,TestDataFrameReshape.test_stack_mixed_levelsc                 C   s0  t jg dg dd}ttjdd|d}|jddgd}|jdd	gd}|jdd	gd}| }g d
|j_	t
j|jddgd|dd t
j|jddgd|dd t
j|jddgd|dd | }g d|j_	t
j|jddgd|dd t
j|jddgd|dd t
j|jddgd|dd d S )Nr   r   r   r>   r   r   r   r   r   rX   r0   r1   Fr   r   )r1   r   r0   )r   r\   r   r   r   r   r   r   r4   r`   r   r   )r   r4   r#   exp_animal_stackedr   r   rF   r   r*   r*   r+   test_stack_int_level_names  s<   	
z/TestDataFrameReshape.test_stack_int_level_namesc                 C   s|   t ddgtddgddggdgd}| }t tjdtjgtjdggtdddgtddgddggd}t	|| d S )	NFr.   r/   r   lcolr2   rJ   )
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g dg dg d	gg d
d}td|d}|ddgd}t ddgddggg dg d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   r0   r0   r   r0   r   r0   )r0   r   r0   r   )firstsecondthirdr9   codesr`   r   r5   r0   r1   r   r   rJ   r   r   r2   )r   r	   r   r   r   r   r   r   rs   r   r   r   )r   mirf   r:   expected_mir;   r*   r*   r+   test_unstack_level_binding  s(   &z/TestDataFrameReshape.test_unstack_level_bindingc           	      C   s   |  }t|tsJ |  j}t|| tddtjgddtjgd}t	g d|_
|  }tddgg dgg d	g d
gd}tddtjddtjg|d}t|| | }tdD ]}|  }q^t|| d S )Nr0   r1   r=   r>   r?   r   r@   rA   )r   r   r   r0   r0   r0   )r   r0   r1   r   r0   r1   r9   r   r-   r5   )r   
isinstancer	   r   r   r   r   r   rB   r   r3   r   r8   r   r6   )	r   r   rd   undor:   midxr;   old_data_r*   r*   r+   test_unstack_to_series  s"   

z+TestDataFrameReshape.test_unstack_to_seriesc                 C   s  g dg dg dg dg}t |tdd}|j}ttdgd tdd	}t|| |d
dg}|	d}|j}ttdgd t
jg dg dgddd	}t|| |d
dg}d|d< |	d}|j}ttdgd tdgd  t
jg dg dgddd	}t|| d|d< |	d}|j}ttdgd tdgd  t
jg dg dgddd	}t|| d S )N)r0   r0   r-   r>   r0   r1   r-   r>   )r1   r0   r-   r>   )r1   r1   r-   r>   ABCDr   rb   r>   r5   rn   ro   )r   r   r   r   )r0   r1   r0   r1   )Nro   r   r=   r   rs   r1   r   r   r   )r   rq   dtypesr	   r   rK   r   r8   r^   r   r   r   )r   rt   r#   r:   r;   rF   r   r*   r*   r+   test_unstack_dtypes3  sH   


z(TestDataFrameReshape.test_unstack_dtypeszc, drI   f8rJ   
   c                 C   s   t dgd ||tdddd}|jd d jdd}|d	d
g}|d d|d< |jd d d}|d	d
gd}|d d|d< |jdksOJ t	|| d S )Nr.   rI   rv   rw   )rn   r   r   ro   r-   T)deeprn   ro   r   rb   r   )r   r.   )r-   r1   )
r   r   ilocr   r^   ra   r   r   r   r   )r   r   r   r#   rightleftr*   r*   r+   test_unstack_dtypes_mixed_date`  s   	
	z3TestDataFrameReshape.test_unstack_dtypes_mixed_datec                 C   s   t jddgddgd}tddg|d}d}tjt|d	 |d W d    n1 s,w   Y  tjt|d	 |jd W d    d S 1 sJw   Y  d S )
NrQ   )r   r   c1r   r0   r1   r5   z5The name c1 occurs multiple times, use a level numberr   )	r   r\   r   r   r   r   r   r   r   )r   r   r#   r"   r*   r*   r+   #test_unstack_non_unique_index_names~  s   "z8TestDataFrameReshape.test_unstack_non_unique_index_namesc           	      C   sB  t dgg dgd d }tddggd |d}| }t ddgg dg}tg d	gdg|d
}t|| |jjd |jd k sHJ g dg dg}g dg dg}t ||}t	
ddd}tt	||d g|d}| }tt	j|d |d d gdd|d}t|| |jjd |jd k sJ d S )Nr.   )rn   ro   r   r   rN   r0   r   r-   r5   rn   ro   r   )r0   r0   r0   r   r   r   r2   )r   r0   ri   r   r0   r1   r-   r   r   r1   r   r1   r>   r1   axisr   )r   r7   r   r   r   r   r4   r9   allr   r   r   concatenate)	r   r   r#   r:   exp_colr;   r9   r   blockr*   r*   r+   test_unstack_unused_levels  s$   
"z/TestDataFrameReshape.test_unstack_unused_levelsz"level, idces, col_level, idx_levelr   )      rh   r   r1   rI   rj      r.   r1   r0   )rj   r  r0   r>         r  r  c                 C   s   g dg dg}g dg dg}t ||}td}t|dd|d}	|	j|d	}
td
tj }|||< t ddg|g}t|dd||d}t	
|
| d S )N)r.   r1   r   )r0   r-   rI   ri   )r   rN   r0   r0   )r   r1   rN   r1   rj   r>   r1   r5   r      r   r0   r-   rh   r2   )r   r   r   r   r   r   zerosr   r7   r   r   )r   r   idces	col_level	idx_levelr9   r   r   rd   r#   r:   exp_datacolsr;   r*   r*   r+   )test_unstack_unused_levels_mixed_with_nan  s   

z>TestDataFrameReshape.test_unstack_unused_levels_mixed_with_nanr&  rn   c                 C   s   t g dg dgg dd}|jg ddd}|jtd td df|f }| }|jdg | }tj|jdggd d	gd
|_|j	
d	|_	t|| d S )N)i  r.   I)i  r/   IIr  r   F)dropr(  r   r   r   )r   r^   rc   slicer   r  r   r7   r4   r3   	droplevelr   r   )r   r&  r#   ind	selectionr:   r;   r*   r*   r+   test_unstack_unused_level  s   z.TestDataFrameReshape.test_unstack_unused_levelc                 C   s   t dggtjdggdgdtjg dgg ddd}|g d}t dggtjg dgg d	dtdgd
dd}t|| d S )Nr0   r   r  r   )r   r   r0   r   r   r   r0   )i1i2i3i4i5i6i7r   )r1  r2  r3  r4  r5  r6  )r  r1  r2  r3  r4  r5  r6  r0  r   )r   r   r\   r   r   r   r   r   r#   r:   r;   r*   r*   r+   test_unstack_long_index  s$   z,TestDataFrameReshape.test_unstack_long_indexc                 C   sx   t ddgddggtjddgddggddgdtjg dg d	gg d
dd}|ddgjjdd  ddgks:J d S )N        ro   r   r   r  c2r   )r	     r   )r	  r;  (   r0  r1  r2  r   r1  r0  r   )r   r   r\   r   r4   r`   r   r#   r*   r*   r+   test_unstack_multi_level_cols  s   *	z2TestDataFrameReshape.test_unstack_multi_level_colsc              	   C   s   t ddgddgddgddggtg d	g d
gtjg dg dg dg dgg ddd}|ddg}|dgdg}t|| d S )Nr0   r1   r-   r>   rN   r   r   )r   r   f)m1P3   )rC  A5o   )m2rD  rE  )rH  rF  rG  r=  r   r   r2  r1  )r   r   r\   r   r   r   r7  r*   r*   r+   &test_unstack_multi_level_rows_and_cols  s   z;TestDataFrameReshape.test_unstack_multi_level_rows_and_colsr   jimjoe)rL  rK  levc                 C   s(  dd }t ddtjdgg dg dd}|d	d
g d }|d
d	g d j}t|| |t|}|j|d}|	 j
 t|ksLJ dd }	|d 	 j
 \}
}t|
|D ]1\}}t|d j||f d}|	|d j| |	|d j|  }tt||}||ksJ q`d S )Nc                 S      | | krdn| }|dS N 1r*   valval_strr*   r*   r+   cast     z:TestDataFrameReshape.test_unstack_nan_index1.<locals>.castr.   r/   r   )rY   r@   rA   rM   )za.wzb.xz .yzd.z)rK  rL  jolierK  rL  rW  r   c                 S      t | tr	t| S | gS r   r   tuplerq   r.   r*   r*   r+   <lambda>      z>TestDataFrameReshape.test_unstack_nan_index1.<locals>.<lambda>.)r   r   r   r^   r   r   r   r   rq   notnary   sumrC   nonzerozipsortedr  splitr3   r4   map)r   r   rM  rU  r#   r  r  r   udfmk_listrt   r&  r   rV   r*   r*   r+   test_unstack_nan_index1  s*   $z,TestDataFrameReshape.test_unstack_nan_index11st2nd3rdr   4th5thc                    s  dd  t dgd tjgd  dgd  dgd  d	gd  d
gd  dgd dgd  tjgd  dgd  tjgd  dgd  tjgd  g dd}|j fdddd|j fdddd|d< |d< |t|}|j|d}| j	 dt
| ksJ dd }||  j \}}	t||	D ]1\}
}t|| j|
|f d}||| j|
 ||| j|  }tt |}||ksJ qd S )Nc                 S   rN  rO  r*   rR  r*   r*   r+   rU  !  rV  zATestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.castr   r-   rI   r.   r1   r   r   r/   rA   rY   rM   r>   r@   )C   '   5   H   9   P      r   r  r   ;   2   >   rv  L   4      rq  <   3   ri  c                    s   d t | S )Nr^  )joinre  rrU  r*   r+   r\  N  s    zETestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.<lambda>r0   r  c                    s   d t | jd d d S )Nr^  rN   )r~  re  r  r  r  r*   r+   r\  O  s    rm  rn  r   c                 S   rX  r   rY  r[  r*   r*   r+   r\  U  r]  r^  )r   r   r   applyr^   rq   r   r_  ry   r`  rC   ra  rb  rc  r  rd  r3   r4   re  )r   r   rM  r   r#   r   rf  rg  rt   r&  r   rV   r  r  r*   r  r+   test_unstack_nan_index_repeats  sV   



)$z3TestDataFrameReshape.test_unstack_nan_index_repeatsc              	   C   sr  t tdtdtdd}tj|jd< |ddgd}ddd	d
tjtjtjtjgtjtjtjtjddddgg}tt	tt
| }ttjdd	d
ddddgdd}tdgddggddgdd	ggd dgd}t |||d}t|| t tdttdd
 tdd}tj|jd< |ddgd}d
tjgddgd	dgtjdgddgg}tdgddggddgdd	ggd dgd}ttjdd	d
dgdd}t |||d}t|| t tdttdd
 tdd}tj|jd< |ddgd}dtjgddgd	dgd
dgtjdgg}tdgddggddgdd	ggd dgd}ttjdd	d
dgdd}t |||d}t|| d S )Naaaabbbbrj   r  r-   r0   rn   ro   r   r-   r0   r1   r>   rI   rh   ri   r   r   r.   r/   r   r   )r1   r0   )r   rq   r6   r   rB   r  r^   r   r   re  rb  r   r   r   r   )r   r#   r  valsr   r&  r  r*   r*   r+   test_unstack_nan_index2]  sB    $& $& z,TestDataFrameReshape.test_unstack_nan_index2c              	   C   s   t tdtddd d tdd}tj|jd< |d	d
g	 }t
ddddtjdgtjdddddgg}tddgd	d}tdgtdddgg dg dgd d
gd}t |||d}|rs|jg d }|| |d j||< t|| d S )N
aaaaabbbbbrv   rI   rw   r1   r	  r  r  rn   ro   r-   r   r0   r>   rh   ri   rj   r   r.   r/   r   r   )r   r   r   r   r   r   )rN   r   r0   r1   r-   r>   r   r   )r0   r1   r-   rI   )r   rq   r   tolistr   r   rB   r  r^   r   r   r   r   r   r4   ra   rK   r   r   )r   r    r#   r  r  r   r&  r  r*   r*   r+   test_unstack_nan_index3  s(   *z,TestDataFrameReshape.test_unstack_nan_index3c                 C   s(  dt jt jdgddt jdgddt jdgg dg dg d	g}t|g d
g dd}| g d }t jt jdt jdgddt jdt jgg}tddgdggddgddggddgd}tdgg dgg dg dgd dgd}t|||d}t|| |j	dd   g d}t| | d S )NHgi(Ur9  Pbg	VZ>)Sn@>]K=?)=()Agr9  r  r  )r  a2U0*#r  r  )agentchangedosages_id)ioC  pC  iqC  irC  isC  itC  r   )r  r  r  r  r  r  r  r   r0   rN   r  r  r   r  )r  r  r  r  r  )r   r   r   r   r   r   r0   r1   r-   r>   r  r  )
r   r   r   r   r^   r   r   r   r   rc   )r   r  r#   r  r   r&  r  r*   r*   r+   test_unstack_nan_index4  s<   z,TestDataFrameReshape.test_unstack_nan_index4c                 C   s  t g dtdddddtd tjdd dd	}|d
 td |d< tj	 |j
d< |j
d< tj	 |j
d< |j
d< |g dd
dg}| j dt| ksZJ dD ]#}| D ]\}}|d ||d
 |d ff}|| |j
| ks~J qbq\d S )N)r0   r1   r0   r1   r0   r1   z
2014-02-01rh   r   )rx   freqd   r	  r1   )rj  rk  rK  rL  rk  z
2014-02-02rl  )r0   rk  )r-   rk  )r0   rl  )r>   rl  ri  rJ  rj  )r   r   r   r   r   r   roundrz   r   r   rc   r^   r   r_  ry   r`  rC   iterrows)r   r#   r  r   r  r  re   r*   r*   r+   test_unstack_nan_index5  s$   	z,TestDataFrameReshape.test_unstack_nan_index5c                 C   sr   t ddd}tg dt|ddfgd}| }tddg}t|dfg}tg d||d	}t|| d S )
Ni  r0   r  rn   ro   r   r  )ro   r2   )r   r   r   r\   r   r7   r   r   )r   tr#   r:   eidxecolsr;   r*   r*   r+   %test_stack_datetime_column_multiIndex  s   z:TestDataFrameReshape.test_stack_datetime_column_multiIndexmultiindex_columnsr  r  )r   r0   r1   r>   rX   r   )r1   r-   r>   )r>   r-   r1   r0   r   )r-   r1   r0   r   )r>   r1   r0   r   )r1   r0   r   )r-   r1   r0   )r>   r-   r1   r   rN   c                 C   s   t jg dddgd}|| }ttdt| dt||d}|j|dd}t|t	rG|j|d	d}t|t
rAt|| nt|| t j|j |jjd|_|j|dd}t|t
rht|| d S t|| d S )
N)ro   r@   )ro   rM   )rn   rA   )r   r@   )r   uUpperLowerr   r-   r   F)r   dropnaT)r   r\   r   r   r   rC   r   r   r   intr	   r   r8   r   r4   to_numpyr`   )r   r  r   full_multiindex
multiindexr#   r:   r;   r*   r*   r+   test_stack_partial_multiIndex  s,   


z2TestDataFrameReshape.test_stack_partial_multiIndexc                 C   s   t jg dddgd}ttddd|g d d	}|jd
d}tddgdtjgddgdtjggt ddgg dgg dg dgd dgdtddgddd}|d 	|j
d |d< t|| d S )Nr  r  r  r   rh   r1   r-   )r   r0   r-   r   Fr  r   r0   rI   r>   )r  r@   rA   rM   r   )r0   r-   r0   r-   r   ro   r   r   r2   )r   r\   r   r   r   r   r   r   r   ra   r  r   r   )r   r  r#   r:   r;   r*   r*   r+   test_stack_full_multiIndex*  s"   "	z/TestDataFrameReshape.test_stack_full_multiIndexorderedFTlabelsyxzyxyc                 C   s^   t j|td|d}tg dg|d}| }t|j|g}tg d|d}t	
|| d S )Nrl   r   r  )r	  r  r  r   r5   )rz   CategoricalIndexrq   r   r   r   r7   r3   r	   r   r8   )r   r  r  cidxr#   r:   r   r;   r*   r*   r+   %test_stack_preserve_categorical_dtype>  s   z:TestDataFrameReshape.test_stack_preserve_categorical_dtypezlabels,datarl   )r	  r  r  r  r{  r  zyx)r{  r  r  r  r	  r  c                 C   s   t j|t||d}t jddg|d}t||g}tt|g|d}|ddg}t jt||d}	t|tdg|	|gd}
t	||
 d S )	Nr  r  v)r  r   r   r0   r5   )
rz   r  rc  r   r7   r   r   r	   r   r8   )r   r  r  rd   r  cidx2r   r#   r:   s_cidxr;   r*   r*   r+   +test_stack_multi_preserve_categorical_dtypeM  s   
z@TestDataFrameReshape.test_stack_multi_preserve_categorical_dtypec                 C   s`   t g d}t||d}| }tg dddgg}tt g d|d}t|| d S )N)r.   r.   r/   r   rn   ro   r  rn   ro   )r.   r.   r.   r.   r/   r/   r   r   r5   )	rz   r   r   r   r   r7   r	   r   r8   )r   r   r#   r:   r3   r;   r*   r*   r+   ,test_stack_preserve_categorical_dtype_valuesb  s   zATestDataFrameReshape.test_stack_preserve_categorical_dtype_valueszindex, columnsr   r/   )r   r   r1   r-   c           	      C   st   t ||dd}| }t|j }t | ||jd}t	|| t
|jj}t
|j}t|| d S )Nr2   r0   )r   fillnar   r   r\   r3   r  r4   r   r   r   asarrayr   assert_numpy_array_equal)	r   r3   r4   r#   r$   	new_indexr;   stacked_codesexpected_codesr*   r*   r+   )test_stack_multi_columns_non_unique_indexm  s   
z>TestDataFrameReshape.test_stack_multi_columns_non_unique_indexc                 C   s   t jg dddgd}ttjg dddtg d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))rn   r   rn   r0   )ro   r0   r.   r/   r   r   r0   NInt64rJ   rU   r  r5   r   r1   )r   r\   r   rz   r   r   r   ra   r   r	   rn   rK   ro   r4   r   r8   r  r   )r   r   r3   r#   r:   r;   expected_dtypesr*   r*   r+   "test_unstack_mixed_extension_types  s   z7TestDataFrameReshape.test_unstack_mixed_extension_typesbazc                 C   s   t jdgddggddgd}tddgdd	gg|d
dgd}d|j_tg dgt jg dddgdd}d|j_| jddj	d|d}t
|| d S )Nr   r   r   r   r  r   r1   r0   r-   ro   rn   r2   r   )r-   r0   r1   r   ))r   rn   )r   ro   )r   rn   )r   ro   r   r  )r  r   )r   r7   r   r4   rZ   r\   r3   r   	swaplevel
sort_indexr   r   )r   r   r   r#   r;   r:   r*   r*   r+    test_unstack_swaplevel_sortlevel  s   z5TestDataFrameReshape.test_unstack_swaplevel_sortlevel)=__name__
__module____qualname__r,   r<   rH   rg   ru   r}   r   r   r   r   r   markparametrizer   r\   r   r   r   r   r   r   r   r   r  r  r   r!  r   r  r  r  r   r'  r+  r/  r8  r?  rI  rq   r6   rh  r   permutationsr  r  r  r  r  r  r  r  r  r  r  r7   r  r  r  r*   r*   r*   r+   r      s    /%#

"*,)-



=+) 

r   c                  C   s   t g ddd} tg d| _|  }tdtjdgddtjgdtd	d
}t	
|| | jdd}tg dg ddtd	d
}t	
|| d S )Nr   r   rJ   rL   r.   r/   r   rQ   rl   r5   r   rO   )r.   r   r.   )r/   r   r   )r	   r   r\   r3   r   r   r   r   rq   r   r   )rd   r:   r;   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g dd} | ddg }t tjddddggtdgdd	td
dgdggddgddggd dgdd}t|| d S )Nz2017-08-27 01:00:00.709949+0000UTC)tzr.   r/   r   )	timestampr.   r/   r   r   r   r  r   r0   r   r2   )	r   rz   r   r^   r   r   r   r   r   )r#   r:   r;   r*   r*   r+   "test_unstack_timezone_aware_values  s&   		r  c                  C   sf   t ddddd} td| ig dd}| }t| tg ddggg d	g d
gdd}t|| d S )Nr   2018010120180103zAmerica/New_York)r  startendr  rn   r   r5   rX   )r   r   r   r   )r   r   r   r	   r   r   r8   )tsr#   r:   r;   r*   r*   r+    test_stack_timezone_aware_values  s    r  r  TFc                 C   s@   t tg g gg g gtjd}ttjdj| d}t|| d S )NrS   rJ   r  )r	   r   r   rs   r   r   r   r8   )r  r;   r:   r*   r*   r+   test_stack_empty_frame  s   r  rP   c                 C   s8   t tjdj| dj|d}t tjd}t|| d S )NrJ   r  rO   )r   r   rb   r   r   r   r   )r  rP   r:   r;   r*   r*   r+   test_stack_unstack_empty_frame  s   r  c                  C   sH   d} t jt| d ttjd  W d    d S 1 sw   Y  d S )Nz'index must be a MultiIndex to unstack.*r   rJ   )r   r   r   r	   r   rb   r   )r"   r*   r*   r+    test_unstack_single_index_series  s   "r  c                  C   s   t ddgddgddgddgdd	gd
} | g d} | jdgdd} | jdddjddd}| jddgdd}t g dg dgtddgddtjg dg ddd}t|| d S )NAliceBob      #@rj   FTr   femalemale)rZ   scoreemployedkidsgender)rZ   r  r  r  r  rO   r  r  )r  r9  r9  r9  )r9  r9  r9  g       @rZ   r   ))r  r  Fr   )r  r  Tr   )r  r  Fr   )r  r  Tr   )Nr  r  r  r   r2   )r   r^   r   r   r   r\   r   r   )r#   r;   r:   r*   r*   r+   test_unstacking_multi_index_df  s*   	r  c                  C   s   t jddgddgd} tg dg| d}|d}tdd	gdd
}t jddgd dgd}tddgddgg||d}t|| d S )Nr?   )rA   rM   r.   r   r0   r0   r0   r0   r   r   rA   rM   r   )r   r@   )r   rA   r0   r2   )r   r7   r   r   r   r\   r   r   )r4   r#   r:   new_columnsr  r;   r*   r*   r+   2test_stack_positional_level_duplicate_column_names  s   
r  c                    s   t tdg dg}ttjdd|d  d tj d< | s/t	dd  j
jD s/J   }tj fd	d
tdD tddd}t|| d S )NrI   r  r  r>   r5   r0   c                 s   s    | ]}|j j V  qd S r   )mgr_locsis_slice_liker   r@   r*   r*   r+   	<genexpr>0  s    z5test_unstack_non_slice_like_blocks.<locals>.<genexpr>c                    s   g | ]} |   qS r*   )r   )r   nr#   r*   r+   r   4  r]  z6test_unstack_non_slice_like_blocks.<locals>.<listcomp>)keysr  )r   r7   r6   r   r   r   r   ra   rb   anyrD   rE   r   rz   concatr   r   )r    r   rG   r;   r*   r  r+   "test_unstack_non_slice_like_blocks)  s   &r  c                   @   s  e Zd Zdd Zejdg dg dgg ddg dfg d	g d
gg ddg dfg d	g dgg ddg dfgdd Zdd Zdd Z	ejde
dg deddgg dgeedddeeddgdge
dg deddgddggeedddeg d dgdged!g deddgd"dgddggeedddeg d#g d$eg d dgdggd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zejd/d0d1g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 dHdI Z!dJdK Z"ejj#dLdM Z$ejdNe%j&'dOdP dQD ejdRe(ddSdT Z)dUdV Z*dWdX Z+dYdZ Z,d[d\ Z-d]d^ Z.d_d` Z/dadb Z0dcdd Z1dedf Z2dgdh Z3didj Z4dkdl Z5dS )mTestStackUnstackMultiLevelc                 C   s6   |}|  }|   |t   |tj   d S r   )r   ra   r  r   rr   r   /multiindex_year_month_day_dataframe_random_dataymdr&   r*   r*   r+   test_unstack9  s
   z'TestStackUnstackMultiLevel.test_unstackz5result_rows,result_columns,index_product,expected_row)r0   r0   NN      >@N)r1   r1   NNr   N)ix1ix2col1col2col3col4r1   )NNr   N)r0   r0   NNr   )r1   r1   NNr   )r  r  r  r  r  )NNr   )r1   NNNr   Nc                 C   sp   t ||dddg}|jdd d}t |gtj|dd  |ggd dgdtdgddd}t|| d S )	Nr   r  r  r0   r1   r   r   r   )	r   r^   r  r   r   r7   r   r   r   )r   result_rowsresult_columnsindex_productexpected_rowr:   r;   r*   r*   r+   test_unstack_partialF  s   z/TestStackUnstackMultiLevel.test_unstack_partialc                 C   sN   t g d}ttjd|d}|ddg}|jddd}t	|| d S )N))r   r   r   )r   r   r   )r0   r  r0   )r0   quxr0   r>   r5   r0   r1   r  r  how)
r   r\   r	   r   r   r   r   r  r   r   )r   r3   rf   r&   r;   r*   r*   r+   &test_unstack_multiple_no_empty_columnsq  s   zATestStackUnstackMultiLevel.test_unstack_multiple_no_empty_columnsc           
      C   s  |}|  }| }t|| |jdd}| d}| }t|jdd| |d d d }| d}| dd}t|jdd| |dd}| djdddd}|ddd}t|jdd| |  }|jddd}| }t|| | d d}|d}|  }t|| |d}| d}t|| |d}|  d d}t|| | djd d d d d	f }|  }| }	t||	|j	 | dd
}| dd}t
|| d S )Nr1   r   r   rN   r0   r  F)r  	ascendingr-   r   )r   r   r   r   r  r  rc   r8   reindexr3   assert_equal)
r   r  r  r&   	restackedunlexsortedr:   r;   r$   ymd_stackedr*   r*   r+   
test_stack|  sJ   





z%TestStackUnstackMultiLevel.test_stackzidx, columns, exp_idxababri  r.   r/   r-   r>   r   )rj  rk  rj  rj  rk  )r   r0   r   ))r.   r1   )r/   r0   )r.   r0   )r/   r1   r0   )r0   r   r0   )r-   rh   r-   c           	      C   sp   t tddd||d}| }ttd|d}t|| |jj	du s)J |j|j}}t
|| d S )Nr  r>   r-   r2   r5   F)r   r   r   r   r   r	   r   r8   r3   	is_uniqueassert_index_equal)	r   r   r4   exp_idxr#   r:   r;   lirir*   r*   r+   test_stack_duplicate_index  s   &z5TestStackUnstackMultiLevel.test_stack_duplicate_indexc                 C   s>   d}t t|g d}|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timesmokerr1   )rz   read_csvr   r^   r   r   r   r   )r   rd   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 u s-J |d jtjks7J d S )Nr   )r   fourr0   )r   r  Fr   r   )	r   r  r   r   r8   rZ   rK   r   float_)r    multiindex_dataframe_random_dataframer#   r$   r:   r*   r*   r+   test_stack_mixed_dtype  s   z1TestStackUnstackMultiLevel.test_stack_mixed_dtypec                 C   sl   t g dg dg dg dtdd}|g dt}| }| }t	||
|jt d S )N)naiver)  r)  activer*  r*  )r.   r/   r/   r/   r.   r.   )r0   r1   r-   r>   r0   r-   )hir+  byer,  r,  peaceg      @)r   r   barcoder  extra)r   r   r.  r  )r   r   r   groupbyr  rC   r   r   r   r8   r  r3   ra   r]   )r   r#   r:   r&   r  r*   r*   r+   test_unstack_bug	  s   
z+TestStackUnstackMultiLevel.test_unstack_bugc                 C   sP   |}|  }|jjdksJ |jjddgksJ | }|jj|jjks&J d S )Nr   r   r   )r   r3   rZ   r4   r`   r   )r   r&  r'  r&   r  r*   r*   r+   !test_stack_unstack_preserve_names  s   z<TestStackUnstackMultiLevel.test_stack_unstack_preserve_namesmethodr   r   c                 C   s   |}|j d }tjtdd t||d W d    n1 s w   Y  |dkrS|jd d df }tjtdd t||d W d    d S 1 sLw   Y  d S d S )Nr   zdoes not match index namer   mistaker   r   )rc   r   r   KeyErrorgetattrr  )r   r3  r&  r'  r#   rf   r*   r*   r+   #test_stack_unstack_wrong_level_name$  s   
"z>TestStackUnstackMultiLevel.test_stack_unstack_wrong_level_namec                 C   s*   |}| d}|j dd}t|| d S )Nr   r0   r   r   )r   r&  r'  r:   r;   r*   r*   r+   test_unstack_level_name7  s   
z2TestStackUnstackMultiLevel.test_unstack_level_namec                 C   sT   |}| d}|d}|  d}t|| |d}| }t|| d S )Nr   r   r   )r   r   r   r   r8   )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s!J |d }| ddg}t||d  |ddg}|dddd}|jdd}t|| |jj|jjks[J | ddg}| d dj	ddd	}t|| | ddg}| d dj	ddd	}t||j
d d |jf  d S )
Nyearmonthrn   r   r0   r1   r   r  r  )r   r   r   r4   r`   r   r  r  r3   r  rc   )r   r  r  r&   r;   rf   s_unstackedr  r*   r*   r+   test_stack_unstack_multipleJ  s&    z6TestStackUnstackMultiLevel.test_stack_unstack_multiplec                 C   sT   |}| ddg}tjtdd |ddg W d    d S 1 s#w   Y  d S )Nr:  r;  zlevel should containr   r   )r   r   r   r   r   r  r*   r*   r+   test_stack_names_and_numbersi  s
   "z7TestStackUnstackMultiLevel.test_stack_names_and_numbersc                 C   s   |}| ddg}tjtdd |ddg W d    n1 s"w   Y  tjtdd |dd	g W d    d S 1 sAw   Y  d S )
Nr:  r;  zToo many levelsr   r1   r-   znot a valid level numberrA  r@  )r   r   r   
IndexErrorr   r  r*   r*   r+   !test_stack_multiple_out_of_boundst  s   "z<TestStackUnstackMultiLevel.test_stack_multiple_out_of_boundsc              	   C   s  t jg dddd}tddgd dd	}g d
}t||g}t||d}| }|jdd}|jdd}t jg dddd}	tg dg dd|	ddgd}
d|
j_	t
||
 t
||
 t
||
j t jg dddd}t jg dddd}t||g}t||d}| }|jdd}|jdd}t jg dddd}	t jg dddd}ttjtjtjtjddgtjtjddtjtjgddtjtjtjtjgg|	|d}
t
||
 t
||
 t
||
j d S )N)2013-01rA  2013-02rB  2013-03rC  Mperiodr  rZ   rn   ro   r-   strr   r0   r1   r-   r>   rI   rh   r5   r0   r   r   )rA  rB  rC  )r0   r-   rI   )r1   r>   rh   r  r2   period1)2013-122013-112013-102013-092013-082013-07period2)rO  rN  rM  rL  rK  rJ  r1   r>   rh   rI   )rz   PeriodIndexr   r   r   r	   r   r   r4   rZ   r   r   r   r   r   )r   idx1idx2valuer   rf   result1result2result3e_idxr;   e_colsr*   r*   r+   test_unstack_period_series  sp   


z5TestStackUnstackMultiLevel.test_unstack_period_seriesc                 C   sJ  t jg dddd}t jg dddd}g dg dd	}t||g}t||d
}| }|jdd}|jdd}t jddgddd}	t jg dddd}
td |
g}tg dg dg|	|d}t|| t|| t jg dddd}	t jg dddd}
td |	g}tg dg dg dg|
|d}t|| d S )N)2014-012014-02r\  r\  r[  r[  rD  rI  rF  )rJ  rJ  r\  rL  rL  r\  rP  rH  )rh   rI   r>   r-   r1   r0   r  r5   r0   r   r   r[  r\  )rL  rJ  r\  rL  rJ  r\  zA A A B B B)rI   r0   rh   r1   rh   r0   )r>   r1   r-   r-   rI   r>   r2   )r[  r\  r[  r\  )rL  rJ  r\  zA A B B)rI   r>   r1   r-   )r0   r1   rh   rI   )rh   r-   r0   r>   )	rz   rQ  r   r   r   r   rd  r   r   )r   rR  rS  rT  r   r#   rU  rV  rW  e_1e_2rY  r;   r*   r*   r+   test_unstack_period_frame  sN   

z4TestStackUnstackMultiLevel.test_unstack_period_framec                 C   s  dgd dgd  }dgd dgd  }t g dd }tjddd	}t||||d
}|ddg}d|j_|	d}d}t
jt|d |d }	W d    n1 sYw   Y  |	d}
|jd d dgf d d}d|j_t
|
| d S )Nr0   r-   r1   r.   r/   )z
2013-01-03z
2013-01-04z
2013-01-05r   r  rh   )IDNAMEDATEVAR1rb  r`  Paramsz!The default value of numeric_onlyr   zW-THUrc  )rz   to_datetimer   r   randintr   r^   r4   rZ   r   r   r   FutureWarningresamplemeanr   rc   r   )r   id_colrZ   datevar1r#   multiunstr"   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s)J | jdd
}t||  d S )Na1a2b1b2r0   r  rn   ro   Fr  T)r   r^   r   r   rC   r  r   r   )r   r#   r$   r*   r*   r+   test_stack_dropna	  s   z,TestStackUnstackMultiLevel.test_stack_dropnac                 C   sT   t g dg dg dgg dg dgd}g d|j_dd	g|j_|d
dg d S )N)r   r   r   r   r0   r0   r0   r0   )r   r   r0   r0   r   r   r0   r0   )r   r0   r   r0   r   r0   r   r0   r   r   r2   r   r   r   r/   r   )r   r3   r`   r4   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
}|g d}|d d S )N  r  )sizei,  iri   i   i  )rn   ro   r   r   r   r   )rn   ro   r   r   r   r   )r   r   r   rf  r   r^   r   )r   NUM_ROWSr#   idfr*   r*   r+   test_unstack_sparse_keyspace$  s   
z7TestStackUnstackMultiLevel.test_unstack_sparse_keyspacec                 C   sr   ddgg dg}g dg dg}t ||}ttjdd|d}| }t|jdks-J | }t	
|| d S )	Nr   r0   r  r   r  r>   r1   r5   )r   r   r   r   r   r   rC   r4   r   r   r   )r   r9   r   r3   r#   r:   r"  r*   r*   r+   test_unstack_unobserved_keys9  s   
z7TestStackUnstackMultiLevel.test_unstack_unobserved_keysc              
   C   s   G dd dt j}| _}|t d| ttjddtdtdgd}d}t	j
t|d# tjtd	d |  W d    n1 sHw   Y  W d    n1 sWw   Y  W d    d S W d    d S 1 sow   Y  d S )
Nc                       s   e Zd Zd fddZ  ZS )zaTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32.<locals>.MockUnstackerreturnNc                    s   t  j|i | td)NDon't compute final result.)super__init__	Exception)r   argskwargs	__class__r*   r+   r  N  s   zjTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32.<locals>.MockUnstacker.__init__)r~  N)r  r  r  r  __classcell__r*   r*   r  r+   MockUnstackerM  s    r  
_Unstackeri   r1   r5   z$The following operation may generater   r  )reshape_libr  contextsetattrr   r   r   r   r   r   r   r   r   r   r  r   )r   monkeypatchr  mr#   r"   r*   r*   r+   /test_unstack_number_of_levels_larger_than_int32H  s"   

"zJTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32r9   c                 c   s*    | ]}t jt g d |ddV  qdS )rX   r1   r   N)r   r   r  )r   widthr*   r*   r+   r  `  s
    
z$TestStackUnstackMultiLevel.<genexpr>r   	stack_levc                    sX   t |g dg dgd}t|tdgd  t fdd jD s*J d S )Nr   r   r   r>   )r4   rd   c                 3   sH    | ]} j D ]} j||f j|| f|d   f kV  qqdS )r0   N)r4   rc   r   rowr   r#   
df_stackedr  r*   r+   r  l  s    zSTestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels.<locals>.<genexpr>)r   r   r6   r   r  r3   )r   r9   r  r4   r*   r  r+   %test_stack_order_with_unsorted_levels^  s   
z@TestStackUnstackMultiLevel.test_stack_order_with_unsorted_levelsc                    s|   t g dg dgttddttddgd}t|tdtdt| ddd t	 fdd	 j
D s<J d S )
N)rn   r   ro   )ro   rn   r   r-   r   rI   rN   )r4   r3   rd   c                 3   sJ    | ] } j D ]} j||f  d j||d  f|d f kV  qqdS r  )r4   rc   r   r  r  r*   r+   r  ~  s    ,z]TestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels_multi_row.<locals>.<genexpr>)r   r   r   r6   tiler   r   rC   r   r  r3   )r   r   r*   r  r+   /test_stack_order_with_unsorted_levels_multi_rows  s    zJTestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels_multi_rowc                 C   s   t d}t dd |D dd |D g}t|jddgd}d|j_d	|i}tj|d
d}ddg|j_	|j
t|jd
d}|ddgddg}tddgddgddgddgddggg dtjddgddgdd}t|| d S )NrI   c                 S      g | ]}d | qS )r/   r*   r  r*   r*   r+   r     r   zVTestStackUnstackMultiLevel.test_stack_unstack_unordered_multiindex.<locals>.<listcomp>c                 S   r  r[  r*   r  r*   r*   r+   r     r   r/   r.   r   r   r@   r0   r  r   a0b0rq  rs  rr  rt  a3b3a4b4r  )r.   r@   )r/   r@   r   r2   )r   r   vstackr   r   r4   rZ   rz   r  r`   r  rc  r   r   r   r\   r   r   )r   ry   rd   r#   second_level_dictmulti_level_dfr:   r;   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sJ |d jtjks#J |d jtjks-J d S )	Nr   r   r1   r   r;  r  )r   r0   )r   r0   )r   rK   r   rs   object_r  r*   r*   r+   test_unstack_preserve_types  s   
z6TestStackUnstackMultiLevel.test_unstack_preserve_typesc                 C   sh  t t dd}t d}t|gd ddgg |gd t ddg d}tt d|d}| }|jd	ks<J | }t	
|||j tddgg|gd  t ddg|gd  d}tt d|d}|d}|jd	ksyJ 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sJ d S )N  r1   rj   r   r0   r   rw  r5   )r  r1   r>   )r   r  r   r   r   r	   r   r   r   r   r8   r  r3   )r   r   r   r3   rf   r:   r$   r*   r*   r+   !test_unstack_group_index_overflow  s2   

$
z<TestStackUnstackMultiLevel.test_unstack_group_index_overflowc                 C   s   t g dg ddgd dddg}d|d	< |s$t|jjd
ks$J |d}|d d|d< t g dtjdddggt	ddgdddt
jg dd dgdd}|rf|d d|d< |d d|d< t|| d S )N)rn   rn   ro   )cacbr  r	  r-   )r.   r/   r  r.   r/   r0   is_r1   r  r  r   )      $@r  r   r   r  r9  r   rn   ro   r   )rK   rZ   ))r  r  r  r  r  r  r  r   r2   r  rb   r  )r   r^   rC   rD   rE   r   r  r   r   r   r   r\   ra   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 g dg dg dg dd}|g d}g d}|jj|dd|_|jj|d	d|_|d
d  j}tg dg dgg dg dgdd	gd}t|| d S )Nr  )r-   r>   r0   r1   r  )L1L2L3r@   )r  r  r  )n1n2n3Nr  )r9   r   r  r  )r@   r0   r  )r1   r-   r   r0   r   )	r   r^   r3   
set_levelsr   r  r   r   r  )r   r   
new_levelsr:   r;   r*   r*   r+   test_unstack_with_level_has_nan  s$   z:TestStackUnstackMultiLevel.test_unstack_with_level_has_nanc                 C   sx   t tddgtg dd}|d}t dtjtjgtjddgtjddggtg dtg dd	}t	|| d S )
Nr0   rI   ))r   NN)r   r1   r   )r   r1   r0   )r   r-   r   )r   r-   r0   r   r1   r9  )r   N)r   r   r   r0   )r  )r   r1   )r   r-   r2   )
r   r   r!  r   r\   r   r   r   r   r   r7  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 )Nrn   r1   ro   r  ccddrj   r>   r   r0   r   r-   rh   rI   ri   aabbaabbcdcdcdcdr   )r   r   rz   r   rq   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 )Nr>   r1   rn   rp   r  r  r   r   r0   Numr   r4   r3   rK   r9  g       @r=   ro   )r   r/   )r0   r/   r   )r   r   r   r   r   r\   r   r   rs   r   r   r   )r   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 )Nrn   r   r0   r   r.   r/   r5   r   r  )r   r   )r   r0   )
r   r7   r   rz   r   r   r\   r4   r   r   r   r*   r*   r+    test_unstack_categorical_columnsR  s   z;TestStackUnstackMultiLevel.test_unstack_categorical_columnsc           	      C   s   ddg}ddg}g d}t j|||gg dd}ttt|}t||dgd	}|d
dg}|jd|_d|j	d d df< |
d
dg }|jdd
d
dg }t|| d S )NITAFRAA1A2)CRTDBTNET)PAEVARTYPr   VALUE)rd   r3   r4   r  r  r   i'  )A0r  r0   r  )r   r7   rq   r6   rC   r   r   r4   r,  rc   r   r  r   r8   )	r   r  r  r  r   VDFr:   r;   r*   r*   r+   test_stack_unsorteda  s   z.TestStackUnstackMultiLevel.test_stack_unsortedc                 C   s   t jddgddggddgd}tg dd	d
}tg dg dg dg}t|||t d}|d}|	tj
d	t }t|| ||jd  	t ||jd < |d}|	td}t|| d S )N5451154515r  t_meanstationelementr   r   r  r   )rw     r	     )r	  r  r      )i1     rG  r  r  r   )r   r7   r   r   r   r   rz   
Int64Dtyper   ra   rb   r   r   r4   Float64Dtyper   )r   r4   r3   arrr#   r:   r;   r*   r*   r+   test_stack_nullable_dtypes  s   
"
z4TestStackUnstackMultiLevel.test_stack_nullable_dtype)6r  r  r  r  r   r  r  r  r  r  rq   r   r   r  r   r   r\   r  r#  r(  r1  r2  r7  r8  r9  r=  r>  r@  rZ  r_  rp  ru  rv  r|  r}  slowr  r   chainfrom_iterabler6   r  r  r  r  r  r  r  r  r  r  r  r  r  r*   r*   r*   r+   r  8  s    
8&	
$

E/
% !r  )%r   ior   r   numpyr   r   pandas.errorsr   pandasrz   r   r   r   r   r	   r
   r   pandas._testing_testingr   pandas.core.reshaper   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r*   r*   r*   r+   <module>   sB    $	         
	