
    Owg_|                       d dl m Z  d dlZd dlZd dlZd dlZd dlm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  ej2                  ddg	      d
        Z G d d      Zej8                  j;                  dddg      d        Zd Zd Z d Z!ej8                  jE                  d      ej8                  j;                  dddejF                  g      d               Z$ej8                  jE                  d      ej8                  j;                  dddejF                  g      ej8                  j;                  ddd g      d                      Z%d Z&d Z'ej8                  jE                  d      d        Z(d Z)ej8                  jE                  d      d        Z*ej8                  jE                  d      d        Z+ G d d       Z,d! Z-ej8                  j;                  d"dej\                  fdej\                  fdej^                  fd#ej^                  fg      ej8                  j;                  d$ddg      d%               Z0y)&    )datetimeN)lib)PerformanceWarning)	DataFrameIndex
MultiIndexPeriodSeries	Timedelta
date_range)reshapeTF)paramsc                     | j                   S N)param)requests    \/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/frame/test_stack_unstack.pyfuture_stackr      s    ==    c                   `   e Zd Zd Zej
                  j                  d      d        Zd Zej
                  j                  d      d        Z	d Z
d Zd Zd	 Zd
 Zd Zej
                  j!                  ddg dg dg dg dg ej$                  g dddg       ej$                  g dddg      fdg dg dg eddgd       ej$                  g dg d      fg      d        Zd Zej
                  j                  d      d        Zej
                  j                  d      d        Zej
                  j                  d      d         Zd! Zej
                  j                  d      d"        Zd# Zd$ Zej
                  j!                  d% ej<                  d&       ej<                  d&      f ej>                  d&d'(       ej>                  d&d)d'(      ff      d*        Z ej
                  j                  d      d+        Z!d, Z"ej
                  j!                  d-d.g d/ejF                  d0d1gejF                  d&d2gfd2g d3ejF                  d&d2gejF                  d0d1gff      d4        Z$ej
                  j!                  d5d6dg e%d      g      d7        Z&d8 Z'd9 Z(d: Z)ej
                  j!                  d;d<d=g      ej
                  j!                  d> e* e+d1                  d?               Z,ej
                  j!                  d; e-j\                  g d@            ej
                  j!                  d> e* e+d                  ej
                  j!                  dAdBdCg      dD                      Z/dE Z0dF Z1dG Z2dH Z3dI Z4ej
                  j                  d      ej
                  j!                  dJg dKg dLg dMg dNg dOg dPd.d2gd.d1gd.dgd.gd1gdgg dQg dRg dSg dTg dUg dVd2d.gd1d.gdd.gg      ej
                  j!                  dWdXd.d2d.d2gd2d.gf      dY                      Z5ej
                  j                  d      dZ        Z6ej
                  j!                  d[d\d]g      d^        Z7ej
                  j                  d      ej
                  j!                  d[d\d]g      ej
                  j!                  d_ e*d`      g daf e*db      g dcfg      dd                      Z8de Z9ej
                  j                  d      ej
                  j                  df      ej
                  j!                  dgg dh ejt                  d2d1gd0digg      fg dj ejt                  d2d1gd0digg      fg dL ejt                  d2d1gd0digg      fg      dk                      Z;ej
                  j                  d      ej
                  j!                  dld2d1gdmdngdodpdpfd2d1gdqdrgdodsdtfg      du               Z<ej
                  j!                  dWd.d2g      dv        Z=ej
                  j!                  dWd.dwg      dx        Z>y)yTestDataFrameReshapec                 h   |j                         }t        j                  t        j                  |j                              j                  |j                        |d d  |j                  |      }t        ||d      }|j                         }|j                         }t        j                  ||       t        j                  |d   |       |j                  d      }|j                  d      }	t        j                  |j                  |       t        j                  |	d   j                  |       y )Nr   )foobarr   r   )copynparangeprodshaper   stackr   unstacktmassert_frame_equalT)
selffloat_framer   dfstacked
stacked_df	unstackedunstacked_dfunstacked_colsunstacked_cols_dfs
             r   test_stack_unstackz'TestDataFrameReshape.test_stack_unstack   s    		"''"((+,44RXX>1(((5ww?@
OO%	!))+
i,
l5126 +&..q1
n..3
/688"=r   9ignore:The previous implementation of stack is deprecatedc           	      H   t        d      g dddgg}t        d|d   |d         }|j                  |      }t        dt	        j
                  |d d             }t        j                  ||       t        d|d   t	        j
                  |dd              }|j                  d|      }t        dt	        j
                  |d   |d   g      |d         }t        j                  ||       |d	d
g   j                  d|      }|d	d
g   }t        j                  ||       y )N   )r2   ab      r   indexcolumnsr   r8   r3   r4   )	ranger   r!   r
   r   from_productr#   assert_series_equalr$   )r&   r   levelsr(   resultexpecteds         r   test_stack_mixed_levelz+TestDataFrameReshape.test_stack_mixed_level1   s#   
 (MAq62 qq	6!9=|4!:#:#:6"1:#FG
vx0 qq	:3J3J6RSRT:3VW!,7Z,,fQi-CDfUVi
 	fh/ S#J%%al%CS#J'
fh/r   c                 8   t        ddt        j                  gddt        j                  gd      }|dg   }|d   |d<   |s$t        |j                  j
                        dk(  sJ |j                         }|j                         }t        j                  ||       y )Nr5   r6         @   xyrF   rG   )	r   r   nanlen_mgrblocksr"   r#   r=   )r&   using_array_managerr(   df2resr@   s         r   test_unstack_not_consolidatedz2TestDataFrameReshape.test_unstack_not_consolidatedK   s    aBFF^32662BCD#ic7C"sxx'1,,,kkm::<
sH-r   c                    t        g dt        j                        }t        j                  g d      |_        |j                  d      }t        g dg ddg d	t        j                  
      }t        j                  ||       |j                  d      }t        g dg ddg d	t        
      }t        j                  ||       t        g dg dg dg dd      j                  g d	      }|j                  ddgd      }d}||   }t        g d|j
                  |      }t        j                  ||       |j                  ddg|      }|j
                  j                  |j
                  j                        |_        |j!                  t        j"                        }|j$                  |j
                     }t        j                  ||       |d   }	|	j                  ddgd      }|d   }t        j                  ||       y )N)r5   r6   rD      dtype)rF   r3   )rF   r4   )rG   r4   )zr3   
fill_value)r5   rV   rQ   )r6   rD   rV   r3   r4   rF   rG   rU   r8   rS         ?)r5   r\   rQ   )r6   rD   r\   r3   r3   r4   )jkr^   r   r5   r6   )rF   rG   rU   wrF   rG   r   )ra   r4   r^   )r   r   r6   )r8   namer   ra   )r
   r   int16r   from_tuplesr8   r"   r   r#   r$   float	set_indexr=   r!   reorder_levelsnamesastypeint64loc)
r&   r   datar?   r@   r(   r+   keyr)   ss
             r   test_unstack_fillz&TestDataFrameReshape.test_unstack_fillW   s    l"((3++<

 ,:.oRXX
 	fh/ -K0u
 	fh/ !iiX

)O
$ 	 JJSzaJ8	S>	sC
vx0//3*</H44RXX^^D..*RXX&
fb) sGC:!4S>
fh/r   c                    ddgddgddgddgg}t        |t        d	      t        j                  
      }t	        j
                  g d      |_        |j                  d      }g dg dg dg}t        |t        d      t        j                        }t	        j
                  g d      |_        t        j                  ||       |d   j                  t        j                        |d<   |d   j                  t        j                        |d<   |j                  d      }|d   j                  t        j                        |d<   |d   j                  t        j                        |d<   t        j                  ||       |j                  d      }g dg dg dg}t        |t        d      t              }t	        j
                  g d      |_        t        j                  ||       y )Nr5   r6   r2   rD   rQ            AB)r9   rS   rT   rV   rW   )r5   r2   r6   rD   )rV   rQ   rV   rq   )rr   rV   rs   rV   xyzr[   )Ar3   )rw   r4   )Br3   rx   r4   rw   rx   r\   )r\   rQ   r\   rq   )rr   r\   rs   r\   )r   listr   int32r   rd   r8   r"   r9   r#   r$   ri   rc   float64re   )r&   rowsr(   r?   r@   s        r   test_unstack_fill_framez,TestDataFrameReshape.test_unstack_fill_frame   s   AAAA/tT$Zrxx@))<
 r*nn=TeBHHE%11<
 	fh/ S'..*3S'..,3r* ,,RXX6 ,,RZZ8
fh/ s+.0@ATeEB%11<
 	fh/r   c                    t        dd      j                  }t        |      }t        j                  g d      |_        |j                         }t        |d   t        j                  |d   g|d   |d   t        j                  gd	g d
      }t        j                  ||       |j                  |d         }t        |d   |d   |d   g|d   |d   |d   gd	g d
      }t        j                  ||       y )N
2012-01-01rD   periodsrT   r   r2   r5   r6   rY   rZ   r:   rW   )r   valuesr
   r   rd   r8   r"   r   pdNaTr#   r$   )r&   dvrl   r?   r@   s        r    test_unstack_fill_frame_datetimez5TestDataFrameReshape.test_unstack_fill_frame_datetime   s    a077bz++<

 a5"&&"Q%(1r!ubff/EF!
 	fh/A/a5"Q%A'r!ubeRU.CD!
 	fh/r   c                    t        d      D cg c]  }t        |       }}t        |      }t        j                  g d      |_        |j                         }t        |d   t        j                  |d   g|d   |d   t        j                  gdg d	
      }t        j                  ||       |j                  |d         }t        |d   |d   |d   g|d   |d   |d   gdg d	
      }t        j                  ||       y c c}w )NrD   )daysrT   r   r2   r5   r6   rY   rZ   r:   rW   )r;   r   r
   r   rd   r8   r"   r   r   r   r#   r$   )r&   itdrl   r?   r@   s         r   !test_unstack_fill_frame_timedeltaz6TestDataFrameReshape.test_unstack_fill_frame_timedelta   s    ).q2AiQ22bz++<

 a5"&&"Q%(1r!ubff/EF!
 	fh/A/a5"Q%A'r!ubeRU.CD!
 	fh/% 3s   Dc                    t        d      t        d      t        d      t        d      g}t        |      }t        j                  g d      |_        |j                         }t        |d   d |d   g|d   |d	   d gd
g d      }t        j                  ||       |j                  |d         }t        |d   |d   |d   g|d   |d	   |d   gd
g d      }t        j                  ||       y )Nz2012-01z2012-02z2012-03z2012-04rT   r   r2   r5   r6   rY   rZ   r:   rW   )	r	   r
   r   rd   r8   r"   r   r#   r$   )r&   r   rl   r?   r@   s        r   test_unstack_fill_frame_periodz3TestDataFrameReshape.test_unstack_fill_frame_period   s    9999	
 g++<

 1:tWQZ0
GAJPT7UV!
 	fh/4aj'!*gaj9aj'!*gaj9 "
 	fh/r   c           	         t        g dd      }t        j                  g d      |_        |j	                         }t        t        j                  t        d      t        d            t        j                  t        d      t        d            d	t        d
            }t        j                  ||       d}t        j                  t        |      5  |j	                  d       d d d        |j	                  d      }t        t        j                  t        d      t        d            t        j                  t        d      t        d            d	t        d
            }t        j                  ||       y # 1 sw Y   xY w)Nr3   r4   cr3   categoryrR   rT   axaabc
categoriesbcxrY   ru   r:   z9Cannot setitem on a Categorical with a new category \(d\)matchdrW   r   acabcc)r
   r   rd   r8   r"   r   r   Categoricalrz   r#   r$   pytestraises	TypeError)r&   rl   r?   r@   msgs        r   #test_unstack_fill_frame_categoricalz8TestDataFrameReshape.test_unstack_fill_frame_categorical   s(   **=++<


 ^^DKDKH^^DKDKH u+
 	fh/ K]]9C0 	)LLCL(	) -^^DKDKH^^DKDKH u+
 	fh/	) 	)s   FF
c                 :   t        j                  g dg dgddg      }t        dgdz  dgdz  d	|
      }|j                  d      }t        g dg dg dgt        j                  g dd dg      t        g dd            }t        j                  ||       y )Nr3   r4   r   r5   r6   r2   rv   ry   rh   r5   	   r6   r   er:   )r5   r5   r5   r6   r6   r6   )r   r3   r   r4   )r   r   r   r3   r   r4   )r   r   rb   r9   r8   )r   r<   r   r"   rd   r   r#   r$   r&   idxr(   r?   r@   s        r   $test_unstack_tuplename_in_multiindexz9TestDataFrameReshape.test_unstack_tuplename_in_multiindex  s    %%i(Z0H
 aS1WA3733?J'!35GH** Z(
 	
3
 	fh/r   z>unstack_idx, expected_values, expected_index, expected_columnsrv   )r5   r5   r6   r6   ))r5   r2   )r5   rD   r6   r2   )r6   rD   rx   Cr   )r   r   r   r   N)rv   rx   )r5   r5   r5   r5   r6   r6   r6   r6   r2   rD   r   ))r   r3   r5   )r   r3   r6   )r   r4   r5   )r   r4   r6   )r   r3   r5   )r   r3   r6   )r   r4   r5   )r   r4   r6   )Nrv   rx   c                     t        j                  ddgddgddggg d      }t        dgd	z  dgd	z  d
|      }|j                  |      }t        |||      }t	        j
                  ||       y )Nr3   r4   r5   r6   r2   rD   )rv   rx   r   r   rs   r   r:   r   )r   r<   r   r"   r#   r$   )	r&   unstack_idxexpected_valuesexpected_indexexpected_columnsr   r(   r?   r@   s	            r   *test_unstack_mixed_type_name_in_multiindexz?TestDataFrameReshape.test_unstack_mixed_type_name_in_multiindex1  s    L %%3Z!Q!Q(0F
 aS1WA3733?K(%5^
 	fh/r   c                    t        g dg dt        g d      j                  d      t        j                  j                  d      j	                  d      ddt        j                  d      t        g d	      j                  d
      t        g d      j                  d      dt        g d      j                  d      d      }d }|j                  ddg      } ||d       |j                  ddg      } ||d       |j                  ddg      } ||d       |j                  g d      } ||d       |j                  ddg      } ||d       |j                  ddg      }|d   } ||d       y )N)ILMINCr   r   r6   r2   r5   r   20010102)      ?      I@g      Y@float32)rC         @      @r|   F)r5      i2 int8)stater8   some_categoriesrw   rx   r   DEFGHc                 v    | j                  |g      }| j                  |      }t        j                  ||       y r   r"   r#   r$   )r(   column_name
unstacked1
unstacked2s       r   unstack_and_comparezNTestDataFrameReshape.test_unstack_preserve_dtypes.<locals>.unstack_and_comparet  s0    [M2JK0J!!*j9r   r   r8   r   r   r   )r   rx   r   rx   r   rw   )	r   r
   ri   r   randomdefault_rngr   	Timestamprf   )r&   r(   r   df1rn   s        r   test_unstack_preserve_dtypesz1TestDataFrameReshape.test_unstack_preserve_dtypesb  sQ   +(#)/#:#A#A*#MYY**1-44Q7\\*-./66yAO,33I>,-44V<
 	:
 llGW-.C)llG%678C!23llC:&C%ll./C%llC:&C%llGW-.HAw'r   c           	      $   t        j                  t        t        j                  t        d      d                  }t        t        j                  j                  d      j                  d      |      }t        j                  |j                  ddg|      |j                  d|      j                  d|             t        j                  |j                  dd	g|      |j                  d|      j                  d|             |j                         }|j                  j!                  t        d      d
      }|J t        j                  |j                  ddg|      |j                  d|      j                  d|             y )Nr2   repeatr6   )      r9   r5   levelr   rV   T)inplace)r   rd   rz   	itertoolsproductr;   r   r   r   r   standard_normalr#   r$   r!   r   r9   	set_names)r&   r   r9   r(   df_namedreturn_values         r   test_stack_intsz$TestDataFrameReshape.test_stack_ints  sf    ((i.?.?aQR.S)TUII!!!$44X>
 	HHAq6H=HH1<H8>>l ? 	
 	HHB8,H?HH1<H8>>l ? 	
 779''11%(D1I###
NN!QlNCNNN>DDl E 	
r   c                    t        j                  g dg d      }t        t        j                  j                  d      j                  d      |      }|j                  ddg|	      }|j                  d
dg|	      }|j                         }g d|j                  _
        t        j                  |j                  ddg|	      |d       t        j                  |j                  d
dg|	      |d       d}t        j                  t        |      5  |j                  ddg|	       d d d        |j                         }g d|j                  _
        t        j                  |j                  ddg|	      |d       y # 1 sw Y   XxY w)N)rw   catlong)rx   r   r   )rw   dogshort)rx   r   r   expanimalhair_lengthr   r6   rD   rD   r   r   r   r   r   )r   r   r5   r5   Fcheck_nameszSlevel should contain all level names or all level numbers, not a mixture of the twor   r   )r   r   r   )r   rd   r   r   r   r   r   r!   r   r9   rh   r#   r$   r   r   
ValueError)	r&   r   r9   r(   animal_hair_stackedexp_hair_stackedrM   r   df3s	            r   test_stack_mixed_levelsz,TestDataFrameReshape.test_stack_mixed_levels  s|    (( 3
 II!!!$44V<g
 !hh]+, ' 
 88-(| $ 
 ggi0
IIXqMIE	

 	IIUAJ\IB	
# 	 ]]:S1 	FIIXqMIE	F
 ggi0
IIXqMIE	
	F 	Fs   FFc                    t        j                  g dg d      }t        t        j                  j                  d      j                  d      |      }|j                  ddg|	      }|j                  dd
g|	      }|j                  dd
g|	      }|j                         }g d|j                  _
        t        j                  |j                  ddg|	      |d       t        j                  |j                  ddg|	      |d       t        j                  |j                  ddg|	      |d       |j                         }g d|j                  _
        t        j                  |j                  ddg|	      |d       t        j                  |j                  ddg|	      |d       t        j                  |j                  ddg|	      |d       y )Nr   r   r   r6   r   r   r   r   r   r   r`   r5   Fr   r   )r6   r   r5   )r   rd   r   r   r   r   r   r!   r   r9   rh   r#   r$   )	r&   r   r9   r(   exp_animal_stackedr   r   rM   r   s	            r   test_stack_int_level_namesz/TestDataFrameReshape.test_stack_int_level_names  s    (( 3
 II!!!$44V<g
  XX(#, & 
 !hh]+, ' 
 88-(| $ 
 ggi%
IIQFI>	

 	IIQFI>	

 	IIQFI>	
 ggi%
IIQFI>	

 	IIQFI>	

 	IIQFI>	
r   c           	      l   t        ddgt        j                  ddgddgg      dg      }|j                         }t        t	        j
                  dt        j                  gt        j                  dggt              ddgt        j                  ddgddgg            }t        j                  ||       y )	NFr3   r4   r   lcolr7   rR   )
r   r   from_arraysr"   r   arrayrH   objectr#   r$   )r&   r(   rsxps       r   test_unstack_boolz&TestDataFrameReshape.test_unstack_bool(  s    EN((3*sCj)ABG

 ZZ\HHubffo7vF***UENS#J+GH

 	b"%r   c           	         t        ddgddgddggg dg dg d	gg d
      }t        d|      }|j                  ddg      j                  d|      }t        ddgddggg dg dgddg      }t	        t        j                  dt
        j                  gt
        j                  dgdt
        j                  gt
        j                  dggt
        j                        |t        ddgd            }t        j                  ||       y )Nr   r   onetwor3   r4   r   r   r5   r5   r   r5   r   r5   )r5   r   r5   r   )firstsecondthirdr>   codesrh   r   r:   r5   r6   r   r  r  rR   r  r   r7   )r   r
   r"   r!   r   r   r  rH   r|   r   r#   r$   )r&   r   mirn   r?   expected_mir@   s          r   test_unstack_level_bindingz/TestDataFrameReshape.test_unstack_level_binding6  s    
 ENUENS#J?|<.

 1BAq6"(((F ENUEN3.H%
 HHRVVrvvqkArvv;DBJJ 3*73
 	fh/r   c                    |j                         }t        |t              sJ |j                         j                  }t	        j
                  ||       t        ddt        j                  gddt        j                  gd      }t        g d      |_
        |j                         }t        ddgg dgg d	g d
g      }t        ddt        j                  ddt        j                  g|      }t	        j                  ||       |j                         }t        d      D ]  }|j                         } t	        j
                  ||       y )Nr5   r6   rC   rD   rE   r   rF   rG   )r   r   r   r5   r5   r5   )r   r5   r6   r   r5   r6   r>   r  r2   r:   )r"   
isinstancer
   r%   r#   r$   r   r   rH   r   r8   r   r=   r   r;   )	r&   r'   rl   undor?   midxr@   old_data_s	            r   test_unstack_to_seriesz+TestDataFrameReshape.test_unstack_to_seriesS  s   ""$$'''||~
dK0 1bff~S!RVV4DEF?+
#J0%'9:
 1aArvv6dC
vx0 99;q 	"A<<>D	"
h-r   c                 j   g dg dg dg dg}t        |t        d            }|j                  }t        t	        j
                  d      gdz  t        d      	      }t        j                  ||       |j                  d
dg      }|j                  d      }|j                  }t        t	        j
                  d      gdz  t        j                  g dg dgd      	      }t        j                  ||       |j                  d
dg      }d|d<   |j                  d      }|j                  }t        t	        j
                  d      gdz  t	        j
                  d      gdz  z   t        j                  g dg dgd      	      }t        j                  ||       d|d<   |j                  d      }|j                  }|rdnt	        j
                  d      }t        t	        j
                  d      gdz  |gdz  z   t        j                  g dg dgd      	      }t        j                  ||       y )N)r5   r5   r2   rD   r5   r6   r2   rD   )r6   r5   r2   rD   )r6   r6   r2   rD   ABCDr   rj   rD   r:   rw   rx   )r   r   r   r   )r5   r6   r5   r6   )Nrx   r   rC   r   r|   r6   r   r   stringr  )r   rz   dtypesr
   r   rS   r#   r=   rf   r"   r   r  )	r&   using_infer_stringr}   r(   r?   r@   rM   r   rS   s	            r   test_unstack_dtypesz(TestDataFrameReshape.test_unstack_dtypesn  s   lL,GtT&\2288G,-1fF
vx0 llC:&kk#XXg!#((%|4K
 	vx0 llC:&Ckk#XXi !A%'):(;a(??((%|4K
 	vx0Ckk#.BHHX4FXXi !A%!3((%|4K
 	vx0r   zc, drQ   f8rR   
   c           	         t        dgdz  ||t        dd      d      }|j                  d d j                  d      }|j	                  d	d
g      }|d   j                  d      |d<   |j                  d d j                  d      }|j	                  d	d
g      j                  d      }|d   j                  d      |d<   |j                  dk(  sJ t        j                  ||       y )Nr3   rQ   r   r   )rw   r   r   rx   r2   T)deeprw   rx   r   rj   r   )r   r3   )r2   r6   )
r   r   ilocr   rf   ri   r"   r    r#   r$   )r&   r   r   r(   rightlefts         r   test_unstack_dtypes_mixed_datez3TestDataFrameReshape.test_unstack_dtypes_mixed_date  s     UQYa8	
   d +\\3*%S'..)3wwr{""1%c
+33A6!*-44W=jzzV###
dE*r   c                 x   t        j                  ddgddg      }t        ddg|      }d}t        j                  t
        |	      5  |j                  d       d d d        t        j                  t
        |	      5  |j                  j                  d|
       d d d        y # 1 sw Y   KxY w# 1 sw Y   y xY w)NrY   )r   r   c1r   r5   r6   r:   z5The name c1 occurs multiple times, use a level numberr   r   )	r   rd   r   r   r   r   r"   r%   r!   )r&   r   r   r(   r   s        r   #test_unstack_non_unique_index_namesz8TestDataFrameReshape.test_unstack_non_unique_index_names  s     $$j*%=dD\R1vS)E]]:S1 	JJt	 ]]:S1 	8DDJJt,J7	8 	8	 		8 	8s   B$=B0$B-0B9c                 `   t        j                  dgg dg      d d }t        ddggdz  |      }|j                         }t        j                  ddgg dg      }t        g d	gdg|
      }t	        j
                  ||       |j                  j                  d   |j                  d   k(  j                         sJ g dg dg}g dg dg}t        ||      }t        j                  d      j                  dd      }t        t        j                  ||dz   g      |      }|j                         }t        t        j                  |dz  |dz  dz   gd      |      }t	        j
                  ||       |j                  j                  d   |j                  d   k(  j                         sJ y )Nr3   )rw   rx   r   r   rV   r5   r   r2   r:   rw   rx   r   )r5   r5   r5   r   r   r   r7   )r   r5   rr   r   r5   r6   r2   r  r   r6   r   r6   rD   r6   axisr   )r   r<   r   r"   r#   r$   r9   r>   allr   r   r   concatenate)	r&   r   r(   r?   exp_colr@   r>   r  blocks	            r   test_unstack_unused_levelsz/TestDataFrameReshape.test_unstack_unused_levels  s}   %%u.B&CDSbIAx!|3/))Aq6?*CD01#P
fh/%%a(CJJqM9>>@@@ \*|,'		!$$Q*r~~ueai&89ENNEAIuqy1}5A>
 	fh/%%a(CJJqM9>>@@@r   z"level, idces, col_level, idx_levelr   )      rq   r   r6   rQ   rs      r3   r6   r5   )rs   r<  r5   rD         r:  r;  c                    g dg dg}g dg dg}t        ||      }t        j                  d      }t        |j	                  dd      |      }	|	j                  |	      }
t        j                  d
      t        j                  z  }|||<   t        j                  ddg|g      }t        |j	                  dd      ||      }t        j                  |
|       y )N)r3   r6   r   )r5   r2   rQ   rr   )r   rV   r5   r5   )r   r6   rV   r6   rs   rD   r6   r:   r      r   r5   r2   rq   r7   )r   r   r   r   r   r"   zerosrH   r<   r#   r$   )r&   r   idces	col_level	idx_levelr>   r  r   rl   r(   r?   exp_datacolsr@   s                 r   )test_unstack_unused_levels_mixed_with_nanz>TestDataFrameReshape.test_unstack_unused_levels_mixed_with_nan  s      ..'yy|t||Aq)5%(88B<"&&(&&A	':;X--a39dS
fh/r   rG  rw   c                    t        g dg dgg d      }|j                  g dd      }|j                  t        d       t        d       df|f   }|j	                         }|j
                  dg   |   }t        j                  |j                  dggd d	g
      |_        |j                  j                  d	      |_	        t        j                  ||       y )N)i  r3   I)i  r4   IIr0  r   F)droprJ  r   r   r   )r   rf   rk   slicer"   r(  r   r<   r9   r8   	droplevelr#   r$   )r&   rG  r(   ind	selectionr?   r@   s          r   test_unstack_unused_levelz.TestDataFrameReshape.test_unstack_unused_level  s     (*;<oVll?l7GGU4[%+s;TAB	""$88QC=&%22u%dC[
 "11#6
fh/r   c           	      F   t        dggt        j                  dggdg      t        j                  g dgg d            }|j                  g d      }t        dggt        j                  g dgg d	      t	        dgd
            }t        j                  ||       y )Nr5   r   r-  r   )r   r   r5   r   r   r   r5   )i1i2i3i4i5i6i7r   )rT  rU  rV  rW  rX  rY  )r-  rT  rU  rV  rW  rX  rY  rS  r   )r   r   rd   r"   r   r#   r$   r&   r(   r?   r@   s       r   test_unstack_long_indexz,TestDataFrameReshape.test_unstack_long_index  s     SE**QC5?((&'@
 @ASE**&'@ $'
 	fh/r   c           	         t        ddgddggt        j                  ddgddggddg      t        j                  g dg d	gg d
            }|j                  ddg      j                  j
                  dd  ddgk(  sJ y )N        rx   r   r   r-  c2r   )r%     r   )r%  r_  (   rS  rT  rU  r   rT  rS  r   )r   r   rd   r"   r9   rh   )r&   r(   s     r   test_unstack_multi_level_colsz2TestDataFrameReshape.test_unstack_multi_level_cols  s    3Z#s$**sc3Z(t ((|,4F
 zz4,'//55bc:tTlJJJr   c                 F   t        ddgddgddgddggt        j                  g d	g d
g      t        j                  g dg dg dg dgg d            }|j                  ddg      }|j                  dg      j                  dg      }t	        j
                  ||       y )Nr5   r6   r2   rD   rV   r   r   )r   r   f)m1P3   )rg  A5o   )m2rh  ri  )rl  rj  rk  ra  r   r   rU  rT  )r   r   rd   r"   r#   r$   rZ  s       r   &test_unstack_multi_level_rows_and_colsz;TestDataFrameReshape.test_unstack_multi_level_rows_and_cols)  s    VaVb"XBx0**O_+MN((%%%%	 )
 T4L)::tf%--tf5
fh/r   r   jimjoe)rp  ro  levc                 d   d }t        ddt        j                  dgg dg dd      }|j                  dd	g      j	                         d
   }|j                  d	dg      j	                         d
   j
                  }t        j                  ||       |j                  t        |            }|j	                  |      }|j                         j                  j                         t        |      k(  sJ d }	|d
   j                         j                  j                         \  }
}t        |
|      D ]~  \  }}t        |d
   j                   ||f   j#                  d            } |	|d
   j$                  |          |	|d
   j&                  |         z   }t        t)        ||            }||k(  r~J  y )Nc                     | | k7  rdn| }|dS N 1 valval_strs     r   castz:TestDataFrameReshape.test_unstack_nan_index1.<locals>.cast@      3JbCGa[!r   r3   r4   r   )ra   rF   rG   rU   )za.wzb.xz .yzd.z)ro  rp  joliero  rp  r}  r@  c                 >    t        | t              rt        |       S | gS r   r  tuplerz   r3   s    r   <lambda>z>TestDataFrameReshape.test_unstack_nan_index1.<locals>.<lambda>S      z!U';DG ! r   .)r   r   rH   rf   r"   r%   r#   r$   rz   notnar   sumrI   nonzerozipsortedr(  splitr8   r9   map)r&   r   rq  r{  r(   r*  r)  r  udfmk_listr}   rG  r   r^   s                 r   test_unstack_nan_index1z,TestDataFrameReshape.test_unstack_nan_index1<  s   	" S"&&#.+5
 ||UEN+335g>eU^,446w?AA
dE*\\$s)$jjsj#yy{!!%%'3r7222D\'')0088:
ddO 	!DAq#g,++AqD177<=DCL..q12WS\=Q=QRS=T5UUE3tU+,E5= =		!r   1st2nd3rdr  4th5thc                    d t        dgdz  t        j                  gdz  z   dgdz  z   dgdz  z   dgdz  z   d	gdz  z   d
gdz  dgdz  z   t        j                  gdz  z   dgdz  z   t        j                  gdz  z   dgdz  z   t        j                  gdz  z   g dd      }|j                  fdd      |j                  fdd      c|d<   |d<   |j	                  t        |            }|j                  |      }|j                         j                  j                         dt        |      z  k(  sJ d }||   j                         j                  j                         \  }}	t        ||	      D ]~  \  }
}t        ||   j                  |
|f   j                  d            } |||   j                   |
          |||   j"                  |         z   }t        t%        |            }||k(  r~J  y )Nc                     | | k7  rdn| }|dS rt  rw  rx  s     r   r{  zATestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.cast_  r|  r   r   r2   rQ   r3   r6   r   r   r4   rG   ra   rU   rD   rF   )C   '   5   H   9   P      rA  r<  r   ;   2   >   r  L   4      r  <   3   r  c                 :    dj                  t        |             S )Nr  )joinr  rr{  s    r   r  zETestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.<lambda>  s    sxxD!5 r   r5   r3  c           	      Z    dj                  t        | j                  d d d               S )Nr  rV   )r  r  r(  r  s    r   r  zETestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.<lambda>  s#    sxxD!&&2,(?@ r   r  r  r@  c                 >    t        | t              rt        |       S | gS r   r  r  s    r   r  zETestDataFrameReshape.test_unstack_nan_index_repeats.<locals>.<lambda>  r  r   r  )r   r   rH   applyrf   rz   r"   r  r   r  rI   r  r  r  r(  r  r8   r9   r  )r&   r   rq  r  r(   r  r  r  r}   rG  r   r^   r*  r)  r{  s                 @r   test_unstack_nan_index_repeatsz3TestDataFrameReshape.test_unstack_nan_index_repeats[  s#   	" uqy66(Q,%!) %!) %!)	
 %!) uqy%!)66(Q, %!) 66(Q,	
 %!) 66(Q,$&
R HH5AH>HH@qHI 	5	2e9
 \\$s)$jjsj#yy{!!%%'1s2w;666DX^^%,,446
ddO 	!DAq#c(--1-33C89DCHNN1-.S9I9I!9L1MME3tU+,E5= =		!r   c           
      V   t        t        d      t        d      t        d      d      }|j                  ddi      }t        j
                  |j                  d<   |j                  ddg      j                  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      }t        dgddggddgdd
ggd dg      }t        |||      }t        j                  ||       t        t        d      t        t        d            dz  t        d      d      }|j                  ddi      }t        j
                  |j                  d<   |j                  ddg      j                  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      }t        t        j
                  dd
dd	gd      }t        |||      }t        j                  ||       t        t        d      t        t        d            dz  t        d      d      }|j                  ddi      }t        j
                  |j                  d<   |j                  ddg      j                  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      }t        t        j
                  dd
dd	gd      }t        |||      }t        j                  ||       y )Naaaabbbbrs   r0  rx   re   r2   r5   rw   r   r2   r5   r6   rD   rQ   rq   rr   r   r   r3   r4   r  r   )r6   r5   )r   rz   r;   ri   r   rH   r(  rf   r"   r  r  r   r   r#   r$   )r&   r(   r*  valsr   rG  r)  s          r   test_unstack_nan_index2z,TestDataFrameReshape.test_unstack_nan_index2  s.   T*-E!H58LMYYW~&||S#J'//2 1a8VVRVVRVVRVVQ1a8
 Cc4j)*RVVQ1aAq1<EC:&1v1v.>tSk
 $C8
dE*T*-DqNQ4FUSTXVWYYW~&||S#J'//2BFFaVaVbffa[1a&AEC:&1v1v.>tSk
 RVVQ1a(s3$C8
dE*T*-DqNQ4FUSTXVWYYW~&||S#J'//2BFFaVaVaVbffa[AEC:&1v1v.>tSk
 RVVQ1a(s3$C8
dE*r   c           	         t        t        d      t        dd      j                         dz  t	        j
                  d      d      }t        j                  |j                  d<   |j                  d	d
g      j                         }t	        j                  ddddt        j                  dgt        j                  dddddgg      }t        ddgd	      }t        dgt        dd      gg dg dgd d
g      }t        |||      }|r5|j                  g d   }||   j                  |d   j                        ||<   t!        j"                  ||       y )N
aaaaabbbbbr   rQ   r   r6   r%  r0  r  rw   rx   r2   r   r5   rD   rq   rr   rs   r   r3   r4   r   r   )r   r   r   r   r   r   )rV   r   r5   r6   r2   rD   r  r   )r5   r6   r2   rQ   )r   rz   r   tolistr   r   rH   r(  rf   r"   r  r   r   r9   ri   rS   r#   r$   )r&   rL   r(   r*  r  r   rG  r)  s           r   test_unstack_nan_index3z,TestDataFrameReshape.test_unstack_nan_index3  s+   ,' q9@@BQFYYr]
 ||S#J'//1xx!Q1bffa02661aAq2IJKS#JS)E:lA>?%':;+
 $C8==.D+,,RW]];E$K
dE*r   c                 *   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      }|j                         j	                  g d      j                         }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      }t        dgg dgg dg dgd dg      }t        |||      }t        j                  ||       |j                  dd  j                         j	                  g d      }t        j                  |j                         |       y )NHgi(Ur]  Pbg	VZ>)Sn@>]K=?)=()Agr]  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   r5   rV   r  r  r  r  )r  r  r  r  r  )r   r   r   r   r   r   r5   r6   r2   rD   r  r  )
r   rH   r   r   rf   r"   r   r#   r$   rk   )r&   r  r(   r*  r   rG  r)  s          r   test_unstack_nan_index4z,TestDataFrameReshape.test_unstack_nan_index4  sk    2662669-#rvvy)8RVVY/1*/
 9<
 wwy""#>?GGI VVRVVXrvvs3(BFFJ7

 	*VH5q6B7#8$
 J =>"O4/
 $C8
dE*vvef~""$../JK
dllne4r   c                    t        g dt        ddd      dt        j                  d      z   t        j                  j                  d      j                  d      dz  j                  d      d	      }|d
   t        j                  d      z
  |d<   t        j                  x|j                  d<   |j                  d<   t        j                  x|j                  d<   |j                  d<   |j                  g d      j                  d
dg      }|j                         j                  j!                         dt#        |      z  k(  sJ dD ]A  }|j%                         D ],  \  }}|d   ||d
   |d   ff}||   |j                  |   k(  r,J  C y )N)r5   r6   r5   r6   r5   r6   z
2014-02-01rq   r   )r   freqd   r6   r%  )r  r  ro  rp  r  z
2014-02-02r  )r5   r  )r2   r  )r5   r  )rD   r  r  rn  r  )r   r   r   r   r   r   r   roundr   r   rH   rk   rf   r"   r  r   r  rI   iterrows)r&   r(   r*  r  r  r  rm   s          r   test_unstack_nan_index5z,TestDataFrameReshape.test_unstack_nan_index5  sc   )!,DRYYq\)		--a0@@CbHOOPQR	
 uI\ ::5	.0ff4x266(+.0ff4x266(+||12::E5>Jzz|""&&(ABK777! 	/C /1hah% 99v#.../	/r   c                    t        ddd      }t        g dt        j                  |ddfg            }|rd nt        }d}t        j                  ||      5  |j                  |	      }d d d        t        j                  d
dg      }t        j                  |dfg      }t        g d||      }	t        j                  |	       y # 1 sw Y   _xY w)Ni  r5   r  rw   rx   r   z2The previous implementation of stack is deprecatedr   r   r1  )rx   r7   )
r   r   r   rd   FutureWarningr#   assert_produces_warningr!   r<   r$   )
r&   r   tr(   warnr   r?   eidxecolsr@   s
             r   %test_stack_datetime_column_multiIndexz:TestDataFrameReshape.test_stack_datetime_column_multiIndex(  s    T1a |Z-C-Cac]O-TU#tB''C8 	9XX<X8F	9 &&f'=>&&Cz2\uE
fh/	9 	9s   CCmultiindex_columnsr  r1  )r   r5   r6   rD   r`   r   )r6   r2   rD   )rD   r2   r6   r5   r   )r2   r6   r5   r   )rD   r6   r5   r   )r6   r5   r   )r2   r6   r5   )rD   r2   r6   r   rV   c                    |sdnt         j                  }t        j                  g dddg      }||   }t	        t        j                  dt        |      z        j                  dt        |            |      }|j                  |||      }t        |t              rS|sQ|j                  |d	|      }	t        |	t              rt        j                  ||	       nt        j                  ||	       t        j                  |j                   j#                         |j                   j$                        |_        |j                  |||      }	t        |	t              rt        j                  ||	       y t        j                  ||	       y )
NF)rx   rF   )rx   rU   )rw   rG   )r   rF   )r   uUpperLowerr   r2   r   )r   dropnar   T)r   
no_defaultr   rd   r   r   r   rI   r   r!   r  intr
   r#   r=   r$   r9   to_numpyrh   )
r&   r  r   r   r  full_multiindex
multiindexr(   r?   r@   s
             r   test_stack_partial_multiIndexz2TestDataFrameReshape.test_stack_partial_multiIndex6  s=   @ +$00HG$
 %%78
IIa#j/)*221c*oF
 f<PeS!, xxeD|xTH(F+&&vx8%%fh7++JJ!)9)9

 88%\8Rh'""684!!&(3r   c           	      4   t        j                  g dddg      }t        t        j                  d      j                  dd      |g d   	      }|sd
nt        j                  }|j                  ||      }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      t        ddgd            }|d   j                  |j                  j                  d         |d<   t        j                  ||       y )Nr  r  r  r   rq   r6   r2   )r   r5   r2   r   Fr  r   r   r5   rQ   rD   )r  rF   rG   rU   r  )r5   r2   r5   r2   r  rx   r   r   r7   )r   rd   r   r   r   r   r   r  r!   rH   r   ri   r!  r(  r#   r$   )r&   r   r  r(   r  r?   r@   s          r   test_stack_full_multiIndexz/TestDataFrameReshape.test_stack_full_multiIndexu  s    
 %00HG$
 ryy|++Aq1?9;UV*lCVa[1a&1bff+6A 45#\2Wo
 3*73
 !,,RYY^^A->?
fh/r   orderedFTc                 (   t        j                  t        d      t        d      |      }t        g dg|      }|j	                  |      }t        j                  |j                  |g      }t        g d|      }t        j                  ||       y )Nyxzru   r   r  )r%  r<  r=  r   r   r:   )r   CategoricalIndexrz   r   r!   r   r<   r8   r
   r#   r=   )r&   r  r   cidxr(   r?   r  r@   s           r   %test_stack_preserve_categorical_dtypez:TestDataFrameReshape.test_stack_preserve_categorical_dtype  sv     ""4;4;PWX~t4|4 &&$'78,d3
vx0r   zlabels,dataru   )r%  r<  r=  r:  r  r>  zyx)r  r>  r=  r:  r%  r<  c                    t        j                  |t        |      |      }t        j                  ddg|      }t        j                  ||g      }t        t        |      g|      }|j                  ddg|      }	|r|n
t        |      }t        j                  ||      }
|rt        |      n|}t        |t        j                  dg|
|g      	      }t        j                  |	|       y )
Nr  r  v)r  r   r   r5   r   r:   )
r   r  r  r   r<   r   r!   r
   r#   r=   )r&   r  labelsrl   r   r  cidx2r  r(   r?   s_cidxexpected_datar@   s                r   +test_stack_multi_preserve_categorical_dtypez@TestDataFrameReshape.test_stack_multi_preserve_categorical_dtype  s     ""6fVngV##S#J@&&e}5t~t41a&|<'VF^$$VW=(4t$!8!81#vu9M!N
 	vx0r   c                    t        j                  g d      }t        ||d      }|j                  |      }t	        j
                  g dddgg      }t        t        j                  g d      |      }t        j                  ||       y )	N)r3   r3   r4   r   rw   rx   r   r1  rw   rx   )r3   r3   r3   r3   r4   r4   r   r   r:   )	r   r   r   r!   r   r<   r
   r#   r=   )r&   r   r   r(   r?   r8   r@   s          r   ,test_stack_preserve_categorical_dtype_valueszATestDataFrameReshape.test_stack_preserve_categorical_dtype_values  st    nn12Ss+,|4''Sz(BCNNCDE
 	vx0r   z4ignore:Downcasting object dtype arrays:FutureWarningzindex, columnsr  r4   )r   r   r6   r2   c                    t        ||      j                  d      }|j                  |      }t        j                  |j
                  j                               }t        |j                         ||j                        }t        j                  ||       t        j                  |j
                  j                        }t        j                  |j                        }	t        j                  ||	       y )Nr7   r5   r   )r   fillnar!   r   rd   r8   r  r9   r#   r$   r   asarrayr  assert_numpy_array_equal)
r&   r8   r9   r   r(   r)   	new_indexr@   stacked_codesexpected_codess
             r   )test_stack_multi_columns_non_unique_indexz>TestDataFrameReshape.test_stack_multi_columns_non_unique_index  s     UG4;;A>(((5**7==+A+A+CD	i
 	gx0

7==#6#67IOO4
##M>Br   z,vals1, vals2, dtype1, dtype2, expected_dtyperC   r   Int64Float64r   r   r   r  c                    t        t        ||      t        ||      d      }|j                  |      }|j                  t              j                  |      j                  |      }	t        j                  ||	       y )NrR   )rw   r5   )rw   r6   r   )r   r
   r!   ri   r  r#   r$   )
r&   vals1vals2dtype1dtype2expected_dtyper   r(   r?   r@   s
             r   .test_stack_multi_columns_mixed_extension_typeszCTestDataFrameReshape.test_stack_multi_columns_mixed_extension_types  su      f5 f5
 |4IIf###>EEnU 	 	fh/r   c                    t        j                  g dddg      }t        t        j                  g dd      t        j
                  g d      d	|
      }|j                  |      }|j                  t              j                  |      }|dk(  r&|d	   j                  t        j                        |d	<   n%|d   j                  t        j                        |d<   t        |j                  j                  gdz  |j                  j                  gdz  z   |j                  
      }t!        j"                  |j$                  |       t!        j&                  |j                  t              |       y )N)rw   r   r  )rx   r5   r3   r4   r   )r   r5   Nr   rR   r]   r  r:   r@  r   r  r6   )r   rd   r   r   r  r   r"   ri   r  r  NAr
   rw   rS   rx   r9   r#   r=   r!  r$   )r&   r   r8   r(   r?   r@   expected_dtypess          r   "test_unstack_mixed_extension_typesz7TestDataFrameReshape.test_unstack_mixed_extension_types  s   &&'EcSVZXXXl':^^O4 
 %(99V$,,5,9A:#+J#7#>#>ruu#EHZ !)(!3!:!:255!AHX TTZZL1

|a//v~~
 	v}}o>
fmmF3X>r   bazc                    t        j                  dgddggddg      }t        ddgdd	gg|d
dg      }d|j                  _        t        g dgt        j
                  g dddg            }d|j                  _        |j                         j                  d      j                  d|      }t        j                  ||       y )Nr   r   r   r   r  r   r6   r5   r2   rx   rw   r7   r   )r2   r5   r6   r   ))r   rw   )r   rx   )r   rw   )r   rx   r   r3  )r4  r   )r   r<   r   r9   rb   rd   r8   r"   	swaplevel
sort_indexr#   r$   )r&   r   r  r(   r@   r?   s         r    test_unstack_swaplevel_sortlevelz5TestDataFrameReshape.test_unstack_swaplevel_sortlevel  s     $$qcC:%6uenMAA'rC:F

N**@PU
 $''Q'/:::O
fh/r   )?__name__
__module____qualname__r/   r   markfilterwarningsrA   rO   ro   r~   r   r   r   r   r   parametrizer   rd   r   r   r   r   r   r   r  r  r  r#  r   rB  r   r+  r.  r9  rH   rH  rM  rQ  r[  rb  rm  rz   r;   r  r   permutationsr  r  r  r  r  r  r  r  r  r  r  r<   r  r	  r  r  rw  r   r   r   r      s8   >$ [[C00.
. [[C,0,0\"0H0,0,0< 0D02 [[H |\<H&
&&4S#J '
&&D,
 ")+CDq!f3'&
&&	 2		
!D0E!D0((T [[C

< [[C6
6
p [[C;
;
z& [[C004.6+1Z [[RXXa[("((1+&RYYq%yryyBd'CD	
++. [[C88A0 [[,+bffc1-=1~N-1~Q?OP	
00" [[VsCj%+%>?0 @00,K0& [[U^^$DE[[UDqN3! 4 F!: [[U$:I$:$:;P$QR[[UDqN3[[UUEN3;! 4 4 S;!z/+b+8'5R/.0 [[C [[FFFCCCFFF+	
4 [[Wr1a!Q!Q&@A4 B5<4B [[C00* [[Y61 71 [[C [[Y6[[%[23%[23	
1 71&	1 [[C [[ VW[[2:22QFS#J3GHI2:22QFS#J3GHI2:22QFS#J3GHI	
C XC [[C [[6Vc3Z)Y?VeU^WhA	
00  [[Wq!f-? .?. [[Wq%j10 20r   r   rS   r|   r  c                    t        j                  g d      } | t        j                  dd      ||      }|j	                  dd      }| t
        u rt        j                  dd	g      }nd
dg}t        dt        j                  gt        j                  dgdt        j                  gt        j                  dgg|t        j                  g d      |      }t        j                  ||       |j	                  ddgd      }| t
        u rt        j                  ddg      }nt        j                  ddg      }t        ddgddggddg||      }t        j                  ||       y )N))r
  rU   r4   )r
  rG   r3   )r	  rU   r4   )r	  rG   r3   r   r   r[   rV   F)r   sortr   r4   )r   r3   r4   r3          @rC   r   ))r
  rU   )r
  rG   )r	  rU   )r	  rG   r9   r8   rS   r5   r6   )r   rU   r4   )r   rG   r3   )rU   r4   )rG   r3   r
  r	  )r8   r9   rS   )	r   rd   r   r   r"   r   rH   r#   r$   )frame_or_seriesrS   r8   objr?   r   r@   s          r   test_unstack_sort_falser"  #  sP    ""TE "))C-U%
HC[[r[.F)#%118X2FG:
rvvRVV}rvvsmD $$D
 H &(+[[1vE[2F)#%11=-2PQ%11:z2JK
sc3Z en 	H &(+r   c                     t        g dd      } t        j                  g d      | _        | j	                         }t        dt        j                  dgddt        j                  gdt        d	      t        
      }t        j                  ||       | j	                  d      }t        g dg ddt        d	      t        
      }t        j                  ||       y )Nr   r  rR   rT   r3   r4   r   rY   ru   r[   r   rW   )r3   r   r3   )r4   r   r   )r
   r   rd   r8   r"   r   r   rH   rz   r  r#   r$   )rl   r?   r@   s      r   test_unstack_fill_frame_objectr$  I  s    &h7D''8DJ
 \\^FBFFC S"&&'9:5kH
 &(+ \\S\)FO4DKvH &(+r   c            
      b   t        t        j                  dd      gdgdgdgdg d      } | j                  ddg      j	                         }t        t        j                  dd      dggt        dgd	      t        d
dgdggddgddggd dg            }t        j                  ||       y )Nz2017-08-27 01:00:00.709949+0000UTC)tzr3   r4   r   )	timestampr3   r4   r   r   r   r(  r   r5   r  r7   )	r   r   r   rf   r"   r   r   r#   r$   )r(   r?   r@   s      r   "test_unstack_timezone_aware_valuesr)  a  s    	,,'HUST		
 -
B \\3*%--/F
,,8U
CS	IJSE$ #&.q6Aq6"+
H &(+r   c           	          t        dddd      }t        d|ig d      }|j                  | 	      }t        |t	        g ddggg d
g dg            }t        j                  ||       y )Nr   2018010120180103zAmerica/New_York)r  startendr'  rw   r   r:   r   r`   r   r   r   r  )r   r   r!   r
   r   r#   r=   )r   tsr(   r?   r@   s        r    test_stack_timezone_aware_valuesr1  y  sh    	JJCU	VB	C9O	4BXX<X0F
3% 8I@VWH 68,r   r0   r  c                 J   t        j                  g t         j                        t        j                  g t         j                        g}t        t         j                  t        |g g g            }|rb| t        j                  urPt        j                  t        d      5  t        t         j                        j                  | |       d d d        y t        t         j                        j                  | |      }t        j                  ||       y # 1 sw Y   y xY w)NrR   r  )rS   r8   dropna must be unspecifiedr   r  )r   r  rj   r
   r|   r   r   r  r   r   r   r   r!   r#   r=   )r  r   r>   r@   r?   s        r   test_stack_empty_framer4    s     hhr*BHHRrxx,HIFBJJjrSUh.WXHcnn4]]:-IJ 	XBJJ'--V,-W	X 	X ,22 3 
 	vx0	X 	Xs   ",DD"rX   c                    |rr| t         j                  ur`t        j                  t        d      5  t        t        j                        j                  | |      j                  |       d d d        y t        t        j                        j                  | |      j                  |      }t        t        j                        }t        j                  ||       y # 1 sw Y   y xY w)Nr3  r   rR   r  rW   )r   r  r   r   r   r   r   rj   r!   r"   r#   r$   )r  rX   r   r?   r@   s        r   test_stack_unstack_empty_framer6    s    
 cnn4]]:-IJ 	-BHH%++L , gg,	- 	- BHH%U&|U<W
W+ 	
 288,
fh/	- 	-s   <C!!C*c                      d} t        j                  t        |       5  t        t        j
                        j                          d d d        y # 1 sw Y   y xY w)Nz'index must be a MultiIndex to unstack.*r   rR   )r   r   r   r
   r   rj   r"   )r   s    r    test_unstack_single_index_seriesr8    s?    
4C	z	- )RXX&&() ) )s   )AAc            	         t        ddgddgddgddgdd	gd
      } | j                  g d      } | j                  dgd      } | j                  dd      j                  dd      }| j                  ddgd      }t        g dg dgt        ddgd      t	        j
                  g dg d            }t        j                  ||       y )NAliceBob      #@rs   FTr   femalemale)rb   scoreemployedkidsgender)rb   r@  rA  rB  rB  rW   r@  rA  )r<  r]  r]  r]  )r]  r]  r]  g       @rb   r   ))r?  r=  Fr   )r?  r=  Tr   )r?  r>  Fr   )r?  r>  Tr   )NrB  r@  rA  r   r7   )r   rf   r"   r   r   rd   r#   r$   )r(   r@   r?   s      r   test_unstacking_multi_index_dfrC    s    	e$1XF(	

B 
<	=B	XJ1	-Bzz*z3;;Fq;QHZZV,Z;F	34We$62&& 7
H &(+r   c                 (   t        j                  ddgddg      }t        g dg|      }|j                  d|       }t	        d	d
gd      }t        j
                  ddgd dg      }t        ddgddgg||      }t        j                  ||       y )NrE   )rG   rU   r3   r   r5   r5   r5   r5   r   r   r   rG   rU   r   )r   rF   )r   rG   r5   r7   )r   r<   r   r!   r   rd   r#   r$   )r   r9   r(   r?   new_columnsr  r@   s          r   2test_stack_positional_level_duplicate_column_namesrG    s     %%z:&>sCjQG	L>7	3BXXalX3Fc
-K&&(';D#;OI1a&1a&)KPH&(+r   c                 B   t        j                  t        d      g dg      }t        t        j
                  j                  d      j                  d      t        j
                  j                  d      j                  d      j                  t        j                        t        j
                  j                  d      j                  d      t        j
                  j                  d      j                  d      d|      }| s(t        d |j                  j                  D              sJ |j                         }t        j                  t        d      D cg c]  }||   j                          c}t        d      d	
      }t!        j"                  ||       y c c}w )NrQ   r0  r6   r>  r1  r:   c              3   J   K   | ]  }|j                   j                     y wr   )mgr_locsis_slice_like).0rF   s     r   	<genexpr>z5test_unstack_non_slice_like_blocks.<locals>.<genexpr>  s     HAqzz///Hs   !#rD   r5   )keysr4  )r   r<   r;   r   r   r   r   r   ri   rj   anyrJ   rK   r"   r   concatr#   r$   )rL   r  r(   rN   nr@   s         r   "test_unstack_non_slice_like_blocksrR    s%    
	 	 %(O!<	=B	yy$$Q'77;yy$$Q'77;BB288Lyy$$Q'77;yy$$Q'77;		
 
B HHHHH
**,Cyy58<a"Q%--/<58RSTH#x( =s   Fc           	         g dg dddt         j                  t         j                  gg}t        |t        ddgddggg d	g d
g            }| ri nddi} |j                  d d| d|}| rRt        dddddt         j                  gdddddt         j                  gdt        j
                  g dg dg            }n-t        g dg ddt        j
                  g dg dg            }t        j                  ||       t        |t        j
                  g dg dg            }| ri nddi} |j                  d d| d|}t        j                  ||       y )!N)r5   r6   rC   r   )r6   r2   r   r   r2   rD   rx   rw   rF   rG   r  r  r  r   r  Fr   r   r   rC   r  r   r   rE   )r   r   r5   r5   r6   r6   )rx   rw   rx   rw   rx   rw   r:   )r   rC   r  r   rC   )r  r   rC   r   r   )r   r   r5   r5   r6   )rx   rw   rx   rw   rx   )rx   rx   rw   rw   )rF   rG   rF   rG   rw  )r   rH   r   r   r!   r  r#   r$   )r   rl   r(   kwargsr?   r@   s         r   test_stack_sort_falserU    sb    .Arvvrvv0FGD	#Jc
+L,3O

B  Rfe_FRXXCALCFCF3S#rvv63S#rvv6 ((#%CD
 +2KL((/;T)UV
 &(+ 
&&(<>R'ST
B  Rfe_FRXXCALCFCF&(+r   c                    t        j                  ddg      }t        ddgddggddg|	      }| ri nd
di} |j                  ddgfd| i|}t        j                  g d      }t	        g d|      }t        j                  ||       y )N)weightkg)heightmr   r  rC   r   r   r   r7   r  Fr   r5   r   ))r   rW  rX  )r   rY  rZ  )r   rW  rX  )r   rY  rZ  )r   r  rC   r   r:   )r   rd   r   r!   r
   r#   r=   )r   r   r(   rT  r?   r   r@   s          r   !test_stack_sort_false_multi_levelr[    s     
 
 "2O!D
EC	S#Jc
+E5>3	OBRfe_FRXXq!fB<B6BF++	
N *.AH68,r   c                   	   e Zd Zd Zej
                  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        Zd Zej
                  j                  d      d        Z
ej
                  j                  d ed      g d eddgddgg ej                   ej                  d      j!                  d      d       ej                  g dd      g      g ej"                  d      g d eddgddgddgg ej                   ej                  d      j!                  d      d       ej                   g dg d        ej                  g dd      g      gg      d!        Zej
                  j                  d      d"        Zej
                  j                  d      d#        Zd$ Zej
                  j                  d      d%        Zej
                  j                  d&d'd(g      d)        Zd* Zej
                  j                  d      d+        Zej
                  j                  d      d,        Zej
                  j                  d      d-        Zej
                  j                  d      d.        Zd/ Zd0 Zej
                  j                  d      d1        Zej
                  j                  d      d2        Z d3 Z!d4 Z"ej
                  j                  d      d5        Z#ej
                  jH                  d6        Z%ej
                  j                  d      ej
                  j                  d7e&jN                  jQ                  d8 d9D                    ej
                  j                  d: e)d            ej
                  j                  d;d<d=g      d>                             Z*ej
                  j                  d      d?        Z+ej
                  j                  d      d@        Z,ej
                  j                  d      dA        Z-dB Z.dC Z/dD Z0dE Z1ej
                  j                  d      dF        Z2ej
                  j                  d      dG        Z3ej
                  j                  d      dH        Z4dI Z5ej
                  j                  d      dJ        Z6ej
                  j                  d      dK        Z7dL Z8y)MTestStackUnstackMultiLevelc                     |}|j                         }|j                          |j                  t              j                          |j                  t        j                        j                          y r   )r"   ri   r  r   r{   )r&   /multiindex_year_month_day_dataframe_random_dataymdr+   s       r   test_unstackz'TestStackUnstackMultiLevel.test_unstack.  sO    =KKM	 	

3! 	

288$$&r   z5result_rows,result_columns,index_product,expected_row)r5   r5   NN      >@N)r6   r6   NNrb  N)ix1ix2col1col2col3col4r6   )NNrb  N)r5   r5   NNrb  )r6   r6   NNrb  )rc  rd  re  rf  rg  )NNrb  )r6   NNNrb  Nc                    t        ||      j                  ddg      }|j                  dd j                  d      }t        |gt	        j
                  |dd  |ggd dg      t        dgd            }t        j                  ||       y )	Nr   rc  rd  r5   r6   r   r   r   )	r   rf   r(  r"   r   r<   r   r#   r$   )r&   result_rowsresult_columnsindex_productexpected_rowr?   r@   s          r   test_unstack_partialz/TestStackUnstackMultiLevel.test_unstack_partial;  s    < ;?IIEN
 Qq!))%0N++#m_5dE] %(
 	fh/r   c                    t        j                  g d      }t        t        j                  j                  d      j                  d      |      }|j                  ddg      }|j                  dd      }t        j                  ||       y )N))r   r   r   )r   r   r   )r5   r  r5   )r5   quxr5   r6   rD   r:   r5   r5  r4  how)r   rd   r
   r   r   r   r   r"   r  r#   r$   )r&   r8   rn   r+   r@   s        r   &test_unstack_multiple_no_empty_columnszATestStackUnstackMultiLevel.test_unstack_multiple_no_empty_columnsf  st    &&H
 299((+;;A>eLIIq!f%	###6
i2r   r0   c                    |}|j                         }|j                  |      }|r|j                  d      }t        j                  ||       |j                  d      }|j                  d      }|j                  |      }|r|j                  d      }t        j                  |j                  d      |       |d d d   }|j                  d      }|j                  |      j                  dd      }|r|j                  d      }t        j                  |j                  d      |       |j                  dd      }|j                  d      j                  ddd	      }|j                  d|      j                  dd      }|r|j                  d      }t        j                  |j                  d      |       |j                         }|j                  |      }|r|j                  d      }t        j                  ||       |j                  d      j                  d      }|j                  d|      }|j                         }t        j                  ||       |j                  d|      }|j                  d      }t        j                  ||       |j                  d|      }|j                  |      j                  d      j                  d      }t        j                  ||       |j                  d      j                  d d d d d
f   }|j                  |      j                  |      }	|j                  |      }
|r$|	j                  d      }	|
j                  d      }
t        j                  |	|
j                  |	j                               |j                  d      j                  d|      }|j                  d      j                  d|      }t        j                  ||       y )Nr   r5  rr  r6   r@  r   rV   r5   r3  r2   r   )r"   r!   r  r#   r$   r  r  rk   r=   reindexr8   assert_equal)r&   r_  r   r`  r+   	restackedunlexsortedr?   r@   r)   ymd_stackeds              r   
test_stackz%TestStackUnstackMultiLevel.test_stackq  s    > KKM	OOO>	!((U(3I
i-nn1n-''*	OOO>	!((U(3I
i222;SA!$B$'''*	OOO>HHAN	!((U(3I
i222;SA!++Aq1''*44Q4B	OOALOAKKAqQ	!((U(3I
i222;SA KKM	OOO>	!((U(3I
i- KKN**1-	>;;=
fh/>;;q>
fh/>99,97??BJJ1M
fh/ KKN&&q#A#v.	//|/<BB% C 
 ii\i:nnn/G%,,,7K
w(;(;GMM(JK Q%%b|%D;;q>'''E
)r   zidx, columns, exp_idxabab)r  r  r  r3   r4   r  r  r2   )r   r5   r   rD   r  )r3   r6   r4   r5   r3   r5   )r4   r6   r5   )r5   r   r5   )r2   rq   r2   c                    t        t        j                  d      j                  dd      ||      }|r9d}t	        j
                  t        |      5  |j                  |       d d d        y |j                  |      }t        t        j                  d      |      }t        j                  ||       |j                  j                  d	u sJ |j                  |j                  }
}	t        j                  |	|
       y # 1 sw Y   y xY w)
Nr=  rD   r2   r7   z8Columns with duplicate values are not supported in stackr   r   r:   F)r   r   r   r   r   r   r   r!   r
   r#   r=   r8   	is_uniqueassert_index_equal)r&   r   r9   exp_idxr   r(   r   r?   r@   liris              r   test_stack_duplicate_indexz5TestStackUnstackMultiLevel.test_stack_duplicate_index  s    6 IIbM!!!Q'

 LCz5 4l34 4 XX<X8Fbiim7;H""684<<))U222\\8>>B!!"b)4 4s   C>>Dc                    t        j                  dgdz  dgdz  z   dgdz  z   dgdz  z   dgdz  d	gdz  z   dgd
z  z   d	gdz  z   ddgdz  g dz   gg d      }t        t        j                  dd      t        j                  dd      d|      }|j                  d      }|j                  |      }|r|j                  d      }t        j                  ||       y )NFrirD   Satr6   SunThur2   DinnerLunchrQ   NoYes)r  r  r  )daytimesmokerr   r<  r|   rR   )r  rI   r:   r   r5  ru  )
r   r  r   r   r   r"   r!   r  r#   r$   )r&   r   r  r(   r?   reconss         r   test_unstack_odd_failurez3TestStackUnstackMultiLevel.test_unstack_odd_failure  s     ##!ugk)UGaK75'A+E
Q'Q.(a?7)a-Ou!$77
 ,
 yy95yy95 
 A<8]]u]-F
fb)r   c                 P   |}|j                   }d|d<   |j                  dd      }|j                  |      }|d   j                  |      j                         }t        j                  |d   |d       |j
                  J |d   j                  t        j                  k(  sJ y )	Nr   )r   fourr5   )r   r4  r   Fr   r   )	r%   r  r!   r#   r=   rb   rS   r   r|   )r&    multiindex_dataframe_random_datar   framer(   r)   r?   s          r   test_stack_mixed_dtypez1TestStackUnstackMultiLevel.test_stack_mixed_dtype  s     1WW!=]]]+(((5El;FFH
wu~v5I{{"""u~##rzz111r   c           	         t        g dg dg dg dt        j                  d      d      }d}t        j                  t
        |      5  |j                  g d	      j                  t              }d d d        j                         }|j                  |
      }t        j                  ||j                  |j                        j                  t                     y # 1 sw Y   nxY w)N)naiver  r  activer  r  )r3   r4   r4   r4   r3   r3   )r5   r6   r2   rD   r5   r2   )hir  byer  r  peaceg      @)r   r   barcoder  extraz7DataFrameGroupBy.apply operated on the grouping columnsr   )r   r   r  r  r   )r   r   r   r#   r  DeprecationWarninggroupbyr  rI   r"   r!   r=   rv  r8   ri   re   )r&   r   r(   r   r?   r+   rx  s          r   test_unstack_bugz+TestStackUnstackMultiLevel.test_unstack_bug  s    R5-?3
 H''(:#F 	MZZ @AGGLF	M NN$	OOO>	
y&..*I*P*PQV*WX	M 	Ms   
'CC'c                    |}|j                         }|j                  j                  dk(  sJ |j                  j                  ddgk(  sJ |j                  |      }|j                  j                  |j                  j                  k(  sJ y )Nr  r   r  r   )r"   r8   rb   r9   rh   r!   )r&   r  r   r  r+   rx  s         r   !test_stack_unstack_preserve_namesz<TestStackUnstackMultiLevel.test_stack_unstack_preserve_names+  s}     1MMO	##w...  &&5(*;;;;OOO>	$$(9(9999r   methodr!   r"   c                 v   |}|j                   d   }|dk(  rd|ini }t        j                  t        d      5   t	        ||      di | d d d        |dk(  rJ|j
                  d d df   }t        j                  t        d      5   t	        ||      di | d d d        y y # 1 sw Y   YxY w# 1 sw Y   y xY w)	Nr   r!   r   zdoes not match index namer   r"   r   )mistake)rk   r   r   KeyErrorgetattrr(  )r&   r  r  r   r  r(   rT  rn   s           r   #test_stack_unstack_wrong_level_namez>TestStackUnstackMultiLevel.test_stack_unstack_wrong_level_name:  s    
 1 YYu39W3D.,/"]]8+FG 	5GB4V4	5 Y1Ax/JK 8"6"778 8 	5 	58 8s   B#B/#B,/B8c                 z    |}|j                  d      }|j                  d      }t        j                  ||       y )Nr  r5   r@  r   )r&   r  r  r?   r@   s        r   test_unstack_level_namez2TestStackUnstackMultiLevel.test_unstack_level_nameN  s5    0x(==q=)
fh/r   c                 4   |}|j                  d      }|j                  d|      }|j                         j                  d|      }t        j                  ||       |j                  d|      }|j                  |      }t        j                  ||       y )Nr  r   r   r   )r"   r!   r#   r$   r=   )r&   r  r   r  r+   r?   r@   s          r   test_stack_level_namez0TestStackUnstackMultiLevel.test_stack_level_nameU  s     1MM(+	\B==?(((F
fh/U>;;L;9
vx0r   c                 <   |}|j                  ddg      }|j                  d      j                  d      }t        j                  ||       |j                  j                  |j                  j                  k(  sJ |d   }|j                  ddg      }t        j                  ||d          |j                  ddg|      }|r|j                  d      }|j                  dd      j                  dd	      }|j                  d
      }t        j                  ||       |j                  j                  |j                  j                  k(  sJ |j                  dd	g      }|j                  d      j                  d      j                  dd      }t        j                  ||       |j                  d	dg      }|j                  d	      j                  d      j                  dd      }t        j                  ||j                  d d |j                  f          y )Nyearmonthrw   r   r5  ru  r   r5   r6   r@  rq  )r"   r#   r$   r9   rh   r!   r  r  r  r8   rk   )	r&   r_  r   r`  r+   r@   rn   s_unstackedrx  s	            r   test_stack_unstack_multiplez6TestStackUnstackMultiLevel.test_stack_unstack_multipled  s    >KK 12	;;v&..w7
i2  &&(*:*:*@*@@@@ Hii 12
k8C=9OOVW$5LOQ	!((U(3I''1-771=	((q(1	
i-$$		777 KKA'	;;q>))!,333F
i2KKA'	;;q>))!,333F
ia9J9J6J)KLr   c                     |}|j                  ddg      }t        j                  t        d      5  |j	                  ddg|       d d d        y # 1 sw Y   y xY w)Nr  r  zlevel should containr   r   r   )r"   r   r   r   r!   r&   r_  r   r`  r+   s        r   test_stack_names_and_numbersz7TestStackUnstackMultiLevel.test_stack_names_and_numbers  sZ     >KK 12	 ]]:-CD 	EOOQL|OD	E 	E 	Es   AAc                 B   |}|j                  ddg      }t        j                  t        d      5  |j	                  ddg|       d d d        t        j                  t        d      5  |j	                  d	d
g|       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Nr  r  zToo many levelsr   r6   r2   r   znot a valid level numberre  rd  )r"   r   r   
IndexErrorr!   r  s        r   !test_stack_multiple_out_of_boundsz<TestStackUnstackMultiLevel.test_stack_multiple_out_of_bounds  s     >KK 12	]]:->? 	?OOQFO>	?]]:-GH 	AOORH<O@	A 	A	? 	?	A 	As   B	*B	BBc           
         t        j                  g ddd      }t        ddgdz  d	      }g d
}t        j                  ||g      }t        ||      }|j                         }|j                  d      }|j                  d      }t        j                  g ddd      }	t        g dg dd|	ddg      }
d|
j                  _	        t        j                  ||
       t        j                  ||
       t        j                  ||
j                         t        j                  g ddd      }t        j                  g ddd      }t        j                  ||g      }t        ||      }|j                         }|j                  d      }|j                  d      }t        j                  g ddd      }	t        j                  g ddd      }t        t        j                  t        j                  t        j                  t        j                  ddgt        j                  t        j                  ddt        j                  t        j                  gddt        j                  t        j                  t        j                  t        j                  gg|	|      }
t        j                  ||
       t        j                  ||
       t        j                  ||
j                         y )N)2013-01r  2013-02r  2013-03r  Mperiodr  rb   rw   rx   r2   strr   r5   r6   r2   rD   rQ   rq   r:   r5   r@  r   )r  r  r  )r5   r2   rQ   )r6   rD   rq   r  r7   period1)2013-122013-112013-102013-092013-082013-07period2)r  r  r  r  r  r  r6   rD   rq   rQ   )r   PeriodIndexr   r   r  r
   r"   r   r9   rb   r#   r$   r%   r   rH   )r&   idx1idx2valuer   rn   result1result2result3e_idxr@   e_colss               r   test_unstack_period_seriesz5TestStackUnstackMultiLevel.test_unstack_period_series  sN   ~~N

 c3Z!^%0"$$dD\25$))+))!)$))!)$-Ch
 ),EC:
 !&
gx0
gx0
gxzz2~~N
 ~~N

 $$dD\25$))+))!)$))!)$-Ci
 N

 A6Arvvrvv6Arvvrvvrvvrvv6
 
 	gx0
gx0
gxzz2r   c                 l   t        j                  g ddd      }t        j                  g ddd      }g dg dd	}t        j                  ||g      }t	        ||
      }|j                         }|j                  d      }|j                  d      }t        j                  ddgdd      }	t        j                  g ddd      }
t        j                  dj                         |
g      }t	        g dg dg|	|      }t        j                  ||       t        j                  ||       t        j                  g ddd      }	t        j                  g ddd      }
t        j                  dj                         |	g      }t	        g dg dg dg|
|      }t        j                  ||       y )N)2014-012014-02r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  )rq   rQ   rD   r2   r6   r5   r  r:   r5   r@  r   r  r  )r  r  r  r  r  r  zA A A B B B)rQ   r5   rq   r6   rq   r5   )rD   r6   r2   r2   rQ   rD   r7   )r  r  r  r  )r  r  r  zA A B B)rQ   rD   r6   r2   )r5   r6   rq   rQ   )rq   r2   r5   rD   )	r   r  r   r  r   r"   r  r#   r$   )r&   r  r  r  r   r(   r  r  r  e_1e_2r  r@   s                r   test_unstack_period_framez4TestStackUnstackMultiLevel.test_unstack_period_frame  s   ~~N

 ~~N

 )/AB$$dD\2uC(**,**1*%**1*%nni3#INnnN

 '')<)<)>(DE!34C
 	gx0
gx0nn8s
 nn-Ci
 ''):C(@A<6c6
 	gx0r   c                 X   dgdz  dgdz  z   }dgdz  dgdz  z   }t        j                  g ddz        }t        j                  j	                  d      j                  ddd	      }t        ||||d
      }|j                  ddg      }d|j                  _	        |j                  d      }t        j                  d      }	t        j                  t        |	      5  |j!                  d      j#                          d d d        |j!                  d      j#                  d      }
|
j%                  d|      }|j&                  d d dgf   j!                  d      j#                         j%                  d|      }d|j                  _	        t)        j*                  ||       y # 1 sw Y   xY w)Nr5   r2   r6   r3   r4   )z
2013-01-03z
2013-01-04z
2013-01-05r   r  rq   )IDNAMEDATEVAR1r  r  Paramsz&agg function failed [how->mean,dtype->r   zW-THUT)numeric_onlyr   r  )r   to_datetimer   r   r   integersr   rf   r9   rb   r"   reescaper   r   r   resamplemeanr!   rk   r#   r$   )r&   r   id_colrb   datevar1r(   multiunstr   downr  r  s                r   test_stack_multiple_bugz2TestStackUnstackMultiLevel.test_stack_multiple_bug  sn   
 #'qcAg&	seai(~~H1LMyy$$Q'00C;fdD$OPfd^,%}}T"ii@A]]9C0 	*MM'"'')	*}}W%***=ZZ<Z8HHQ[!XgTVU4lU3	 	 #


b"%	* 	*s    F  F)c                 >   t        ddgddgddgd      }|j                  ddg      }|sd	nt        j                  }|j	                         j                  ||
      }t        |      t        |j                               kD  sJ |rFt        j                  t        d      5  |j	                         j                  d|
       d d d        y |j	                         j                  d|
      }t        j                  ||j                                y # 1 sw Y   y xY w)Na1a2b1b2r5   r0  rw   rx   Fr  r3  r   T)r   rf   r   r  r"   r!   rI   r  r   r   r   r#   r$   )r&   r   r(   r  r)   s        r   test_stack_dropnaz,TestStackUnstackMultiLevel.test_stack_dropna7  s    
 dD\tAq6JK\\3*%***,$$F$N7|c'.."23333z1MN K

""$\"JK K jjl((<(PG!!'7>>+;<	K Ks   ""DDc                     t        g dg dg dgg dg dg      }g d|j                  _        dd	g|j                  _        |j	                  d
dg       y )N)r   r   r   r   r5   r5   r5   r5   )r   r   r5   r5   r   r   r5   r5   r   r5   r   r5   r   r5   r   r5   r  r  r7   r   r   r   r4   r   )r   r8   rh   r9   r"   )r&   r   r(   s      r   "test_unstack_multiple_hierarchicalz=TestStackUnstackMultiLevel.test_unstack_multiple_hierarchicalJ  sS    (((
 "<0
 ):

 	

C:r   c           
         d}t        t        j                  j                  d      j	                  d|      t        j                  j                  d      j	                  d|      t        j                  j                  d      j	                  dd	|      t        j                  j                  d
      j	                  dd|      t        j                  j                  d      j	                  d|      t        j                  j                  d	      j                  |      d      }|j                  g d      }|j                  d       y )N  r6   r  )sizer2   i,  rD   irr   rQ   i   rq   i  )rw   rx   r   r   r   r   )rw   rx   r   r   r   r   )r   r   r   r   r  r   rf   r"   )r&   NUM_ROWSr(   idfs       r   test_unstack_sparse_keyspacez7TestStackUnstackMultiLevel.test_unstack_sparse_keyspaceZ  s    YY**1-66s6JYY**1-66s6JYY**1-66r186LYY**1-66sBX6NYY**1-66t(6KYY**1-==hG	
 ll45 	Cr   c                 R   ddgg dg}g dg dg}t        ||      }t        t        j                  j	                  d      j                  d      |      }|j                         }t        |j                        d	k(  sJ |j                  |
      }t        j                  ||       y )Nr   r5   r1  r  r2  r6   )rD   r6   r:   rD   r   )r   r   r   r   r   r   r"   rI   r9   r!   r#   r$   )r&   r   r>   r  r8   r(   r?   r  s           r   test_unstack_unobserved_keysz7TestStackUnstackMultiLevel.test_unstack_unobserved_keyso  s    
 a&,'|,65)ryy,,Q/??GuU6>>"a'''<8
fb)r   c                 "    G d dt         j                        }|j                         5 }|j                  t         d|       t	        t        j                  d      t        j                  d      t        j                  d      g      }d}t        j                  t        |      5  t        j                  t        d	      5  |j                          d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
Nc                         e Zd Zd fdZ xZS )aTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32.<locals>.MockUnstackerc                 8    t        |   |i | t        d      )NDon't compute final result.)super__init__	Exception)r&   argsrT  	__class__s      r   r	  zjTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32.<locals>.MockUnstacker.__init__  s!     $1&1 =>>r   )returnN)r  r  r  r	  __classcell__)r  s   @r   MockUnstackerr    s    ? ?r   r  
_Unstacker)   r6   r  r:   z$The following operation may generater   r  )reshape_libr  contextsetattrr   r   rB  r   r#   r  r   r   r   r
  r"   )r&   monkeypatchr  rZ  r(   r   s         r   /test_unstack_number_of_levels_larger_than_int32zJTestStackUnstackMultiLevel.test_unstack_number_of_levels_larger_than_int32  s    
	?K22 	?   " 		!aIIk<?$yy'5)9:B 9C++,>cJ !]]94QR !JJL!!		! 		!! !! !		! 		!s<   A=D'C9C-C9D-C62C99D	>DDr>   c              #   v   K   | ]1  }t        j                  t        j                  g d |      d       3 yw)r`   r6   r   N)r   r   r  )rL  widths     r   rM  z$TestStackUnstackMultiLevel.<genexpr>  s5      &
 i44YFqQQ&
s   79r   	stack_levr  TFc                 F   t        |g dg dg      }t        |t        d      g      }|ri nd|i} |j                  |fd|i|}|j                  D ]K  }	|j
                  D ]:  }
|j                  |	|
f   }|	|
|   f}|
d|z
     }|j                  ||f   }||k(  r:J  M y )	Nr  r  r  rD   )r9   rl   r  r   r5   )r   r   r;   r!   r8   r9   rk   )r&   r>   r  r  r   r9   r(   rT  
df_stackedrowr  r@   
result_row
result_colr?   s                  r   %test_stack_order_with_unsorted_levelsz@TestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels  s    " F<2NOweAhZ8#&$RXXiMlMfM
88 	*Czz *66#s(+ #i.0
 Y/
#
J(>?)))*	*r   c           
      t   t        g dg dgt        j                  t        d      d      t        j                  t        d      d      g      }t        |t        d      t        j                  dt        |      z        j                  dd            t        fdj                  D              sJ y )	N)rw   r   rx   )rx   rw   r   r2   r  rQ   rV   )r9   r8   rl   c              3      K   | ]Q  }j                   D ]@  }j                  ||f   j                  d       j                  ||d    f|d   f   k(   B S yw)r   r   r5   N)r9   rk   r!   )rL  r  r  r(   r   s      r   rM  z]TestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels_multi_row.<locals>.<genexpr>  sv      
 zz	
  FF38xxx5993A-Q:OPQ
Q
s   AA)r   r   r   r;   tiler   r   rI   r   r5  r8   )r&   r   r  r(   s    ` @r   /test_stack_order_with_unsorted_levels_multi_rowzJTestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels_multi_row  s     #_599U1Xq)27758Q+?@
 eAhRYYq3r7{-C-K-KAr-R
  
 xx
 
 	
 
r   c                 &   d}d}t        |g dg dg      }t        |t        d      gg d      }|ri nd	d
i} |j                  |fd|i|}t        g dddggg dg dg      }t        g dg dd|      }	t	        j
                  ||	       y )N)r   r5   )r5   r   r5   r  r  r  rD   )r5   r   r6   r2   )r9   rl   r8   r  Tr   r1  r   )r5   r5   r   r   r6   r6   r2   r2   )r5   r   r5   r   r5   r   r5   r   r  )r6   r2   r6   r2   r6   r2   r6   r2   r%  r:   )r   r   r;   r!   r#   r$   )
r&   r   r>   r  r9   r(   rT  r?   r   r@   s
             r   1test_stack_order_with_unsorted_levels_multi_row_2zLTestStackUnstackMultiLevel.test_stack_order_with_unsorted_levels_multi_row_2  s    
 "	F<2NOweAhZ|L#&$)I,I&I# 1a&)+-EF
 ++ !
 	fh/r   c           	         t        j                  d      }t        j                  |D cg c]  }d| 	 c}|D cg c]  }d| 	 c}g      }t        |j                  ddg      }d|j
                  _        d|i}t        j                  |d      }d	dg|j
                  _	        |j                  t        |j
                        d      }|j                  dd	g|
      j                  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            }	t!        j"                  ||	       y c c}w c c}w )NrQ   r4   r3   r   r  rF   r5   r3  r  r   a0b0r  r  r  r  a3b3a4b4r  )r3   rF   )r4   rF   r   r7   )r   r   vstackr   r%   r9   rb   r   rP  rh   rv  r  r!   r"   r   rd   r#   r$   )
r&   r   r   rF   rl   r(   second_level_dictmulti_level_dfr?   r@   s
             r   'test_stack_unstack_unordered_multiindexzBTestStackUnstackMultiLevel.test_stack_unstack_unordered_multiindex  sM   
 1yy"()Q1QC)"()Q1QC)
 tvvSz2!

 "I#41=(0'':$##F>+A+A$B#K7H-LIQQh
 D\D$<$d|dD\R!**Z((0C
 	fh/) *)s
   EE
c                    |}d|d<   d|d<   |j                  d      }|d   j                  t        j                  k(  sJ |s"|d   j                  t        j                  k(  sJ 	 |d   j                  t        j                  k(  sJ y )	Nr   r   r6   r   r  r  )r   r5   )r   r5   )r"   rS   r   r|   object_)r&   r_  r"  r`  r+   s        r   test_unstack_preserve_typesz6TestStackUnstackMultiLevel.test_unstack_preserve_types  s     >CCKK(	 &&"**444 & f##rzz1	
 &&"**444r   c                 .   t        j                  t        j                  d      d      }t        j                  d      }t        |gdz  ddggz   |gdz  t        j                  d      j	                  d      gz         }t        t        j                  d      |      }|j                         }|j                  d	k(  sJ |j                  |
      }t        j                  ||j                  |j                               t        ddgg|gdz  z   t        j                  d      j	                  d      g|gdz  z         }t        t        j                  d      |      }|j                  d      }|j                  d	k(  sJ t        |gdz  ddggz   |gdz  z   |gdz  t        j                  d      j	                  d      gz   |gdz  z         }t        t        j                  d      |      }|j                  d      }|j                  d	k(  sJ y )N  r6   rs   r   r5   r  r  r:   )r6  r6   r   rD   )r   r"  r   r   r   r
   r"   r    r!   r#   r=   rv  r8   )r&   r   r  r   r8   rn   r?   r)   s           r   !test_unstack_group_index_overflowz<TestStackUnstackMultiLevel.test_unstack_group_index_overflow	  s   		#*		#7Q;1a&)'A+1!4!4S!9 ::

 299T?%0||x''' ,,L,9
q'//!''":; F8ugk)99Q<&&s+,w{:

 299T?%01||x''' 7Q;1a&)UGaK77Q;"))A,"5"5c":!;;ugkI

 299T?%01||x'''r   c           	         t        g dg ddgdz  d      j                  ddg      }d|d	<   |s$t        |j                  j                        d
k(  sJ |j                  d      }|d   j                  d      |d<   t        g dt        j                  dddggt        ddgd      t        j                  g dd dg            }|r.|d   j                  d      |d<   |d   j                  d      |d<   t        j                  ||       y )N)rw   rw   rx   )cacbr:  r%  r2   )r3   r4   r  r3   r4   r5   is_r6   r;  r9  r   )      $@r=  r   r   r=  r]  r   rw   rx   r   ))r  r9  r  r:  r<  r;  r:  r   r7   r>  rj   r?  )r   rf   rI   rJ   rK   r"   r  r   rH   r   r   rd   ri   r#   r$   )r&   rL   r(   r?   r@   s        r   +test_unstack_with_missing_int_cast_to_floatzFTestStackUnstackMultiLevel.test_unstack_with_missing_int_cast_to_float5	  s   $'TAX
 )S#J
 	 5	"rww~~&!+++C &} 5 < <Q ?}#bffdC%=>c
-**HSk
 $,[$9$@$@$IH[!&.}&=&D&DW&MH]#
fh/r   c                    t        g dg dg dg dd      }|j                  g d      }g d}|j                  j                  |d      |_        |j                  j                  |d	      |_        |j	                  d
      d   j                         j                  }t        g dg dgg dg dgdd	g      }t        j                  ||       y )Nr  )r2   rD   r5   r6   rE  )L1L2L3rF   )rB  rC  rD  )n1n2n3NrB  )r>   r   rC  rD  )rF   r5   r1  )r6   r2   r   r5   r  )	r   rf   r8   
set_levelsr"   r  r   r#   r  )r&   r   
new_levelsr?   r@   s        r   test_unstack_with_level_has_nanz:TestStackUnstackMultiLevel.test_unstack_with_level_has_nanU	  s    """!	
 mm./-
II((
$(G	II((
$(G	T"8,779??,.FG.,
 	fh/r   c                    t        t        j                  ddg      t        j                  g d            }|j                  d|      }|r1t        dgdd	ggg d
g dg      }t        dgddggg d
g dg      }nt        g d      }t        g d      }t        dt        j                  t        j                  gt        j                  ddgt        j                  ddgg||      }t        j                  ||       y )Nr5   rQ   ))r   NN)r   r6   r   )r   r6   r5   )r   r2   r   )r   r2   r5   r   r6   r   r   r]  r   r/  )rV   r   r5   r  r2   )r   N)r   r   r%  )rL  )r   r6   )r   r2   r7   )
r   r   rB  r   rd   r!   r   rH   r#   r$   )r&   r   r(   r?   r8   r9   r@   s          r   $test_stack_nan_in_multiindex_columnsz?TestStackUnstackMultiLevel.test_stack_nan_in_multiindex_columnsm	  s    
 HHaV**
 !,7sS#J&7	:?VWE !q!fi=TUG56E78G266266"RVVS#$6c8JK

 	fh/r   c                 :   t        j                  dgdz  dgdz  z   t        j                  t	        d            t        j                  t	        d            g      }t        t        j                  d      j                  dd      |      }|j                  d	dg|
      }|rt        dt        j                  gd	t        j                  gt        j                  dgt        j                  dgdt        j                  gdt        j                  gt        j                  dgt        j                  dggddgt        j                  dgdz  d	gdz  z   t        j                  t	        d            t        j                  t	        d            g            }nt        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        j                  dgdz  d	gdz  z   t        j                  t	        d            t        j                  t	        d            g            }t        j                  ||       y )Nrw   r6   rx   r|  ccddrs   rD   r   r5   r   r   r2   rQ   rq   rr   ababababccddccddr   aabbaabbcdcdcdcd)r   r  r   r   rz   r   r   r   r   r!   rH   r#   r$   )r&   r   r  r(   r?   r@   s         r   "test_multi_level_stack_categoricalz=TestStackUnstackMultiLevel.test_multi_level_stack_categorical	  s   
 %%	SEAI%tF|,tF|,
 ryy|++Aq14@1a&|< KKVVQKVVQKKKVVQKVVQK	 c
 ,,a1#')tJ'78tJ'78H* !KVVQKKVVQKKVVQKKVVQK	 c
 ,,a1#')tJ'78tJ'78H( 	fh/r   c                    t        t        j                  d      j                  dd      t	        j
                  dt        j                  fdgddg      t        dd	gd
      t        j                        }|j                  |      }|r+t	        dd	gt        j                  dggg dg dgd
dg      }n=t	        j
                  dt        j                  fdd	t        j                  fdgd
dg      }t        dt        j                  gt        j                  d	gdt        j                  gt        j                  dggt        ddgd      |      }t        j                  ||       y )NrD   r6   rw   ry   r  r  r   r   r5   Numr   r  r   r4   r  r  r  r  )r5   r4   r]  r  rC   rx   r   )r   r   r   r   r   rd   rH   r   r|   r!   r#   r$   )r&   r   df_nanr?   r8   r@   s         r   test_stack_nan_levelz/TestStackUnstackMultiLevel.test_stack_nan_level	  s5   
 IIaL  A&**rvv
+GW3E AU+**
 <8A.#\2g&E **RVVhBFFX>ugFVE 266]RVVQK#rvvF3*73

 	fh/r   c                    t        j                  dgddgg      }t        dt        j                  ddg      i|      }|j                         }t        t        j                  dgddg      t        j                  dgddg      d	dg      }t        j                  d
dg      |_        t        j                  ||       y )Nrw   r   r5   r   r3   r4   r:   r   r%  )r   r   )r   r5   )
r   r<   r   r   r   r"   rd   r9   r#   r$   r   s        r    test_unstack_categorical_columnsz;TestStackUnstackMultiLevel.test_unstack_categorical_columns	  s    %%uq!fo6r~~sCj9:#F>>3%S#J?>>3%S#J? %
 &11:z2JK
fh/r   c                    ddg}ddg}g d}t        j                  |||gg d      }t        t        t	        |                  }t        ||dg	      }|j                  d
dg      }|j                  j                  d      |_        d|j                  d d df<   |j                  d
dg|      j                         }|j                  d      j                  d
dg|      j                         }	t        j                  ||	       y )NITAFRAA1A2)CRTDBTNET)PAEVARTYPr   VALUE)rl   r8   r9   rd  re  r   i'  )A0rb  r   r5   r3  )r   r<   rz   r;   rI   r   r"   r9   rN  rk   r!   r  r#   r=   )
r&   r   rc  rd  re  r   VDFr?   r@   s
             r   test_stack_unsortedz.TestStackUnstackMultiLevel.test_stack_unsorted	  s    
 enTl#$$c3_<QRs2w AR';ZZ'ZZ))!,
#'q- 5%.|DOOQMMqM!UE5>U=Z\ 	
 	vx0r   c                    t        j                  ddgddggddg      }t        g dd	
      }t        j                  g dg dg dg      }t        |||t        j                               }|j                  d|      }|j                  t        j                        j                  d|      j                  t        j                               }t        j                  ||       ||j                  d      j                  t        j                               ||j                  d   <   |j                  d|      }t        t        j                  g dt        j                               t        j                  g dt        j                               dt        j                  ||j                  d   g            }d|j                  _        t        j                  ||       y )N5451154515r  t_meanstationelementr   r   r  r   )r     r%     )r%  rr  r      )i1     rk  rs  r  r   r   )r   r=  r=  g      "@g     s@g     [@rR   )rq  rr  rr  rs  rt  rs  )r  rn  r:   )r   r<   r   r   r  r   r   
Int64Dtyper!   ri   rj   r#   r$   r9   Float64Dtyper>   rb   )r&   r   r9   r8   arrr(   r?   r@   s           r   test_stack_nullable_dtypez4TestStackUnstackMultiLevel.test_stack_nullable_dtype
  s   
 ))w#x1)Y9O
 if-hh*,=?STUsG5P),? IIbhhU9<U8VBMMO$ 	
 	fh/ rzz!}-44R__5FG2::a=),?XX9AR ((2"--/	 ))5'..2C*DE

 !*
fh/r   c           	      >   ddgddgddgg}t        j                  |d      }t        dddgi|	      }|j                  d
      }t        dgdggt        j                  dgd d
g      t        j                  ddgddg            }t        j                  ||       y )Nr3   r5   r6   redblue)rF   r   rG   r   rZ  r:   rF   )rZ  r3   )r5   rz  )r6   r{  r   rG   r   )r   r  r   r"   rd   r#   r$   )r&   arraysr   r(   r?   r@   s         r   test_unstack_mixed_level_namesz9TestStackUnstackMultiLevel.test_unstack_mixed_level_names5
  s    *q!fufo6$$V=AaV}C0CS1#J**J<c{K((*k)B1c(S

 	fh/r   )9r  r  r  ra  r   r  r  rn  rs  r  r{  rz   r   r   r"  r   r   rd   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  slowr  r   chainfrom_iterabler;   r  r#  r&  r1  r4  r7  r@  rJ  rM  rT  rX  rZ  rj  rx  r}  rw  r   r   r]  r]  -  s   ' [[? 01OP>(	 *+CD6"	 *+FG6"		
.0/.0(	3 [[CJ*J*X [[ V% #J7"2779299Q<#6#6q#91=wrwwyRS?TU '
&&'OP% #JA?			! 3 3A 6:!		)Y7	1-	
2*32*& [[C**2 [[C22Y& [[C
:
: [[X';<8 =8&0 [[C
1
1 [[C M MD [[C	E	E [[CAAC3J-1^ [[C&&2 [[C==  * [[C** [[! !* [[C [[%% &
&
 	
 [[[%(3[[VdE]3* 4 4*" [[C

$ [[C00* [[C0065"#(J0@00 [[C008 [[C5050n [[C0080 [[C11, [[C#0#0J0r   r]  c           	          t        g dg dg dgg d      }|j                  |       }t        g dt        g dg dgg d	g d
g            }t	        j
                  ||       y )Nr   )rD   rQ   rq   )rr   rs   r   )r  r}  r~  r   r   )	r5   r6   r2   rD   rQ   rq   rr   rs   r   r`   )	r   r   r   r5   r5   r5   r6   r6   r6   )	r   r5   r6   r   r5   r6   r   r5   r6   r  r:   )r   r!   r
   r   r#   r=   )r   r(   r?   r@   s       r   test_stack_tuple_columnsr  C
  sd    		Iy)3Q
B XX<X0F#=>.0KL
H 68,r   zdtype, na_valuer   test_multiindexc                    |r&t        j                  dt        |g|       gz        }nt        |g|       }t        ddgi|      }|j	                  d      }|r;t        j                  t        |g|       t        |g|       t        dg      g      }n-t        j                  t        |g|       t        dg      g      }t        d|      }t        j                  ||       y )Nr6   rR   r3   r5   r:   Tr   )r   r  r   r   r!   r
   r#   r=   )rS   na_valuer  r8   r(   r?   r   r@   s           r   test_stack_preserves_nar  S
  s     &&qE8*E,J+K'KLxj.	C!:U	+BXX4X(F#//xj.xj.se
 $//xj.se
 a~.H68,r   )1r   r   r  numpyr   r   pandas._libsr   pandas.errorsr   pandasr   r   r   r   r	   r
   r   r   pandas._testing_testingr#   pandas.core.reshaper   r  fixturer   r   r  r  r"  r$  r)  r1  r  r  r4  r6  r8  rC  rG  rR  rU  r[  r]  r  rH   r  r  rw  r   r   <module>r     s[     	    ,     6 e}% &B0 B0J( 9i"89", :",J,0,0	- WXD%#@A1 B Y1 WXD%#@Aay10 2 B Y0"),> WX
, Y
,), WX#, Y#,L WX- Y-$S0 S0l -  	BFF	BFF	BEE	"%%	 *T5M:- ;-r   