o
    d/                    @   s  d dl m Z  d dlmZ d dlZd dlZd dlZd dlmZ d dl	Z
d dl	mZmZmZmZmZmZmZ d dlmZ d dlmZ G dd dZd	d
 Zdd Zdd Zejdddgdd Zejdddgejddd gdd Zdd Z dd Z!dd Z"dd Z#G dd  d Z$dS )!    )datetime)StringION)PerformanceWarning)	DataFrameIndex
MultiIndexPeriodSeries	Timedelta
date_range)reshapec                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zejdd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   |  }tt|j|j|d d < | }t||d}| }| }t	
|| t	
|d | |d}|d}t	
|j| t	
|d j| d S )N)foobarr   r   )copynparangeprodshaper   stackr   unstacktmassert_frame_equalT)	selffloat_framedfstacked
stacked_df	unstackedunstacked_dfunstacked_colsunstacked_cols_df r#   j/var/www/html/visualizacion-main/env/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r,   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 )Nr)   r*         @   xyr9   r:   )	r   r   NaNlen_mgrblocksr   r   r1   )r   using_array_managerr   df2resr4   r#   r#   r$   test_unstack_not_consolidatedB   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)r)   r*   r7      dtype)r9   r'   )r9   r(   )r:   r(   )zr'   
fill_value)r)   rH   rC   )r*   r7   rH   r'   r(   r9   r:   rG   r,   rE         ?)r)   rN   rC   )r*   r7   rN   r'   r'   r(   )jkrP   r   r)   r*   )r9   r:   rG   wr9   r:   r   )rS   r(   rP   )r   r   r*   )r,   namerS   )r	   r   int16r   from_tuplesr,   r   r   r   r   float	set_indexr1   r   reorder_levelsnamesastypeint64loc)	r   datar3   r4   r   r   keyr   sr#   r#   r$   test_unstack_fillN   sB   
z&TestDataFrameReshape.test_unstack_fillc                 C   sN  ddgddgddgddgg}t |td	tjd
}tg d|_|jdd}g dg dg dg}t |tdtjd}tg d|_t	
|| |d tj|d< |d tj|d< |jdd}|d tj|d< |d tj|d< t	
|| |jdd}g dg dg dg}t |tdtd}tg d|_t	
|| d S )Nr)   r*   r&   r7   rC            AB)r-   rE   rF   rH   rI   )r)   r&   r*   r7   )rH   rC   rH   rb   )rc   rH   rd   rH   xyzrM   )Ar'   )rh   r(   )Br'   ri   r(   rh   ri   rN   )rN   rC   rN   rb   )rc   rN   rd   rN   )r   listr   int32r   rV   r,   r   r-   r   r   r[   rU   float64rW   )r   rowsr   r3   r4   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-01r7   periodsrF   r   r&   r)   r*   rK   rL   r.   rI   )r   valuesr	   r   rV   r,   r   r   pdNaTr   r   )r   dvr^   r3   r4   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>r7   rF   r   r&   r)   r*   rK   rL   r.   rI   )r/   r	   r   rV   r,   r   r   rt   ru   r   r   )r   tdr^   r3   r4   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-04rF   r   r&   r)   r*   rK   rL   r.   rI   )	r   r	   r   rV   r,   r   r   r   r   )r   rr   r^   r3   r4   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'   categoryrD   rF   axaabc
categoriesbcxrK   rf   r.   z9Cannot setitem on a Categorical with a new category \(d\)matchdrI   r   acabcc)r	   r   rV   r,   r   r   rt   Categoricalrk   r   r   pytestraises	TypeError)r   r^   r3   r4   msgr#   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   r)   r*   r&   rg   rj   rZ   r)   	   r*   r   er.   )r)   r)   r)   r*   r*   r*   )r   r'   r   r(   )r   r   r   r'   r   r(   )r   r   rT   r-   r,   )r   r0   r   r   rV   r   r   r   r   idxr   r3   r4   r#   r#   r$   $test_unstack_tuplename_in_multiindex  s   
z9TestDataFrameReshape.test_unstack_tuplename_in_multiindexz>unstack_idx, expected_values, expected_index, expected_columnsrg   )r)   r)   r*   r*   ))r)   r&   )r)   r7   r*   r&   )r*   r7   ri   Cr   )r   r   r   r   N)rg   ri   )r)   r)   r)   r)   r*   r*   r*   r*   r&   r7   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*   )Nrg   ri   c           	      C   sj   t jddgddgddggg dd}tdgd	 dgd	 d
|d}||}t|||d}t|| d S )Nr'   r(   r)   r*   r&   r7   )rg   ri   r   r   rd   r   r.   r   )r   r0   r   r   r   r   )	r   unstack_idxexpected_valuesexpected_indexexpected_columnsr   r   r3   r4   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&   r)   r   20010102)      ?g      I@g      Y@float32)r6   g      @g      @rm   F)r)      i2 int8)stater,   some_categoriesrh   ri   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_compareh  s   
zNTestDataFrameReshape.test_unstack_preserve_dtypes.<locals>.unstack_and_comparer   r,   r   r   r   )r   ri   r   ri   r   rh   )	r   r	   r[   r   randomrandrt   	TimestamprX   )r   r   r   df1r`   r#   r#   r$   test_unstack_preserve_dtypesV  s8   





z1TestDataFrameReshape.test_unstack_preserve_dtypesc                 C   s   t ttjtddd}ttj	dd|d}t
|jddgd|jddjdd t
|jd	d
gd|jddjdd | }|jjtddd}|d u sUJ t
|jddgd|jddjdd d S )Nr&   repeat      r-   r)   r*   levelrH   T)inplace)r   rV   rk   	itertoolsproductr/   r   r   r   randnr   r   r   r   r-   	set_names)r   r-   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)rh   catlong)ri   r   r   )rh   dogshort)ri   r   r   expanimalhair_lengthr   r7   r   r   r   r   r   )r   r   r)   r)   Fcheck_nameszSlevel should contain all level names or all level numbers, not a mixture of the twor   r   )r   r   r   )r   rV   r   r   r   r   r   r   r-   rZ   r   r   r   r   
ValueError)r   r-   r   animal_hair_stackedexp_hair_stackedr@   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   r7   r   r   r   r   r   rR   r)   r*   Fr   r   )r*   r   r)   )r   rV   r   r   r   r   r   r   r-   rZ   r   r   )r   r-   r   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(   r   lcolr+   rD   )
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   r)   r)   r   r)   r   r)   )r)   r   r)   r   )firstsecondthirdr2   codesrZ   r   r.   r)   r*   r   r   rD   r   r   r+   )r   r	   r   r   r   r   r   r   rm   r   r   r   )r   mir`   r3   expected_mir4   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 )Nr)   r*   r6   r7   r8   r   r9   r:   )r   r   r   r)   r)   r)   )r   r)   r*   r   r)   r*   r2   r   r&   r.   )r   
isinstancer	   r   r   r   r   r   r;   r   r,   r   r1   r   r/   )	r   r   r^   undor3   midxr4   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)r)   r)   r&   r7   r)   r*   r&   r7   )r*   r)   r&   r7   )r*   r*   r&   r7   ABCDr   r\   r7   r.   rh   ri   )r   r   r   r   )r)   r*   r)   r*   )Nri   r   r6   r   rm   r*   r   r   r   )r   rk   dtypesr	   r   rE   r   r1   rX   r   r   r   )r   rn   r   r3   r4   r@   r   r#   r#   r$   test_unstack_dtypes)  sH   


z(TestDataFrameReshape.test_unstack_dtypeszc, drC   f8rD   
   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'   rC   rp   rq   )rh   r   r   ri   r&   T)deeprh   ri   r   r\   r   )r   r'   )r&   r*   )
r   r   ilocr   rX   r[   r   r   r   r   )r   r   r   r   rightleftr#   r#   r$   test_unstack_dtypes_mixed_dateU  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 )
NrK   )r   r   c1r   r)   r*   r.   z5The name c1 occurs multiple times, use a level numberr   )	r   rV   r   r   r   r   r   r   r   )r   r   r   r   r#   r#   r$   #test_unstack_non_unique_index_namess  s   "z8TestDataFrameReshape.test_unstack_non_unique_index_namesc           	      C   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'   )rh   ri   r   r   rH   r)   r   r&   r.   rh   ri   r   )r)   r)   r)   r   r   r   r+   )r   r)   rc   r   r)   r*   r&   r   r   r*   r   r*   r7   r*   axisr   )r   r0   r   r   r   r   r-   r2   allr   r   r   concatenate)	r   r   r   r3   exp_colr4   r2   r   blockr#   r#   r$   test_unstack_unused_levels}  s$   
"z/TestDataFrameReshape.test_unstack_unused_levelsz"level, idces, col_level, idx_levelr   )      rb   r   r*   rC   rd      r'   r*   r)   )rd   r  r)   r7         r  r  c                 C   s   g dg dg}g dg dg}t ||}td}t|dd|d}	|	j|d	}
td
tj }|||< t ddg|g}t|dd||d}t	
|
| d S )N)r'   r*   r   )r)   r&   rC   rc   )r   rH   r)   r)   )r   r*   rH   r*   rd   r7   r*   r.   r      r   r)   r&   rb   r+   )r   r   r   r   r   r   zerosr   r0   r   r   )r   r   idces	col_level	idx_levelr2   r   r   r^   r   r3   exp_datacolsr4   r#   r#   r$   )test_unstack_unused_levels_mixed_with_nan  s   

z>TestDataFrameReshape.test_unstack_unused_levels_mixed_with_nanr#  rh   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   rX   r]   slicer   r  r   r0   r-   r,   	droplevelr   r   )r   r#  r   ind	selectionr3   r4   r#   r#   r$   test_unstack_unused_level  s   z.TestDataFrameReshape.test_unstack_unused_levelc                 C   s   t dggtjdggdgdtjg dgg ddd}|g d}t dggtjg dgg d	dtdgd
dd}t|| d S )Nr)   r   r  r   )r   r   r)   r   r   r   r)   )i1i2i3i4i5i6i7r   )r.  r/  r0  r1  r2  r3  )r  r.  r/  r0  r1  r2  r3  r-  r   )r   r   rV   r   r   r   r   r   r   r3   r4   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        ri   r   r   r  c2r   )r     r   )r  r8  (   r-  r.  r/  r   r.  r-  r   )r   r   rV   r   r-   rZ   r   r   r#   r#   r$   test_unstack_multi_level_cols  s   *	z2TestDataFrameReshape.test_unstack_multi_level_colsc              	   C   s   t ddgddgddgddggtg d	g d
gtjg dg dg dg dgg ddd}|ddg}|dgdg}t|| d S )Nr)   r*   r&   r7   rH   r   r   )r   r   f)m1P3   )r@  A5o   )m2rA  rB  )rE  rC  rD  r:  r   r   r/  r.  )r   r   rV   r   r   r   r4  r#   r#   r$   &test_unstack_multi_level_rows_and_cols  s   z;TestDataFrameReshape.test_unstack_multi_level_rows_and_colsr   jimjoe)rI  rH  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   )rS   r9   r:   rG   )za.wzb.xz .yzd.z)rH  rI  jolierH  rI  rT  r   c                 S      t | tr	t| S | gS r   r   tuplerk   r'   r#   r#   r$   <lambda>
      z>TestDataFrameReshape.test_unstack_nan_index1.<locals>.<lambda>.)r   r   r   rX   r   r   r   r   rk   notnars   sumr<   nonzerozipsortedr  splitr,   r-   map)r   r   rJ  rR  r   r
  r	  r   udfmk_listrn   r#  rz   rP   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   rK  rL  r#   rO  r#   r#   r$   rR    rS  zATestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.castr   r&   rC   r'   r*   r   r   r(   r:   rS   rG   r7   r9   )C   '   5   H   9   P      r  r  r   ;   2   >   rs  L   4      rn  <   3   rf  c                    s   d t | S )Nr[  )joinrb  rrR  r#   r$   rY  C  s    zETestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.<lambda>r)   r  c                    s   d t | jd d d S )Nr[  rH   )r{  rb  r  r|  r~  r#   r$   rY  D  s    rj  rk  r   c                 S   rU  r   rV  rX  r#   r#   r$   rY  J  rZ  r[  )r   r   r   applyrX   rk   r   r\  rs   r]  r<   r^  r_  r`  r  ra  r,   r-   rb  )r   r   rJ  r   r   r   rc  rd  rn   r#  rz   rP   r
  r	  r#   r~  r$   test_unstack_nan_index_repeats  sV   



)$z3TestDataFrameReshape.test_unstack_nan_index_repeatsc              	   C   s  t tdtdtdd}|ddi}tj|jd< |ddgd}d	dd
dtj	tj	tj	tj	gtj	tj	tj	tj	ddddgg}tt
tt| }ttj	dd
dddddgdd}tdgddggddgdd
ggd dgd}t |||d}t|| t tdttdd tdd}|ddi}tj|jd< |ddgd}dtj	gddgd
dgtj	dgd	dgg}tdgddggddgdd
ggd dgd}ttj	dd
dd	gdd}t |||d}t|| t tdttdd tdd}|ddi}tj|jd< |ddgd}d	tj	gddgd
dgddgtj	dgg}tdgddggddgdd
ggd dgd}ttj	dd
dd	gdd}t |||d}t|| d S )Naaaabbbbrd   r  ri   rW   r&   r)   rh   r   r&   r)   r*   r7   rC   rb   rc   r   r   r'   r(   r   r   )r*   r)   )r   rk   r/   r[   r   r;   r  rX   r   r   rb  r_  r   r   r   r   )r   r   r
  valsr   r#  r	  r#   r#   r$   test_unstack_nan_index2R  sH    $& $& z,TestDataFrameReshape.test_unstack_nan_index2c              	   C   s   t tdtddd d tdd}tj|jd< |d	d
g	 }t
ddddtjdgtjdddddgg}tddgd	d}tdgtdddgg dg dgd d
gd}t |||d}|rs|jg d }|| |d j||< t|| d S )N
aaaaabbbbbrp   rC   rq   r*   r  r  r  rh   ri   r&   r   r)   r7   rb   rc   rd   r   r'   r(   r   r   )r   r   r   r   r   r   )rH   r   r)   r*   r&   r7   r   r   )r)   r*   r&   rC   )r   rk   r   tolistr   r   r;   r  rX   r   r   r   r   r   r-   r[   rE   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(Ur6  Pbg	VZ>)Sn@>]K=?)=()Agr6  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   r)   rH   r  r  r   r  )r  r  r  r  r  )r   r   r   r   r   r   r)   r*   r&   r7   r  r  )
r   r   r   r   rX   r   r   r   r   r]   )r   r  r   r
  r   r#  r	  r#   r#   r$   test_unstack_nan_index4  s<   z,TestDataFrameReshape.test_unstack_nan_index4c                 C   s  t g dtdddddtd tjdd dd	}|d
 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)r)   r*   r)   r*   r)   r*   z
2014-02-01rb   r   )rr   freqd   r  r*   )rg  rh  rH  rI  rh  z
2014-02-02ri  )r)   rh  )r&   rh  )r)   ri  )r7   ri  rf  rG  rg  )r   r   r   r   r   r   roundrt   r   r   r]   rX   r   r\  rs   r]  r<   iterrows)r   r   r
  r   r   r}  r_   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  r)   r  rh   ri   r   r  )ri   r+   )r   r   r   rV   r   r0   r   r   )r   tr   r3   eidxecolsr4   r#   r#   r$   %test_stack_datetime_column_multiIndex  s   z:TestDataFrameReshape.test_stack_datetime_column_multiIndexmultiindex_columnsr  r  )r   r)   r*   r7   rR   r   )r*   r&   r7   )r7   r&   r*   r)   r   )r&   r*   r)   r   )r7   r*   r)   r   )r*   r)   r   )r&   r*   r)   )r7   r&   r*   r   rH   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)ri   r9   )ri   rG   )rh   r:   )r   r9   )r   uUpperLowerr   r&   r   F)r   dropnaT)r   rV   r   r   r   r<   r   r   r   intr	   r   r1   r   r-   to_numpyrZ   )r   r  r   full_multiindex
multiindexr   r3   r4   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   rb   r*   r&   )r   r)   r&   r   Fr  r   r)   rC   r7   )r  r9   r:   rG   r   )r)   r&   r)   r&   r   ri   r   r   r+   )r   rV   r   r   r   r   r   r   r   r[   r  r   r   )r   r  r   r3   r4   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 )Nrf   r   r  )r  r  r  r   r.   )rt   CategoricalIndexrk   r   r   r   r0   r,   r	   r   r1   )r   r  r  cidxr   r3   r   r4   r#   r#   r$   %test_stack_preserve_categorical_dtype9  s   z:TestDataFrameReshape.test_stack_preserve_categorical_dtypezlabels,datarf   )r  r  r  r  rx  r  zyx)rx  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   r)   r.   )
rt   r  r`  r   r0   r   r   r	   r   r1   )r   r  r  r^   r  cidx2r   r   r3   s_cidxr4   r#   r#   r$   +test_stack_multi_preserve_categorical_dtypeH  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   rh   ri   r  rh   ri   )r'   r'   r'   r'   r(   r(   r   r   r.   )	rt   r   r   r   r   r0   r	   r   r1   )r   r   r   r3   r,   r4   r#   r#   r$   ,test_stack_preserve_categorical_dtype_values]  s   zATestDataFrameReshape.test_stack_preserve_categorical_dtype_valueszindex, columnsr   r(   )r   r   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   rV   r,   r  r-   r   r   r   asarrayr   assert_numpy_array_equal)	r   r,   r-   r   r   	new_indexr4   stacked_codesexpected_codesr#   r#   r$   )test_stack_multi_columns_non_unique_indexh  s   
z>TestDataFrameReshape.test_stack_multi_columns_non_unique_indexc                 C   s   t j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))rh   r   rh   r)   )ri   r)   r'   r(   r   r   r)   NInt64rD   rO   r  r.   r   r*   )r   rV   r   rt   r   r   r   r[   r   r	   rh   rE   ri   r-   r   r1   r  r   )r   r   r,   r   r3   r4   expected_dtypesr#   r#   r$   "test_unstack_mixed_extension_types}  s   z7TestDataFrameReshape.test_unstack_mixed_extension_typesbazc                 C   s   t jdgddggddgd}tddgdd	gg|d
dgd}d|j_tg dgt jg dddgdd}d|j_| jddj	d|d}t
|| d S )Nr   r   r   r   r  r   r*   r)   r&   ri   rh   r+   r   )r&   r)   r*   r   ))r   rh   )r   ri   )r   rh   )r   ri   r   r  )r  r   )r   r0   r   r-   rT   rV   r,   r   	swaplevel
sort_indexr   r   )r   r   r   r   r4   r3   r#   r#   r$    test_unstack_swaplevel_sortlevel  s   z5TestDataFrameReshape.test_unstack_swaplevel_sortlevel)=__name__
__module____qualname__r%   r5   rB   ra   ro   rw   r~   r   r   r   r   markparametrizer   rV   r   r   r   r   r   r   r   r   r   r  r   r  r   r  r  r  r   r$  r(  r,  r5  r<  rF  rk   r/   re  r   permutationsr  r  r  r  r  r  r  r  r  r  r  r0   r  r  r  r#   r#   r#   r$   r      s    .$"

"*,),



=1) 

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   rD   rF   r'   r(   r   rK   rf   r.   r   rI   )r'   r   r'   )r(   r   r   )r	   r   rV   r,   r   r   r   r   rk   r   r   )r^   r3   r4   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   r)   r   r+   )	r   rt   r   rX   r   r   r   r   r   )r   r3   r4   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  rh   r   r.   rR   )r   r   r   r   )r   r   r   r	   r   r   r1   )tsr   r3   r4   r#   r#   r$    test_stack_timezone_aware_values  s    r  r  TFc                 C   s^   t jg t jdt jg t jdg}tt jt|g g gdd}tt jdj| d}t	|| d S )NrD   r   )rE   r,   r  )
r   r   r\   r	   rm   r   r   r   r   r1   )r  r2   r4   r3   r#   r#   r$   test_stack_empty_frame  s    r  rJ   c                 C   s8   t tjdj| dj|d}t tjd}t|| d S )NrD   r  rI   )r   r   r\   r   r   r   r   )r  rJ   r3   r4   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   rD   )r   r   r   r	   r   r\   r   )r   r#   r#   r$    test_unstack_single_index_series  s   "r  c                  C   s   t ddgddgddgddgdd	gd
} | g d} | jdgdd} | jdddjddd}| jddgdd}t g dg dgtddgddtjg dg ddd}t|| d S )NAliceBob      #@rd   FTr   femalemale)rT   scoreemployedkidsgender)rT   r  r  r  r  rI   r  r  )r  r6  r6  r6  )r6  r6  r6  g       @rT   r   ))r  r  Fr   )r  r  Tr   )r  r  Fr   )r  r  Tr   )Nr  r  r  r   r+   )r   rX   r   r   r   rV   r   r   )r   r4   r3   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 )Nr8   )r:   rG   r'   r   r)   r)   r)   r)   r   r   r:   rG   r   )r   r9   )r   r:   r)   r+   )r   r0   r   r   r   rV   r   r   )r-   r   r3   new_columnsr  r4   r#   r#   r$   2test_stack_positional_level_duplicate_column_names  s   
r  c                    s   t tdg dg}ttjdtjdtjtjdtjdd|d | s9t	dd  j
jD s9J   }tj fdd	td
D td
dd}t|| d S )NrC   r  r  r  r.   c                 s   s    | ]}|j j V  qd S r   )mgr_locsis_slice_likery   r9   r#   r#   r$   	<genexpr>3  s    z5test_unstack_non_slice_like_blocks.<locals>.<genexpr>c                    s   g | ]} |   qS r#   )r   )ry   nr   r#   r$   r{   7  rZ  z6test_unstack_non_slice_like_blocks.<locals>.<listcomp>r7   r)   )keysr  )r   r0   r/   r   r   r   r   r[   r\   anyr=   r>   r   rt   concatr   r   )r?   r   rA   r4   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 Z5dmdn Z6dS )oTestStackUnstackMultiLevelc                 C   s6   |}|  }|   |t   |tj   d S r   )r   r[   r  r   rl   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_row)r)   r)   NN      >@N)r*   r*   NNr  N)ix1ix2col1col2col3col4r*   )NNr  N)r)   r)   NNr  )r*   r*   NNr  )r  r  r   r  r  )NNr  )r*   NNNr  Nc                 C   sp   t ||dddg}|jdd d}t |gtj|dd  |ggd dgdtdgddd}t|| d S )	Nr   r  r  r)   r*   r   r   r   )	r   rX   r  r   r   r0   r   r   r   )r   result_rowsresult_columnsindex_productexpected_rowr3   r4   r#   r#   r$   test_unstack_partialI  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   )r)   r  r)   )r)   quxr)   r7   r.   r)   r*   r  r  how)
r   rV   r	   r   r   r   r   r  r   r   )r   r,   r`   r   r4   r#   r#   r$   &test_unstack_multiple_no_empty_columnst  s   zATestStackUnstackMultiLevel.test_unstack_multiple_no_empty_columnsc           
      C   s  |}|  }| }t|| |jdd}| d}| }t|jdd| |d d d }| d}| dd}t|jdd| |dd}| djdddd}|ddd}t|jdd| |  }|jddd}| }t|| | d d}|d}|  }t|| |d}| d}t|| |d}|  d d}t|| | djd d d d d	f }|  }| }	t||	|j	 | dd
}| dd}t
|| d S )Nr*   r   r   rH   r)   r  F)r  	ascendingr&   r   )r   r   r   r   r  r  r]   r1   reindexr,   assert_equal)
r   r  r  r   	restackedunlexsortedr3   r4   r   ymd_stackedr#   r#   r$   
test_stack  sJ   





z%TestStackUnstackMultiLevel.test_stackzidx, columns, exp_idxababrf  r'   r(   r&   r7   r   )rg  rh  rg  rg  rh  )r   r)   r   ))r'   r*   )r(   r)   )r'   r)   )r(   r*   r)   )r)   r   r)   )r&   rb   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  r7   r&   r+   r.   F)r   r   r   r   r   r	   r   r1   r,   	is_uniqueassert_index_equal)	r   r   r-   exp_idxr   r3   r4   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smokerr*   )rt   read_csvr   rX   r   r   r   r   )r   r^   r   r3   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   fourr)   )r   r  Fr   r   )	r   r  r   r   r1   rT   rE   r   float_)r    multiindex_dataframe_random_dataframer   r   r3   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'   )r)   r*   r&   r7   r)   r&   )hir(  byer)  r)  peaceg      @)r   r   barcoder  extra)r   r   r+  r  )r   r   r   groupbyr  r<   r   r   r   r1   r  r,   r[   rW   )r   r   r3   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   r,   rT   r-   rZ   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   )r]   r   r   KeyErrorgetattrr  )r   r0  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$  r3   r4   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   r1   )r   r#  r$  r   r3   r4   r#   r#   r$   test_stack_level_nameA  s   


z0TestStackUnstackMultiLevel.test_stack_level_namec                 C   s2  |}| ddg}| d d}t|| |jj|jjk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monthrh   r   r)   r*   r   r  r
  )r   r   r   r-   rZ   r   r  r  r,   r  r]   )r   r  r  r   r4   r`   s_unstackedr  r#   r#   r$   test_stack_unstack_multipleM  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 )Nr7  r8  zlevel should containr   r   )r   r   r   r   r   r  r#   r#   r$   test_stack_names_and_numbersl  s
   "z7TestStackUnstackMultiLevel.test_stack_names_and_numbersc                 C   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 )
Nr7  r8  zToo many levelsr   r*   r&   znot a valid level numberr>  r=  )r   r   r   
IndexErrorr   r  r#   r#   r$   !test_stack_multiple_out_of_boundsw  s   "z<TestStackUnstackMultiLevel.test_stack_multiple_out_of_boundsc              	   C   s  t jg dddd}tddgd dd	}g d
}t||g}t||d}| }|jdd}|jdd}t jg dddd}	tg dg dd|	ddgd}
d|
j_	t
||
 t
||
 t
||
j t jg dddd}t jg dddd}t||g}t||d}| }|jdd}|jdd}t jg dddd}	t jg dddd}ttjtjtjtjddgtjtjddtjtjgddtjtjtjtjgg|	|d}
t
||
 t
||
 t
||
j d S )N)2013-01r>  2013-02r?  2013-03r@  Mperiodr  rT   rh   ri   r&   strr   r)   r*   r&   r7   rC   rb   r.   r)   r   r   )r>  r?  r@  )r)   r&   rC   )r*   r7   rb   r  r+   period1)2013-122013-112013-102013-092013-082013-07period2)rL  rK  rJ  rI  rH  rG  r*   r7   rb   rC   )rt   PeriodIndexr   r   r   r	   r   r   r-   rT   r   r   r   r   r   )r   idx1idx2valuer   r`   result1result2result3e_idxr4   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-02rY  rY  rX  rX  rA  rF  rC  )rG  rG  rY  rI  rI  rY  rM  rE  )rb   rC   r7   r&   r*   r)   r  r.   r)   r   r   rX  rY  )rI  rG  rY  rI  rG  rY  zA A A B B B)rC   r)   rb   r*   rb   r)   )r7   r*   r&   r&   rC   r7   r+   )rX  rY  rX  rY  )rI  rG  rY  zA A B B)rC   r7   r*   r&   )r)   r*   rb   rC   )rb   r&   r)   r7   )	rt   rN  r   r   r   r   ra  r   r   )r   rO  rP  rQ  r   r   rR  rS  rT  e_1e_2rV  r4   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}t
jtdd |d  W d    n1 sWw   Y  |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  rb   )IDNAMEDATEVAR1r_  r]  ParamszCould not convertr   zW-THUT)numeric_onlyr`  )rt   to_datetimer   r   randintr   rX   r-   rT   r   r   r   r   resamplemeanr   r]   r   r   )r   id_colrT   datevar1r   multiunst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b2r)   r  rh   ri   Fr  T)r   rX   r   r   r<   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   r)   r)   r)   r)   )r   r   r)   r)   r   r   r)   r)   )r   r)   r   r)   r   r)   r   r)   r   r   r+   r   r   r   r(   r   )r   r,   rZ   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
}|g d}|d d S )N  r  )sizei,  irc   i   i  )rh   ri   r   r   r   r   )rh   ri   r   r   r   r   )r   r   r   rd  r   rX   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   r)   r  r   r  r7   r*   r.   )r   r   r   r   r   r   r<   r-   r   r   r   )r   r2   r   r,   r   r3   r  r#   r#   r$   test_unstack_unobserved_keys;  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~  P  s   zjTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32.<locals>.MockUnstacker.__init__)r{  N)r  r  r  r~  __classcell__r#   r#   r  r$   MockUnstackerO  s    r  
_Unstackeri   r*   r.   z$The following operation may generater   r|  )reshape_libr  contextsetattrr   r   r   r   r   r   assert_produces_warningr   r   r   r  r   )r   monkeypatchr  mr   r   r#   r#   r$   /test_unstack_number_of_levels_larger_than_int32J  s"   

"zJTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32r2   c                 c   s*    | ]}t jt g d |ddV  qdS )rR   r*   r   N)r   r   r  )ry   widthr#   r#   r$   r  b  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   r7   )r-   r^   c                 3   sH    | ]} j D ]} j||f j|| f|d   f kV  qqdS )r)   N)r-   r]   ry   rowr   r   
df_stackedr  r#   r$   r  n  s    zSTestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels.<locals>.<genexpr>)r   r   r/   r   r  r,   )r   r2   r  r-   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)rh   r   ri   )ri   rh   r   r&   r   rC   rH   )r-   r,   r^   c                 3   sJ    | ] } j D ]} j||f  d j||d  f|d f kV  qqdS r  )r-   r]   r   r  r  r#   r$   r    s    ,z]TestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels_multi_row.<locals>.<genexpr>)r   r   r   r/   tiler   r   r<   r   r  r,   )r   r   r#   r  r$   /test_stack_order_with_unsorted_levels_multi_rowu  s    zJTestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels_multi_rowc                 C   s   t d}t dd |D dd |D g}t|jddgd}d|j_d	|i}tj|d
d}ddg|j_	|j
t|jd
d}|ddgddg}tddgddgddgddgddggg dtjddgddgdd}t|| d S )NrC   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  rX  r#   r  r#   r#   r$   r{     r|   r(   r'   r   r   r9   r)   r  r   a0b0rn  rp  ro  rq  a3b3a4b4r  )r'   r9   )r(   r9   r   r+   )r   r   vstackr   r   r-   rT   rt   r  rZ   r  r`  r   r   r   rV   r   r   )r   rs   r^   r   second_level_dictmulti_level_dfr3   r4   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   r*   r   r8  r  )r   r)   )r   r)   )r   rE   r   rm   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  r*   rd   r   r)   r   rt  r.   )r  r*   r7   )r   r  r   r   r   r	   r   r   r   r   r1   r  r,   )r   r   r   r,   r`   r3   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)rh   rh   ri   )cacbr  r  r&   )r'   r(   r  r'   r(   r)   is_r*   r  r  r   )      $@r  r   r   r  r6  r   rh   ri   r   )rE   rT   ))r  r  r  r  r  r  r  r   r+   r  r\   r  )r   rX   r<   r=   r>   r   r  r   r   r   r   rV   r[   r   r   )r   r?   r   r3   r4   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&   r7   r)   r*   r  )L1L2L3r9   )r  r  r  )n1n2n3Nr  )r2   r   r  r  )r9   r)   r  )r*   r&   r   r)   r   )	r   rX   r,   
set_levelsr   r  r   r   r  )r   r   
new_levelsr3   r4   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 )
Nr)   rC   ))r   NN)r   r*   r   )r   r*   r)   )r   r&   r   )r   r&   r)   r   r*   r6  )r   N)r   r   r   r)   )r  )r   r*   )r   r&   r+   )
r   r   r  r   rV   r   r   r   r   r   r4  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 )Nrh   r*   ri   r  ccddrd   r7   r   r)   r   r&   rb   rC   rc   aabbaabbcdcdcdcdr   )r   r   rt   r   rk   r   r   r   r   r   r   r   r   )r   r   r   r3   r4   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 )Nr7   r*   rh   rj   r  r  r   r   r)   Numr   r-   r,   rE   r6  g       @r6   ri   )r   r(   )r)   r(   r   )r   r   r   r   r   rV   r   r   rm   r   r   r   )r   df_nanr3   r4   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 )Nrh   r   r)   r   r'   r(   r.   r   r  )r   r   )r   r)   )
r   r0   r   rt   r   r   rV   r-   r   r   r   r#   r#   r$    test_unstack_categorical_columnsT  s   z;TestStackUnstackMultiLevel.test_unstack_categorical_columnsc           	      C   s   ddg}ddg}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)r^   r,   r-   r  r  r   i'  )A0r  r)   r  )r   r0   rk   r/   r<   r   r   r-   r)  r]   r   r  r   r1   )	r   r  r  r  r   VDFr3   r4   r#   r#   r$   test_stack_unsortedc  s   z.TestStackUnstackMultiLevel.test_stack_unsortedc                 C   s   t jddgddggddgd}t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   )rt     r     )r  r  r      )i1     rD  r  r  r   )r   r0   r   r   r   r   rt   
Int64Dtyper   r[   r\   r   r   r-   Float64Dtyper   )r   r-   r,   arrr   r3   r4   r#   r#   r$   test_stack_nullable_dtypeu  s   
"
z4TestStackUnstackMultiLevel.test_stack_nullable_dtypec                 C   s   ddgddgddgg}t j|dd}tdddgi|d	}|d
}tdgdggt jdgd d
gdt jddgddgdd}t|| d S )Nr'   r)   r*   redblue)r9   r   r:   r   r  r.   r9   )r  r'   )r)   r  )r*   r  r   r:   r   )r   r   r   r   rV   r   r   )r   arraysr   r   r3   r4   r#   r#   r$   test_unstack_mixed_level_names  s   

z9TestStackUnstackMultiLevel.test_unstack_mixed_level_names)7r  r  r  r  r   r  r  r  r  r  rk   r   r   r  r   r   rV   r  r   r%  r.  r/  r4  r5  r6  r:  r;  r=  rW  r\  rm  rr  rs  ry  rz  slowr  r   chainfrom_iterabler/   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#   r#   r#   r$   r  ;  s    
8&	
$

E/
% !r  )%r   ior   r   numpyr   r   pandas.errorsr   pandasrt   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    $	         
	