
    bMhun                       d dl mZm Z mZ d dlmZ d dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlZd dlmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d d	lm Z   ej!        d
dg          d             Z" ej!        d gdz  dgdz  f e#d           e#dd          fg          d             Z$ G d d          Z% G d d          Z&dS )    )datedatetime	timedelta)productN)using_string_dtype)PerformanceWarning)Categorical	DataFrameGrouperIndex
MultiIndexSeriesconcat
date_range)CategoricalDtype)reshapepivot_tableTF)paramsc                     | j         S N)param)requests    _/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/reshape/test_pivot.pydropnar   !   s
    =             c                 r    | j         \  }}t          t          j                            |||                    S r   )r   r	   pdIntervalIndexfrom_arrays)r   closedleftrights       r   interval_valuesr'   &   s0    -KD%r'33D%HHIIIr   c                      e Zd Zej        d             Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zej                            ddddgfdg dfdg dfg          d             Zd Zd Zd Zej                            dddg          d             Zej                            dddg          d             Zej                            dddg          d             Zd  Zej                            dddg          d!             Zd" Zej                            d#d$d%g e j!        d$d%g           e"d$d%g           e#d$d%g          g          ej                            dddg          d&                         Z$ej                            d#d'd$g e j!        d'd$g           e"d'd$g           e#d'd$g          g          ej                            dddg          d(                         Z%d) Z&ej        '                    d*+          ej                            dddg          d,                         Z(ej                            dddg          d-             Z)d.d/gd0gd1fd2Z*d3 Z+d4 Z,ej                            d5d.d6g d7g d8g e#g d9d.:          fd.d/gd;g d<g d=g e-j.        g d>d.d/g?          fg          d@             Z/dA Z0dB Z1ej                            dCg dD          dE             Z2dF Z3dG Z4dH Z5dI Z6dJ Z7dK Z8dL Z9dM Z:dN Z;ej                            dOdPdQdRdSdTdUgg          dV             Z<dW Z=dX Z>dY Z?dZ Z@d[ ZAd\ ZBd] ZCd^ ZDd_ ZEd` ZFda ZGdb ZHdc ZIdd ZJde ZKdf ZLdg ZMej                            dhd;e jN        fd6e jO        fdie jP        fd;d6ge jN        e jO        gfd;dige jN        e jP        gfdid6ge jP        e jO        gfg          dj             ZQej        jR        dk             ZSdl ZTdm ZUej                            dnddg          do             ZVdp ZWdq ZXdr ZYds ZZdt Z[du Z\ej                            dvddg          dw             Z]dx Z^dy Z_dz Z`dSS ){TestPivotTablec           
      Z   t          g dg dg dt          j                            d                              d          t          j                            d                              d          t          j                            d                              d          d          S )Nfoor,   r,   r,   barr-   r-   r-   r,   r,   r,   oner/   r/   twor/   r/   r/   r0   r0   r0   r/   )dullr1   shinyr1   r1   r2   r2   r1   r2   r2   r2         )ABCDEF)r
   nprandomdefault_rngstandard_normal)selfs    r   datazTestPivotTable.data-   s           Y**1--==bAAY**1--==bAAY**1--==bAAU+ +-
 -
 -	
r   c                    ddg}d}t          |d|||          }|                     d|||          }t          j        ||           t          |d||           t          |          dk    r |j        j        t          |          k    sJ n|j        j        |d         k    sJ t          |          dk    r|j        j        |k    sJ n|j        j        |d         k    sJ |	                    ||gz             d         
                    d	                                          }t          j        ||           d S )
Nr5   r6   r7   r8   )valuesindexcolumnsobserved)rB   rC   rE   r   r   mean)r   tmassert_frame_equallenrC   namestuplenamerD   groupbyaggunstack)r?   rE   r@   rC   rD   tabletable2expecteds           r   test_pivot_tablezTestPivotTable.test_pivot_table^   s^   c
E7X
 
 
 !!eWx " 
 
 	eV,,, 	DEHEEEEu::>>;$e44444;#uQx////w<<!=&'11111=%3333<<	 12237;;FCCKKMM
eX.....r   c                    t          t          d          t          d          g dd          }|                    ddddd	
          }|j                            d          |_        |j                            d          |_        |j                            d          |_        |j                            d          |_        |                    ddddd	|          }t          j	        ||           d S )Nabcdefghijr   r3   r   r      col1col2col3rZ   r\   r[   sumr   )rC   rB   rD   aggfunc
fill_valuecategory)rC   rB   rD   r^   r_   rE   )
r
   listr   rC   astyperD   rZ   r[   rG   rH   )r?   rE   dfrR   results        r   +test_pivot_table_categorical_observed_equalz:TestPivotTable.test_pivot_table_categorical_observed_equalz   s    ']]DMM???SS
 
 >>ST " 
 
 "..z::#+22:>>'..,,'..,,   
 
 	fh/////r   c                 `   t          g dg dg dd          }|                    dd          }|                    dd          j        }t          j        ||           |                    dd	d
i          }|                    dd	d
i          j        }t          j        ||           d S )Nabcxyzr   r3   r   )rowscolsrB   rq   r]   )rD   r^   rC   r^   rB   rF   )r
   r   TrG   rH   )r?   rc   rsxps       r   test_pivot_table_nocolsz&TestPivotTable.test_pivot_table_nocols   s    $__oooSS
 
 ^^FE^::^^&%^88:
b"%%%^^FXv4F^GG^^&8V2D^EEG
b"%%%%%r   c                 j   t          ddddddddddd	d
dddddddddddddd          }|                    ddddgd          }|                    dddgdd          }t          j        g dddg          }t	          j        |j        |           t	          j        |j        |           d S )Ni`  i iP  i0u  )r   r   r3   r   r5   r6   r7   i[ i] i\ i^ rh   ri   rj   di i  i@B )amountcustomermonthr   quantityr|   r{   rz   r   F)r   ))r5   rh   )r5   ri   )r5   rj   )r5   rx   )r6   rh   )r6   ri   )r6   rj   )r6   rx   )r7   rh   )r7   ri   )r7   rj   )r7   rx   rJ   )r
   r   r   from_tuplesrG   assert_index_equalrD   rC   )r?   rc   pv_colpv_indms        r   test_pivot_table_dropnaz&TestPivotTable.test_pivot_table_dropna   s   #5UCC #<<#6fEE"sss;; 'Fw7KK 
 
 *i!8   
 
 Y/   
 
 "   y)
 
 
" 	fna000
flA.....r   c                    t          g dg dd          }t          g dg dd          }t          ||g dd          }d	}t          j        t          |
          5  t          |dddgd          }d d d            n# 1 swxY w Y   t          j        ||gddg          }t          dg di|          }t          j        ||           d S )Nrh   rh   ri   ri   )rh   ri   rn   T
categoriesordered)rj   rx   rj   rx   )rj   rx   rm   r   r3   r   r   )r5   r6   rB   1The default value of observed=False is deprecatedmatchrB   r5   r6   )rB   rC   r   r}   )      ?       @      @      @rC   )	r	   r
   rG   assert_produces_warningFutureWarningr   r   r#   rH   )r?   cat1cat2rc   msgrd   	exp_indexrR   s           r   test_pivot_table_categoricalz+TestPivotTable.test_pivot_table_categorical   s\      ___d
 
 
    ___d
 
 
 TEEFFA'SAAA 	U 	U HS#JtTTTF	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U *D$<SzJJJ	h(<(<(<=YOOO
fh/////s   BBBc                    g d}t          g dg dt          d          d          }|d                             t          |d                    |d<   d	}t	          j        t          |
          5  |                    ddd|          }d d d            n# 1 swxY w Y   t          g dd          }|                    t          |d                    }t          g dd          }t          g dg dg dg||          }|s6|	                    t          |                                        d          }t	          j        ||           d S )Nrh   ri   rj   rx   )	rh   rh   rh   ri   ri   ri   rj   rj   rj   )	r   r3   r   r   r3   r   r   r3   r   	   r5   r6   r7   r5   Fr   r   r   r6   r7   )rC   rD   rB   r   rg   rL   ro   )        r         @)r   r         @)r         @       @rC   rD   rD   float)r
   rangerb   r   rG   r   r   r   r   reindexr	   rH   )	r?   r   r   rc   r   rd   expected_columnsexpected_indexrR   s	            r   $test_pivot_table_dropna_categoricalsz3TestPivotTable.test_pivot_table_dropna_categoricals   s   )))
BBB0001XX 
 
 S'..!1*e!L!L!LMM3A'SAAA 	W 	W^^#s3v^VVF	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W!///<<<+22Z777
 
  			444__ooo? $
 
 

  	Y''J0G0G'HHOOPWXXH
fh/////s   3BB Bc           
         t          t          t          j        ddddgddgd          g dd          }d}t	          j        t          |          5  |                    d	d
|          }d d d            n# 1 swxY w Y   |r	ddg}ddg}ng d}g d}t          d
|it          t          j	        |ddg|          d	                    }t	          j
        ||           d S )NlowhighTr   )r   r   r   r   r   r5   r6   r   r   r5   r6   rC   rB   r   r   r   r   r   r   r   r   )r   r   r   r   )r
   r	   r;   nanrG   r   r   r   r   
from_codesrH   )r?   r   rc   r   rd   rB   codesrR   s           r   %test_pivot_with_non_observable_dropnaz4TestPivotTable.test_pivot_with_non_observable_dropna   s    VUFE6: %v   
 /.. 	
 	
 B'SAAA 	J 	J^^#c&^IIF	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	3ZFFEE %__FJJE&M&ufov   	  
 
 
 	fh/////s   A88A<?A<c           
         t          t          g dg dd          t          d          d          }d}t          j        t
          |          5  |                    d	d
|          }d d d            n# 1 swxY w Y   t          d
g dit          t          j        g dg dd          d	                    }|s#|d
         	                    t                    |d
<   t          j        ||           d S )N)r%   r   r   r   r   )r   r   r%   Tr   rX   r   r   r   r5   r6   r   r   )r   r   r3   r   r   )r
   r	   r   rG   r   r   r   r   r   rb   r   rH   )r?   r   rc   r   rd   rR   s         r   /test_pivot_with_non_observable_dropna_multi_catz>TestPivotTable.test_pivot_with_non_observable_dropna_multi_cat  s    :::666   
 1XX 	
 	
 B'SAAA 	J 	J^^#c&^IIF	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J///"&II*A*A*A4   	  
 
 
  	8$SM0077HSM
fh/////s   A66A:=A:c                    t          |dd          }d}t          j        t          |          5  |                    dd|          }d d d            n# 1 swxY w Y   t          ddit          |                                d	          
          }|s|                    t                    }t          j	        ||           d S )Nr   r   r   r   r5   r6   r   r   r   r   )
r
   rG   r   r   r   r   uniquerb   r   rH   )r?   r'   r   rc   r   rd   rR   s          r   test_pivot_with_interval_indexz-TestPivotTable.test_pivot_with_interval_index7  s   _15566A'SAAA 	J 	J^^#c&^IIF	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J#JeO$:$:$<$<3GGG
 
 
  	.u--H
fh/////s   AAAc           
      z   t           j                            g dg d          }t          t	          j        dddt          j                  g dt          |d	                              d
          d          }d}t          j
        t          |          5  t          |ddddd          }d d d            n# 1 swxY w Y   |d         }t          g dt          t          j        dd          t          j        dd          dgd          dt          j                  }t          j        ||           d S )Nr   r   r   r   r   r   r3   r3   r   r   r   dtyperh   ri   rh   ri   Tr   F)	ascendingr   r   r   r7   r6   r5   r]   rC   rD   rB   r^   marginsAll)r      
   r   r3   r   )rC   rL   r   )r!   r"   r#   r
   r;   arangeintpr	   sort_valuesrG   r   r   r   r   r   Intervalassert_series_equal)r?   ordered_catrc   r   	pivot_tabrd   rR   s          r   &test_pivot_with_interval_index_marginsz5TestPivotTable.test_pivot_with_interval_index_marginsE  s   &22<<<NNYq!Rrw777))) d;;;GG# H   
 
 B'SAAA 	 	##s3t  I	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 5!JJQ**BK1,=,=uECPPP'	
 
 
 	vx00000s   B<<C C c                     |                     d|j        |j                  }|                     ddd          }t          j        ||           d S )Nr8   r   r5   r7   )r   r5   r7   rG   rH   r?   r@   rd   rR   s       r   test_pass_arrayzTestPivotTable.test_pass_arraya  sS    !!#TVTV!DD##CsC#@@
fh/////r   c                     |                     dd |j                  }|                     d|j        dz  d          }t          j        ||           d S )Nr8   c                     | dz  S )NrX    rl   s    r   <lambda>z3TestPivotTable.test_pass_function.<locals>.<lambda>g  s
    qAv r   r   rX   r7   )r   r7   rC   rG   rH   r   s       r   test_pass_functionz!TestPivotTable.test_pass_functionf  s[    !!#-=-=tv!NN##CtzQ#LL
fh/////r   c                     ddg}d}t          |||          }|                    ||gz                                 d                                          }t	          j        ||           d S )Nr5   r6   r7   r   rF   )r   rM   rN   rO   rG   rH   )r?   r@   rC   rD   rP   rR   s         r   test_pivot_table_multiplez(TestPivotTable.test_pivot_table_multiplek  so    c
Dw???<<	 12266v>>FFHH
eX.....r   c                    t          g dg dg dd          }|j        d         dk    sJ t          |ddgdgd	d
          }|j        }t          t	          j        d          gdz  t          t          d          d                    }t          j	        ||           t          g dg dg dd          }|j        d         dk    sJ t          |ddgdgd	d          }|j        }t          t	          j        d          gdz  t          t          d          d                    }t          j	        ||           d S )N)catbatr   r   r   r   )rh   vir   int64rh   r   r   r]   )rB   rC   rD   r_   r^   r3   abr   r   )      ?      @      @      @float64rF   )
r
   dtypesr   r   r;   r   r   ra   rG   r   )r?   frn   rd   rR   s        r   test_pivot_dtypesz TestPivotTable.test_pivot_dtypesr  s   111!\\))) 
 
 x}''''c#!U
 
 
 28G,,-1tDzzPS9T9T9TUUU
vx000 111)))))) 
 
 x}	))))c#!V
 
 
 28I../!35dRU;V;V;VWWW
vx00000r   zcolumns,valuesbool1float1float2)r   r   r   bool2c                 (   t          j        dt           j                  }t          ||dz   |dk    |dk    d          }|                                                    d||          }t          |j                  }d	 |D             }||k    sJ d S )
NrX   r   r   r3   r   )r   r   r   r   rC   rC   rD   rB   c                 8    i | ]}|t          j        d           S )r   )r;   r   ).0cols     r   
<dictcomp>z=TestPivotTable.test_pivot_preserve_dtypes.<locals>.<dictcomp>  s$    ???C),,???r   )r;   r   r   r
   reset_indexr   dictr   )r?   rD   rB   r   rc   df_resrd   rR   s           r   test_pivot_preserve_dtypesz)TestPivotTable.test_pivot_preserve_dtypes  s     Iarz***AGa1fqAvNN
 
 !!--76 . 
 
 fm$$?????!!!!!!r   c                 v   t          j        g d          }t          dg di|          }|                    |j        j        |j        j                  }t          j        ddg          }|	                    |j
        d                             t          j                  d	          }t          d
dgdt          j        ggt          ddgt          j                  |          }t!          j        ||           t          g dt%          ddd          d|          }|                    |j        j        t'          dd                    }t          j        dgt          j        dgd          gd dg          }t          ddgt          ddgt          j                  |          }t!          j        ||           |                    t'          d          t'          dd                    }t          dgt          j        dgd          |          }t!          j        ||           d S )N)
2011-01-01z
2011-02-01
2011-01-02r   r   r5   rW   r   r   )r5   r   )r5   r3   r   )levelr   r   r   r3   r   r   r8   rX   )freqperiods)r5   dtr   ME)keyr   z
2011-01-31zM8[ns]r}         
@YEr   r   z
2011-12-31)r!   DatetimeIndexr
   r   rC   r{   dayr   r~   
set_levelslevelsrb   r;   int32r   r   rG   rH   r   r   r#   )r?   idxrc   resexp_columnsexps         r   test_pivot_no_valuesz#TestPivotTable.test_pivot_no_values  sd   RRR
 
 ___-S999nn28>28<nHH ,h-ABB!,,q!((22! - 
 
 3Z#rv'Abh///
 
 

 	c3'''$__ CCCC  
 
 
 nn28>7tRV;W;W;WnXX ,UB$l^8DDDE,
 
 
 3KuaV28<<<k
 
 
 	c3'''nnt$$$g$T.J.J.J  
 
 E"L>===
 
 

 	c3'''''r   c                     t          |ddgdddgd          }t          |                    dgd	
          dddgd          }t          j        ||           d S )Nr8   r9   r5   r6   r7   r   )rB   rC   rD   r_   r:   r   axis)rC   rD   r_   )r   droprG   rH   r   s       r   test_pivot_multi_valuesz&TestPivotTable.test_pivot_multi_values  sz    #s3c
q
 
 
 IIse!I$$C#sPQ
 
 
 	fh/////r   c                 T   fd} |ddg          } |d          } |d          }t          ||gddgd          }t          j        ||           fd} |ddg          } |d          } |d          }t          ||gddgd          }t          j        ||           d S )Nc                 4    t          ddgddgd|           S )Nr8   r9   r5   r6   r7   rB   rC   rD   r^   r   funcr@   s    r   r   z;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>  s)    #sC:sD
 
 
 r   rF   stdr   )keysr  c                 6    t          ddgddgd| d          S )Nr8   r9   r5   r6   r7   T)rB   rC   rD   r^   r   r   r  s    r   r   z;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>  s0    :*
 
 
 r   )r   rG   rH   )r?   r@   r   rd   meansstdsrR   s    `     r   test_pivot_multi_functionsz)TestPivotTable.test_pivot_multi_functions  s    
 
 
 
 FE?##&		qxx5$-vuoAFFF
fh///
 
 
 
 FE?##&		qxx5$-vuoAFFF
fh/////r   methodTFc           	         t           j        }t          dd|dgg dg dd          }|r|                    ddd	
          }nt	          j        |ddd	
          }t          ||d|gd|||g|d||g|||dggt          |dddgd          t          g dd                    }t          j        ||           t          j        |                    ddd	
          |j                   d S )NR1R2R4)C1C2C3C4)r            rg   rh   ri   rj   r   r(  r   r'  r)  r   r   )	r;   r   r
   pivotr!   r   rG   rH   rs   )r?   r  r   rc   rd   rR   s         r   test_pivot_index_with_nanz(TestPivotTable.test_pivot_index_with_nan  s;    fD#t,---%%% 
 
  	FXXCSXAAFFXbSEEEFc2s#S#s#b#s#c3#	 dD$/c:::222===	
 	
 	
 	fh///
bhhS#chJJHJWWWWWr   c                 *   t          t          ddd          dt          j        d          z   d          }|d         t	          j        d          z
  |d	<   t          j        x|j        d
<   |j        d<   t          j        x|j        d<   |j        d<   |r|                    dd	d          }nt	          j        |dd	d          }|	                                j
                                        t          |          k    sJ |                                D ],\  }}|j        |d         |d	         f         |d         k    sJ -|r|                    d	dd          }nt	          j        |d	dd          }t          j        ||j                   d S )Nz
2014-02-01   r8   )r   r   d   )rh   rj   rh   z
2014-02-02ri   )r   rh   )r   rh   r   ri   )r   ri   rj   r   )r
   r   r;   r   r!   	Timestampr   locr*  notnarB   r]   rI   iterrowsrG   rH   rs   )r?   r  rc   pv_rowrd   s          r   test_pivot_index_with_nan_datesz.TestPivotTable.test_pivot_index_with_nan_dates  s    acBBB29Q<<' 
 
 S'BL6663*,&0v*,&0v 	BS==BB"CSAAABxxzz $$&&#b''1111kkmm 	: 	:FAs6#c(CH,-S99999 	FXXCSXAAFFXbSEEEF
fbd+++++r   c                 R   t          t          j        t          ddddd          t          ddddd          t          ddddd          t          ddddd          gd| d          t          j        t          d	dddd          t          d	dddd          t          d	dddd          t          d	dddd          gd| d
          t	          j        dd          t	          j        dd          d          }t          g d          }t          j        ddgdz  dd| d
          }t          j        ||g          }t          j        ddgdd| d          }t          g dg dg||          }|r|	                    dd          }	nt          j	        |dd          }	t          j        |	|           t          ddgddgg||d d                   }|r|	                    ddd          }	nt          j	        |ddd          }	t          j        |	|           d S )N  r   r   r   r3   zM8[z, US/Pacific]r     z, Asia/Tokyo]r   r   )dt1dt2data1data2r=  r=  r>  r>  z2014/01/01 09:00z2014/01/02 09:00r<  rL   r   z2013/01/01 09:00z2013/01/02 09:00r;  r   r3   r   r3   r   r   r   r   r   r   r=  r   )r
   r!   r  r   r;   r   r   r   r#   r*  rG   rH   )
r?   r  unitrc   exp_col1exp_col2exp_colexp_idxrR   r4  s
             r   test_pivot_with_tzz!TestPivotTable.test_pivot_with_tz4  s    ' q!Q22 q!Q22 q!Q22 q!Q22	 4333   ' q!Q22 q!Q22 q!Q22 q!Q22	 4333   1G4441G444) 
 
2 ===>>#!34q8++++
 
 

 ((H)=>>"!34++++
 
 

 \\<<<(
 
 
  	:u55BB"E5999B
b(+++VaVRaRL
 
 
  	JuWEEBB"E5IIIB
b(+++++r   c                 N   t          dt          j        dd          ddt          j        dd          ddt          j        dd          ddt          j        dd          ddt          j        d	d          dg          }|                    d
                                          }|j                            d           }t          |                    d
                                          d
dg|gd          }t          t          j        dd          t          j        dd          ggt          dgd          t          j	        t          j        dd          t          j        dd          gd
                    }t          j        ||           d S )Naaz2016-08-12 13:00:00-0700z
US/Pacific)tz)uidtsz2016-08-12 08:00:00-0700z2016-08-12 14:00:00-0700z2016-08-25 11:00:00-0700z2016-08-25 13:00:00-0700rM  c                 4    |                      dddd          S )Nr   )hourminutesecondmicrosecond)replacer   s    r   r   z8TestPivotTable.test_pivot_tz_in_values.<locals>.<lambda>  s    199!AaUV9#W#W r   rL  minr  r   z2016-08-12 00:00:00z2016-08-25 00:00:00r   )r
   r!   r0  	set_indexr   rM  mapr   r   r  rG   rH   )r?   rc   minsrd   rR   s        r   test_pivot_tz_in_valuesz&TestPivotTable.test_pivot_tz_in_valuest  s     ,'AlSSS 
  ,'AlSSS 
  ,'AlSSS 
  ,'AlSSS 
  ,'AlSSS #
 
2 \\$++--uyyWWXXLL**,,'F
 
 
  L!;MMML!;MMM U+++$L!6<HHHL!6<HHH   
 
 
  	fh/////r   c           
      J   t          t          j        dd          t          j        dd          t          j        dd          t          j        dd          gt          j        dd          t          j        dd          t          j        dd          t          j        dd          gt          j        dd	          t          j        dd	          d
          }t          g d          }t          j        ddgdz  dd          }t          j        ||g          }t          g dg dgt          j        ddgdd          |          }|r|	                    dd          }nt          j	        |dd          }t          j        ||           t          ddgddggt          j        ddgdd          t          j        ddgdd                    }|r|	                    ddd          }nt          j	        |ddd          }t          j        ||           d S )Nz
2013-01-01r8   z
2013-01-02z2013-01Mz2013-02r   r   r   )p1p2r=  r>  r?  r3   r\  )rL   r   rA  rB  r[  r   r   r   r   r=  r   )r
   r!   Periodr;   r   r   PeriodIndexr   r#   r*  rG   rH   )r?   r  rc   rD  rE  rF  rR   r4  s           r   test_pivot_periodsz!TestPivotTable.test_pivot_periods  sG    IlC00IlC00IlC00IlC00	 Ii--Ii--Ii--Ii--	 1G4441G444 
 
& ===>>>9i"81"<4cRRR((H)=>>\\<<<(.,!=DsSSS
 
 

  	8d33BB"D$777B
b(+++VaV.,!=DsSSSNIy#93OOO
 
 

  	Hd7CCBB"D$wGGGB
b(+++++r   c           
         t          g dt          j        d          t          j        d          t          j        d          t          j        d          gdd          }t          dt          g dd          t          t          j        d          t          j        d          d	gd
                    }|                    dd
dd          }t          j        ||           d S )Nr   2019Q12019Q2r   )rh   ri   rl   r   r3   r   rh   r   r   ri   r@   rC   rD   rl   T)rC   rD   rB   r   )r
   r!   r]  r   r   rG   rH   )r?   rc   rR   rd   s       r   test_pivot_periods_with_marginsz.TestPivotTable.test_pivot_periods_with_margins  s    !\\Ih''Ih''Ih''Ih''	 	 	
 
 C00029X..	(0C0CUKRUVVV
 
 
 c3sDQQ
h/////r   rB   bazzooc                    t          g dg dg dg dd          }|r|                    dd|          }nt          j        |dd|          }g d	g d
g}t          ddgd          }t	          ddgg dgg dg dgd dg          }t          |||          }|d                             t                    |d<   t          j        ||           d S )Nr/   r/   r/   r0   r0   r0   r5   r6   r7   r5   r6   r7   r   r3   r   r   rX   r-  rl   rm   rn   qwtr,   r-   rf  rg  r,   r-   r   )r   r3   r   rl   rm   rn   )r   rX   r-  rm  rn  ro  r/   r0   r@   rL   rf  rg  r   )r   r   r   r   r   r   )r   r   r3   r   r   r3   r  r   rJ   rd  )	r
   r*  r!   r   r   rb   objectrG   rH   	r?   rB   r  rc   rd   r@   rC   rD   rR   s	            r    test_pivot_with_list_like_valuesz/TestPivotTable.test_pivot_with_list_like_values  s4    AAA555)))555	 
 
  	MXXE5XHHFFXbuVLLLF(((*B*B*BCE5>666ENOOO4%%%'9'9'9:-
 
 

 $eWEEE"5/0088
fh/////r   r-   c           	         t          g dg dg dg dd          }|r|                    dd|          }nt          j        |dd|          }t          j        d	t          j        d
gt          j        dt          j        dgt          j        dt          j        dgd	t          j        dt          j        gdt          j        dt          j        gdt          j        dt          j        gg}t          g dd          }t          ddgddggg dg dgd dg          }t          |||          }|d                             t                    |d<   t          j
        ||           d S )Nri  rj  rk  rl  rp  rg  r,   r   r5   r   r7   r-  r6   rX   r   r3   r   )rm  ro  rn  rl   rm   rn   rq  r-   rf  r/   r0   r   r   r   r   r   rr  rd  )r
   r*  r!   r;   r   r   r   rb   rs  rG   rH   rt  s	            r   %test_pivot_with_list_like_values_nansz4TestPivotTable.test_pivot_with_list_like_values_nans  s    AAA555)))555	 
 
  	MXXE5XHHFFXbuVLLLF VS"&!$VS"&!$VS"&!$"&!RV$"&!RV$"&!RV$
 999FFFENUEN3<<.-
 
 

 $eWEEE"5/0088
fh/////r   c                     t          g dg dg dd          }d}t          j        t          |          5  |                    dd           d d d            d S # 1 swxY w Y   d S )	Nrg   ro   rY   z=pivot\(\) missing 1 required keyword-only argument: 'columns'r   rZ   r\   )rC   rB   r
   pytestraises	TypeErrorr*  )r?   rc   r   s      r   #test_pivot_columns_none_raise_errorz2TestPivotTable.test_pivot_columns_none_raise_errorB  s    IIIVVWWN]9C000 	2 	2HH6&H111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   AA #A zBMultiIndexed unstack with tuple names fails with KeyError GH#19966reasonc                    t          g d          }g dg dg dg dg dg dg}t          d	d
gddggg dg dg          }t          |||d          }|r|                    ddd          }nt	          j        |ddd          }t          ddgddg          t          ddgddg          t          ddgddg          d}t          |          }t          j        ||           d S ) Nr   r   r3   r   r   rX   )r@   )r/   r5   r   rl   )r/   r6   r3   rm   )r/   r7   r   rn   )r0   r5   r   rm  )r0   r6   rX   rn  )r0   r7   r-  ro  r-   rf  firstrQ  r   rw  )r  r   rs  )r@   rC   rD   r   )r-   r  )r-   rQ  )rf  r  r   r   r   r/   r0   r   r3   rX   r   r-  r   )r   r   r
   r*  r!   r   rG   rH   )r?   r  rC   r@   rD   rc   rd   rR   s           r   test_pivot_with_multiindexz)TestPivotTable.test_pivot_with_multiindexI  sr    ---...                  
 ENWh$78<<.
 
 
 DwhOOO 	XX&)'   FF X&)'	  F Auen555Auen555Auen555
 

 T??
fh/////r   c                    t          g dg dg dg dd          }t          j        t          d          5  |r|                    dd	d
           nt          j        |dd	d
           d d d            d S # 1 swxY w Y   d S )Nri  rj  rk  rl  rp  z^\('bar', 'baz'\)$r   rg  r,   )r-   rf  r   )r
   r{  r|  KeyErrorr*  r!   )r?   r  rc   s      r   test_pivot_with_tuple_of_valuesz.TestPivotTable.test_pivot_with_tuple_of_valuess  s    AAA555)))555	 
 
 ]8+@AAA 	P 	P PueNKKKK5%OOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   4A99A= A=r5   r6   r7   r   c                 L   |j         |j        d d         |f         }|                    |          |                                         }t	          j        ||d           |j        |k    sJ |                                }|j         |df         j        d d         }	|                    |          |                                         }
t	          j        |	|
d           |	j        |dfk    sJ |j         |df|f         }||                                         }||k    sJ d S )Nr   Fcheck_names )	r1  rC   rM   rF   rG   r   rL   
sort_indexiloc)r?   rd   
values_colr@   rC   rD   margins_colcol_marginsexpected_col_marginsindex_marginsexpected_ix_marginsgrand_total_marginsexpected_total_marginss                r   _check_outputzTestPivotTable._check_output  s9    jcrc!2K!?@#||E22:>CCEE
{,@eTTTT;....""$$
K#45:3B3?"ll733J?DDFF
}.AuUUUU!k2%66666$j+r):K)GH!%j!1!6!6!8!8"&<<<<<<<r   c                 r   |                     dddgddd          }|                     |d|           |                     dddgdddd	          }|                     |d|d
           |                     ddgddd          }|j        j        d         D ]}|                     ||         ||            d S )Nr8   r5   r6   r7   TrF   )rB   rC   rD   r   r^   Totals)rB   rC   rD   r   r^   margins_name)r  rC   rD   r   r^   r   )r   r  rD   r  )r?   r@   rd   rP   	value_cols        r   test_marginszTestPivotTable.test_margins  s   !!sCj#tV " 
 
 	63--- !!*! " 
 
 	63(CCC   *c4 ! 
 
 -a0 	B 	BIuY/DAAAA	B 	Br   c                 (   d |j         D             |_         t          j        d          }|rd}t          j        t
          |          5  |                    ddgdd	           d d d            n# 1 swxY w Y   |                    d
                              ddgdd	          }|j         D ]1}|j        d|f         }|||         	                                k    sJ 2t          j        t
          |          5  |                    ddgdd	           d d d            n# 1 swxY w Y   |                    d
                              ddgdd	          }dD ]1}|j        d|f         }|||         	                                k    sJ 2d S )Nc                     g | ]}|d z  S )r3   r   )r   ks     r   
<listcomp>z.TestPivotTable.test_no_col.<locals>.<listcomp>  s    444!A444r   &agg function failed [how->mean,dtype->-dtype 'str' does not support operation 'mean'r   AABBTrF   )rC   r   r^   CCr   r   r  )DDEEFF)
rD   reescaper{  r|  r}  r   r  r1  rF   )r?   r@   using_infer_stringr   rP   r  totalsitems           r   test_no_colzTestPivotTable.test_no_col  si    54t|444i@AA 	BAC]9C000 	O 	OD$<vNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O		$	''33,f 4 
 
  	4 	4IY{I56FT)_113333333]9C000 	O 	OD$<vNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O		$	''33,f 4 
 
 ' 	/ 	/DY{D01FT$Z__.......	/ 	/s$   
A11A58A5>D%%D),D)z*columns, aggfunc, values, expected_columnsrF   )      @r  皙@r  )r   r   皙@r  )r-   r   r,   r   r   r]   )r         rX   r-  r4   )          r4   r4   r  ))r-   r/   )r-   r0   )r-   r   )r,   r/   )r,   r0   )r,   r   r}   c                    t          g dg dg dg dg dd          }|dk    rct          j        d          }|rd	}t          j        t
          |
          5  |                    |d|           d d d            n# 1 swxY w Y   d|vr|                    d          }|                    d                              |d|          }t          |t          ddg          |          }	t          j
        ||	           d S )N	r,   r,   r,   r,   r,   r-   r-   r-   r-   	r/   r/   r/   r0   r0   r/   r/   r0   r0   	smalllarger  r  r  r  r  r  r  	r   r3   r3   r   r   r   rX   r-  r   	r3   r   rX   rX   r-  r-     r   r   r5   r6   r7   r8   r9   r]   r  r  r   T)rD   r   r^   r6   r   r7   r8   r9   r   )r
   r  r  r{  r|  r}  r   r  r   rG   rH   )
r?   rD   r^   rB   r   r  rc   r   rd   rR   s
             r   %test_margin_with_only_columns_definedz4TestPivotTable.test_margin_with_only_columns_defined  s   D TTTTTT
 
 
 100000 
 
& e)DEEC! FEy444 O OwgNNNO O O O O O O O O O O O O O Og%%B%%11T7 2 
 
 V5#s+<+<FVWWW
fh/////s   A>>BBc                 D   |                                 }t          j        t          |          dz                                t          |          d                              d          |g d<   t          t          ddgddg                    dgz   }t          j	        |d	
          }t          g dg dd|                              dd          }|d         |d         z   |d<   |                    dddgdddd          }t          j        ||           d S )Nr   i8)r8   r9   r:   r-   r,   r/   r0   r  r   r}   )      r   r   -   )!   r   $   3   x   r1   r2   r   r7   r   r  r1   r2   r   r8   r5   r6   Tr]   r   rB   rC   rD   r   r^   r_   )copyr;   r   rI   r   rb   ra   r   r   r~   r
   rename_axisr   rG   rH   )r?   r@   rc   mi_valmirR   rd   s          r   test_margins_dtypez!TestPivotTable.test_margins_dtype  s8    YY[[ iB!44<<SWWaHHOOPTUU???guenuen==>>+N#F*==='''2F2F2FGGr
 
 

+c+
"
" 	 #6*Xg->>*   
 
 	h/////r   c                 l   t          t          ddgddg                    dgz   }t          j        |d          }t	          g dg d	d
|                              dd          }|d         |d         z   |d<   |                    dddgddt          d          }t          j	        ||           d S )Nr-   r,   r/   r0   r  r   r}   )r   r   r3   r   rX   )r3   r   r3   r3   r-  r  r   r7   r   r  r1   r2   r   r8   r5   r6   Tr   r  )
ra   r   r   r~   r
   r  r   rI   rG   rH   )r?   r@   r  r  rR   rd   s         r   test_margins_dtype_lenz%TestPivotTable.test_margins_dtype_len-  s    guenuen==>>+N#F*===$__??r
 
 

+c+
"
" 	 #6*Xg->>!!* " 
 
 	h/////r   rq   ))r   r3   rh   ri   r/  )rh   r   c           	      2   t          |d         g d|d         g ddg di          }|                    d|          }t          g dgt          j        g d|	          t	          dg|d
k    rdnd                    }t          j        ||           d S )Nr   ro   r   r   )r   rX   r-  )rB   rD   )r   r   r   ))r   r   )r3   r3   )r   r   r}   r  strrs  r   rD   rC   )r
   r   r   r~   r   rG   rH   )r?   rq   df2rd   rR   s        r    test_pivot_table_multiindex_onlyz/TestPivotTable.test_pivot_table_multiindex_only@  s     a)))T!WiiiiiiPQQT::__*+C+C+C4PPPdj.@.@UUhOOO
 
 
 	fh/////r   c                    t          ddd          }t          t          j                            d                              d          t          j                            d                              d          |d          }|                    ddgd	
          }|j        j        d         	                    |          sJ d S )Nz
2016-01-01r   zEurope/Amsterdam)r   rK  r3   r   r6   r7   F)rC   r   r   )
r   r
   r;   r<   r=   r>   r   rC   r  equals)r?   dtirc   rd   s       r   test_pivot_table_retains_tzz*TestPivotTable.test_pivot_table_retains_tzN  s    q5GHHHY**1--==a@@Y**1--==a@@ 
 
 sCj?? |"1%,,S1111111r   c                    t           j        t          t          ddgg dddgfdt	          d          D             dg                    }t          |          }|                    d	g d
dg          }|                    t                    }|                    dg ddg          }t          j
        ||d           d S )Nr,   r-   r   x1x2c                 4    g | ]}t          |          z   S r   )r   )r   r   rx   s     r   r  z=TestPivotTable.test_pivot_integer_columns.<locals>.<listcomp>e  s$    555aYq\\!555r   r)  r   r   )r   r   r   r3   )rB   rC   rD   r   4)0132Fr  )r   rT  ra   r   r   r
   r   renamer  rG   rH   )r?   r@   rc   rP   r  rQ   rx   s         @r   test_pivot_integer_columnsz)TestPivotTable.test_pivot_integer_columns\  s     Ht5555599555 
 
 t__ayyy1#FFiii$$???SERR
eV??????r   c                    t          g ddz  g ddz  dgdz  dgdz  z   dz  t          j                            d                              d          d          }|                    d	d
ddg          }|                    g d          d	                                         }|                    d                              d          	                    dd          }t          j        ||           d S )N)rh   rh   rh   rh   ri   ri   ri   ri   r3   )r   r   r   r   r   r   r   r   r,   r   r-      )rh   ri   rj   valuer  rh   ri   rj   r   rg   r   all)r  how)r
   r;   r<   r=   r>   r   rM   rF   rO   r   rG   rH   )r?   r@   rP   groupedrR   s        r   test_pivot_no_level_overlapz*TestPivotTable.test_pivot_no_level_overlapq  s    ===A---1gkUGaK/14..q11AA"EE	 
 
   c3Z HH,,//8==????3''//44;;;NN
eX.....r   c           
         d}t          j        dt          fdt          fdt          fdt          fdt          fdt          fdt          fg          }t          j        g d	dt          fdt          fg
          }t          j        ||
          }t           j                            d          	                    dt          |          |          }|d         |         |d<   |d         |         |d<   t          t          ddd          t          ddd                    }|t           j                            d          	                    dt          |          |                   }|j        |d<   |j        |d<   |j        |d<   t           j                            d                              dd|          |d<   t#          |          }|                    dddgg dd          }	|	j        j        sJ d S )Ni'  r   SymbolYearMonthDayQuantityPrice)	)SP500ADBE)r  NVDA)r  ORCL)NDQ100AAPL)r  MSFT)r  GOOG)FTSEzDGE.L)r   zTSCO.L)r   zGSK.Lr   r3   r   i  r   i  r     r   r   )r   r  r  rF   rC   rD   r^   )r;   r   rs  intr   arrayemptyr<   r=   integersrI   r   r   yearr{   r  	lognormalr
   r   rD   is_monotonic_increasing)
r?   nr   productsitemsiproductdrdatesrc   pivoteds
             r   test_pivot_columns_lexsortedz+TestPivotTable.test_pivot_columns_lexsorted  s   &!6"#S!% 

 

 8
 
 
 V$x&89
 
 
 %(((9((++44QHqII!'*84g"8,X6hT1a(($tR*<*<==29((++44QBCCD
fgye..q11;;CaHHgu..E"///	 ! 
 
 666666r   c                     dgdgd}|                     ddg                              |                              d          }|                    dd|          }t	          j        ||           d S )Nr  r]   r8   r9   r5   r6   r  )rM   rN   rO   r   rG   rH   )r?   r@   r   rR   rd   s        r   test_pivot_complex_aggfuncz)TestPivotTable.test_pivot_complex_aggfunc  sw    '((<<c
++//22::3??!!S!!DD
fh/////r   c                     |ddg                              ddgt          d          }|                                }t          |d d                   |d         k    sJ d S )Nr5   r6   T)rC   r^   r   r   )r   rI   tolistr]   )r?   r@   rd   result_lists       r   test_margins_no_values_no_colsz-TestPivotTable.test_margins_no_values_no_cols  sk    sCj!--*c4 . 
 
 mmoo;ss#$$B777777r   c                     |g d                              ddgdt          d          }|j                                        g dk    sJ d S )Nr   r5   r6   r7   TrC   rD   r^   r   r   r   r   r         &@r   rI   r   r  r?   r@   rd   s      r   test_margins_no_values_two_rowsz.TestPivotTable.test_margins_no_values_two_rows  sb     ooo&22*c3 3 
 
 z  ""&@&@&@@@@@@@r   c                     |ddg                              ddt          d          }|j                                        g dk    sJ d S )Nr5   r6   Tr  )r   r   r  r  r  s      r   &test_margins_no_values_one_row_one_colz5TestPivotTable.test_margins_no_values_one_row_one_col  s^     sCj!--sC . 
 
 z  ""&6&6&6666666r   c                     g d|d<   |g d                              ddgddgt          d          }|j                                        g d	k    sJ d S )
N)rh   ri   rj   rx   er   ghr   jr  r8   r5   r6   r7   r8   r5   r6   r7   Tr  r  r  r  s      r   'test_margins_no_values_two_row_two_colsz6TestPivotTable.test_margins_no_values_two_row_two_cols  sy     LKKS	***+77*sCj#t 8 
 
 z  ""&@&@&@@@@@@@r   margin_namer,   r/   i  Nrh   ri   c           	         d| d}t          j        t          |          5  t          |dddgdgd|	           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |ddgddgd|	           d d d            n# 1 swxY w Y   t          j        t          |          5  t          |ddgdgd|	           d d d            d S # 1 swxY w Y   d S )
NzConflicting name "z3" in margins|margins_name argument must be a stringr   r8   r5   r6   r7   T)rB   rC   rD   r   r  )r{  r|  
ValueErrorr   )r?   r)  r@   r   s       r   -test_pivot_table_with_margins_set_margin_namez<TestPivotTable.test_pivot_table_with_margins_set_margin_name  s   5 5 5 5 	 ]:S111 		 		Cj(   		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 ]:S111 		 		ec
(   		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 ]:S111 		 		e(   		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s5   AAA-BBB8CC!$C!c                     t          d                                d                                g dt          ddd          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          gd	                              d
          }t          t	          j        g dd                              dd          t          j        t          ddd          gd          d                                          }d
|j	        _
        d|j        _
        t          |t          d          ddd          }t          j        ||           t          |dt          d          dd          }t          j        ||j                   t          t	          j        dt          j        dddt          j        g                              dd          t          j        t          ddd          t          ddd          gd          d                                          }d
|j	        _
        d|j        _
        |r|d                             d          |d<   t          |t          d          ddd          }t          j        ||           t          |dt          d          dd          }t          j        ||j                   |                                }t          |t          dd
          ddd          }t          j        ||           t          |dt          dd
          dd          }t          j        ||j                   d}t)          j        t,          |          5  t          |t          dd           ddd           d d d            n# 1 swxY w Y   t)          j        t,          |          5  t          |dt          dd           dd           d d d            n# 1 swxY w Y   |                    d
          }t          |t          dd
!          ddd          }t          j        ||           t          |dt          dd
!          dd          }t          j        ||j                   d"}t)          j        t.          |          5  t          |t          dd !          ddd           d d d            n# 1 swxY w Y   t)          j        t.          |          5  t          |dt          dd !          dd           d d d            d S # 1 swxY w Y   d S )#NA A A A A A A B$Carl Mark Carl Carl Joe Joe Joe Carlr   r   rX   r   r  r   r   r   r9  r   r   r3   r  )BranchBuyerr  Dater3  )r   r  r   r   r   r   r  r  r  zCarl Joe Markr   r2  r  r]   rC   rD   rB   r^   r   r  r   6MSCarlr   r   z#'The grouper name foo is not found'r   r,   )r   r   zThe level foo is not valid)r
   splitr   rU  r;   r  r   r!   r  rC   rL   rD   r   r   rG   rH   rs   r   rb   r   r{  r|  r  r+  )r?   using_array_managerrc   rR   rd   r   s         r   test_pivot_timegrouperz%TestPivotTable.test_pivot_timegrouper  s   +1133?EEGG444T1a((T1a((T2q))T2q))T2q))T2q))T2q))T2q))		 
 
  )F

! 	$ H[[[00088A>>"HT2r$:$:#;$GGG#))++
 
 

 % 't$$$
 
 
 	fh///&&&
 
 
 	fhj111HaAr26233;;AqAA"$1%%xa';';<5   $))++
 
 
 % ' 	@'/66w??HVu%%%
 
 
 	fh///'''
 
 
 	fhj111 ^^u&111
 
 
 	fh///F333
 
 
 	fhj1113]83/// 	 	5e444!   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]83/// 	 	U666!   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 \\&!!uF333
 
 
 	fh///f555
 
 
 	fhj111*]:S111 	 	5666!   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:S111 	 	U%888!   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   4$O$$O(+O(
$P::P>P>,$TT #T $U33U7:U7c                 
   t          d                                d                                g dt          ddddd          t          dd	ddd
          t          ddddd          t          ddddd          t          ddddd          t          ddddd          t          ddddd          t          ddd
dd          gt          ddddd          t          ddddd
          t          dd	d
dd          t          ddddd          t          ddddd          t          dd	d
dd          t          ddddd          t          ddddd          gd          }t          |t	          dd          t	          dd          dd          }t          t          j        t
          j        dt
          j        t
          j        dt
          j        dd	t
          j        d	t
          j        t
          j        t
          j        t
          j        dt
          j        g                              dd          t          j
        t          dd	d          t          ddd          t          ddd          t          ddd          gd          t          j
        t          dd	d          t          ddd          t          ddd          t          ddd          gd                     }d|j        _        d|j        _        t          j        ||           t          |t	          dd          t	          dd          dd          }t          j        ||j                   t          dd	d          t          ddd          ft          ddd          t          dd	d          ft          ddd          t          ddd          ft          ddd          t          ddd          ft          ddd          t          ddd          ft          ddd          t          ddd          fg}t#          j        |ddg!          }t          t          j        dt
          j        dt
          j        dt
          j        d	t
          j        d	t
          j        t
          j        dg                              dd          |d"d#g           }d$|j        _        t          |t	          dd          t	          dd          gd$gdd          }t          j        ||           t          |d$gt	          dd          t	          dd          gdd          }t          j        ||j                   d S )%Nr.  r/  r0  r9  r4   r   r  r   r   rX   r   r)  r3   r  r  r   r'  r      )r1  r2  r  r3  PayDayr   r3  r7  r=  r  r]   r4  r   r-  r  r  r   r}   r5   r6   r1  )r
   r8  r   r   r   r;   r  r   r   r!   r  rC   rL   rD   rG   rH   rs   r   r~   )r?   rc   rd   rR   tuplesr	  s         r   test_pivot_timegrouper_doublez,TestPivotTable.test_pivot_timegrouper_double  s   +1133?EEGG444T2q"a00T1aQ//T2q"a00T2q"a00T2q"a00T2q"a00T2q"a00T2q"a00	 T2q!Q//T2r2q11T1aQ//T2q"a00T2q"a00T1aQ//T2r2q11T2r2q11	 
 
8 t0008444
 
 
 HFFFFFFFFFF! & gamm"T1b))T2r**T2r**T2r**	    $T1b))T2r**T2r**T2r**	   ='
 '
 '
P % (
fh///t2226222
 
 
 	fhj111 dAr""HT2r$:$:;dB##XdAr%:%:;dB##XdB%;%;<dB##XdB%;%;<dB##XdB%;%;<dB##XdB%;%;<
 $VFH3EFFFHBFArvq"&!RVQPQR gamm#J
 
 
 !)&1117(3S3S3STJ
 
 
 	fh///*$F333W$H5U5U5UV
 
 
 	fhj11111r   c           	         t          j        g ddd          }t          j        g dd          }t          g d||t          j        d	d
          ddgdz  d          }|d d         }t          ddg          }t          ddgd          }t          j        ||g          }t          ddgddgddgg||          }t          |dgdgdg          }	t          j
        |	|           t          g d          }t          g ddz            }t          j        ddgd z  dd!          }
t          j        |||
g          }t          t          j        g d"g d#g d$gd
          ||d d                    }t          t          j        g d%g d&g d'g          ||d d                    }t          ||gd(          }t          |dgd!gdd)gd*d+g,          }	t          j
        |	|           d S )-N2011-07-19 07:00:002011-07-19 08:00:002011-07-19 09:00:00rB  rC  rD  zM8[ns, US/Pacific]r;  r   rL   2013-01-01 15:00:00rG  rG  2013-02-01 15:00:00rH  rH  zM8[ns, Asia/Tokyo]r   rh   rh   rh   ri   ri   ri   r-  r   r   r3   r   labelr;  r<  value1value2rL  rh   ri   rK  r   r   r   r   r   r   r   r   r   )r]   r]   r]   r]   rF   rF   rF   rF   )rL  rL  rM  rM  rG  rH  r   r<  )r   r   r   r3   )r   r   r3   r   )r3   rX   r   r3   )r   r   r   r   )r   r   r   r   )r   r   r   r   r  rM  r]   rF   r4  )r!   r  r
   r;   r   r   r   r#   r   rG   rH   r  r   )r?   dates1dates2rc   rG  rD  rE  rF  rR   rd   exp_col3	expected1	expected2s                r   test_pivot_datetime_tzz%TestPivotTable.test_pivot_datetime_tz  s   !   '
 
 
 !   '

 

 

 777)AW555a&1* 
 
 !*(H-..#s'222((H)=>>3Z#sc3Z0
 
 
 Rw	8*UUU
fh///UUUVVAAAAEFF#"$9:Q>&
 
 

 ((Hh)GHHH   !LL LL	    BQBK
 
 
	" H(((((((((  ABBK

 

 

	 9i0q999'Gh'FO
 
 
 	fh/////r   c                    t          j        g d          }t          j        g d          }t          g d||t          j        dd          ddgd	z  d
          }t          |d|d         j        j        d          }t          ddgd          }t          ddgddgddgd|t          g dt          j	        d                    }t          j        ||           t          ||d         j        j        |d         j        j        d          }t          ddgddgddgdt          ddgt          j	        d          t          g dt          j	        d                    }t          j        ||           t          ||d         j        j        j        |d         j        j        |d         j        j        gd          }t          j        t          j        g dt          j	                  t          j        ddgd	z  t          j	                  gddg          }t          t          j        g dg          t          dgt          j	                  |          }t          j        ||           t          |t          j        g d           |d         j        j        |d         j        j        gd          }t          t          j        d!d	dt          j        dt          j        gt          j        t          j        t          j        d"t          j        d#gg          d$d%g|          }t          j        ||           d S )&NrA  rF  rI  r-  r   r   r   r3   r   rJ  rK  r;  rL  r   rh   ri   r   r   r   r   r   r   r   )r   r  r   rE  r   r<  )r   r   r  r  r   r   r}   )r   r   r   r   r   r   r9  )XrU  rU  rU  YrV  r   r   rX   rU  rV  )r!   r  r
   r;   r   r   r   rO  r   r  rG   rH   r{   r  rB   r   r#   r  r   )r?   rN  rO  rc   rd   rG  rR   rF  s           r   test_pivot_dtaccessorz$TestPivotTable.test_pivot_dtaccessorv  s   !  	
 	
 !  	
 	
 777)AW555a&1* 
 
 gr%y|'8
 
 
 c
111c
SzsCj99)))28%@@@
 
 

 	fh///bil("U),2CH
 
 
 c
SzsCj99AbhU;;;)))28%@@@
 
 

 	fh///U),#*Y\&5	(:;	
 
 
 (+++28<<<!Q!28444 %.
 
 
 H444566bh///
 
 

 	fh///(999::Y\&5	(:;	
 
 
 HQ261bf-26ST/UV  *
 
 
 	fh/////r   c                    t          ddd          }t          t          j        t	          |                    |          }t          t          |          |j        j        |j        j	                  }|j
                            d          |_
        t          j        |j        j	                  }i }|j        j                                        j        D ]7}|j        j        |k    }t          |j        |         ||                   ||<   8t          |t                    j        }t#          j        ||           d S )	N1/1/2000
12/31/2004r8   r  r   r   r   r   )r   r   r;   r   rI   r   r
   rC   r  	dayofyearrD   	droplevelasarrayr   rB   r   rs   rG   rH   )r?   rngrM  rd   doyrR   rm   masks           r   
test_dailyzTestPivotTable.test_daily  s   \<<<BIc#hh''s333bMM8J
 
 
  11!44j+,,%%''. 	C 	CA8=A%D 4D	BBBHQKKXU3335
fh/////r   c                    t          ddd          }t          t          j        t	          |                    |          }t          t          |          |j        j        |j        j	                  }|j
                            d          |_
        t          j        |j        j	                  }i }|j        j                                        j        D ]7}|j        j        |k    }t          |j        |         ||                   ||<   8t          |t                    j        }t#          j        ||           d S )	NrY  rZ  r   r  r   r   r   r   )r   r   r;   r   rI   r   r
   rC   r  r{   rD   r\  r]  r   rB   r   rs   rG   rH   )r?   r^  rM  rd   r{   rR   rm   r`  s           r   test_monthlyzTestPivotTable.test_monthly  s   \===BIc#hh''s333Yr]]"(-XXX11!44
28>**%%''. 	E 	EA8=A%D 4dDDDHQKKXU3335
fh/////r   c                 V   ddd}t          |dgt          |                                          |          }t          |dg|                                |          }t          j        ||           d |D             }t          |dg||          }t          j        ||           d S )Nr]   rF   r  r5   )rC   rB   r^   c              3      K   | ]}|V  d S r   r   )r   r  s     r   	<genexpr>zGTestPivotTable.test_pivot_table_with_iterator_values.<locals>.<genexpr>  s"      22E%222222r   )r   ra   r  rG   rH   )r?   r@   aggspivot_values_listpivot_values_keysagg_values_genpivot_values_gens          r   %test_pivot_table_with_iterator_valuesz4TestPivotTable.test_pivot_table_with_iterator_values  s    (('d499;;&7&7
 
 
 (diikk4
 
 
 	/1BCCC22T222&nd
 
 
 	.0ABBBBBr   c                 @   d}t          g dg dg dd          }|                    ddd|d	d
g          }t          dd|gd          }ddd	d|fddd
d|fg}t          j        |g d          }t          |j        ||          }t          j        ||           d S )NWeekly)baconcheesero  rp  )r   r   g	@gffffff
@)r   r   rs   rs   )r  costr  r  r  TrF   max)rC   rD   r   r  r^   ro  rp  r   )rF   rq  r   )rF   rq  rs   rq  )rr  rq  r   )rr  rq  rs   )NNr  r}   r   )r
   r   r   r   r~   rB   rG   rH   )r?   r  costsrP   ixtupsrq   rR   s           r   /test_pivot_table_margins_name_with_aggfunc_listz>TestPivotTable.test_pivot_table_margins_name_with_aggfunc_list  s    >>>,,,--- 
 
 !!%UO " 
 
 GX|46BBB"!V\*! FL)
 %d2E2E2EFFFU\TBBB
eX.....r   c                    t          t          j        d          t          j        d          dz  t          j        d          dz  d          }t          g dg dg dg          }t          g dd	
          |_        t          g dd
          |_        |                    dd	d|d          }t          j        ||           d S )Nr  r   r3   rk   r   r   r   rX   r-  r  r   r   r   r   r   r   rm   r   rn   rl   Tr   r   )	r
   r;   r   r   rC   rD   r   rG   rH   )r?   rE   rc   rR   rP   s        r   test_categorical_marginsz'TestPivotTable.test_categorical_margins#  s    )A,,RYq\\Q%6RYq\\A=MNN
 
 ooo{{{KKKHII}}}3777 S999sCXtLL
eX.....r   c                 x   t          t          j        d          t          j        d          dz  t          j        d          dz  d          }t          g dg dg dg          }t          g dd	
          |_        t          g dd
          |_        |j                            d          |_        |j                            d          |_        d}t          j
        t          |          5  |                    dd	d|d          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr  r   r3   rk   rx  ry  rz  r{  rm   r   rn   r`   r   r   rl   Tr|  )r
   r;   r   r   rC   rD   rm   rb   rn   rG   r   r   r   rH   )r?   rE   rc   rR   r   rP   s         r   !test_categorical_margins_categoryz0TestPivotTable.test_categorical_margins_category0  sr   )A,,RYq\\Q%6RYq\\A=MNN
 
 ooo{{{KKKHII}}}3777 S999t{{:&&t{{:&&A'SAAA 	Q 	QNN3S4NPPE	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q
eX.....s   3DD!Dc                     t          g dg dg dg dd          }t          |dd          }t          g d	g d
g ddt          g dd                    }t          j        ||           d S )N)r3   r   r-  r  )r   r   rX   r  )r   r   r   r-  )rU  rU  rV  rV  r'  r8   T)rC   r   )r   r   rX   )r   g      @r   )r   r   r   r   )rU  rV  r   r   r   r
   r   r   rG   rH   r?   rc   rd   rR   s       r   test_margins_casted_to_floatz+TestPivotTable.test_margins_casted_to_float@  s    !\\!\\!\\)))	 
 
 RsD999--oooOOOLL)))444
 
 
 	fh/////r   c                    t           j        dddt           j        g}t           j        ddt           j        dg}t          t          |ddg|          t          |ddg|          t	          dd          d          }|                    d	d
d|          }t          j        ddg|d
          }t          dt           j        gt           j        dgg|          }t          t          ddgddg|          d	          |_	        t          j        ||           |                    d
d|          }t          ddgg|t          dg                    }t          j        ||           d S )Nr   r   r5   r6   r   r   r-  )InColValr  r  r  )rC   rD   rB   rE   )r   rL   r   r   )r@   rD   r   )rD   rB   rE   r   )r@   rD   rC   )r;   r   r
   r	   r   r   r!   CategoricalIndexr   rC   rG   rH   )	r?   rE   r   r	  r   rc   rd   expected_colsrR   s	            r   test_pivot_with_categoricalz*TestPivotTable.test_pivot_with_categoricalR  s   vufeRV4vsC-!#5&/7SSS"3C:wOOOQ{{ 
 
 eh   
 
 +S#JeTTTC=263-"@-XXXUFOWUUU
 
 

 	fh/// ehOO*}E5'NN
 
 
 	fh/////r   c                    t          g dg dg dd          }|d                             d          |d<   d}t          j        t          |          5  |                    d	dd
|d          }d d d            n# 1 swxY w Y   t          j        g dg ddd          }t          ddgd
          }t          j
        ddgddgddggt          j                  }t          |||          }t          j        ||           d S )N)r5   r6   r7   r7   r   r   )r#  r$  Vr#  r`   r   r   r  r$  count)rC   rD   r   r^   r   Fr   r   rL   rh   ri   r   r   r   r3   r   r   )r
   rb   rG   r   r   r   r!   r  r   r;   r  r   rH   )	r?   rE   rc   r   rd   r   r   expected_datarR   s	            r   test_categorical_aggfuncz'TestPivotTable.test_categorical_aggfuncu  s   '''/C/C/C,,,WW
 
 d8??:..4A'SAAA 	 	^^4h $  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ,OOT
 
 
 !#s$7771a&1a&1a&!9JJJ9I
 
 
 	fh/////s   A<<B B c                    t          g dg dg dd          }g d}|d                             d          j                            |          |d<   |                    ddd	|d
          }t          ddgd	d          }t          j        ||dd          }ddggddggdz  z   }t          |||          }|r|j        dg         }t          j
        ||           d S )N)r.  r     )Januaryr  r  )r9  r:  r9  )Salesr  r  )r  FebruaryMarchAprilMayJuneJulyAugust	SeptemberOctoberNovemberDecemberr  r`   r  r  r]   )rB   rC   rD   rE   r^   r9  r:  r   r@  Fr  i@  r  r   r4   r   r  )r
   rb   r   set_categoriesr   r   r!   r  r1  rG   rH   )	r?   rE   rc   monthsrd   r   r   r  rR   s	            r   %test_categorical_pivot_index_orderingz4TestPivotTable.test_categorical_pivot_index_ordering  s>   (:::*** 
 

 
 
 k((448GGOO7   
 
 !$F'JJJ,vu7
 
 
 sAx"}49I
 
 
  	1|YK0H
fh/////r   c                 &   t          g dg dg dd          }|                    dddgd	          }t          j        g dg dgddg
          }t          g d|dg          }t	          j        ||           |                    dddd          }t          dt          j        t          j        gt          j        dt          j        gt          j        t          j        dggt          g dd          t          g dd                    }t	          j        ||           |                    dddg	          }t          j        dgdgg          }t          g dt          g dd          |          }t	          j        ||           d S )N)r   r   rX   )r7   r8   r9   )r   r   r   rY   rZ   r\   r[   r]   rr   r}   r   r  r   r   rX   r   )	r
   r   r   r#   rG   rH   r;   r   r   )r?   rc   rd   r   rR   s        r   test_pivot_table_not_seriesz*TestPivotTable.test_pivot_table_not_series  s   
 			???IIIVVWWvv.>NN"III#?PVGWXXXYYYa&BBB
fh///ffeTT 261bf"57JK			//////777
 
 
 	fh///fugFF"UGfX#677YYYeIIIF.K.K.KUVWWW
fh/////r   c                 
   d}t          dg dit          dgt                              }t          |dgt          d|          }t          dd	d
|gdd          }t          |g           }t          j        ||           d S )Nu   Δοκιμήr,   ro   r   r   T)rC   r^   r   r  r   r3   r   rs  rE  r   )r
   r   rs  r   rI   rG   rH   )r?   greekframerP   rC   rR   s         r   test_pivot_margins_name_unicodez.TestPivotTable.test_pivot_margins_name_unicode  s    65))),eUG66R6R6RSSS%#t%
 
 
 q!Q&hUCCC5"555
eX.....r   c                 >   t          g dg dt          d          d          }t          |ddd          }t          d	gd
dggddgddggd dg          }t          ddddddd|                              d          }t          j        ||           t          |ddddg          }t          ddgd	gd
dggg dg dg dgg d          }t          ddddddddddddd|                              d          }t          j        ||           d S ) Nr+   r.   r4   r   r5   r6   r]   r  r7   r/   r0   r   r   rr  r'  r  )r-   r,   r   r)  ))r7   r/   )r7   r0   r   rF   r   )r   r   r   r   rw  )NNr6   r   r  r   g@))rF   r7   r/   )rF   r7   r0   )r]   r7   r/   )r]   r7   r0   )r
   r   r   r   r  rG   rH   )r?   r@   rd   r  rR   s        r   test_pivot_string_as_funcz(TestPivotTable.test_pivot_string_as_func  s         2YY7 
 
@ Tc5IIIEE5>*Aq6Aq62B4QT+
 
 
 #%b11SUAVAVWW
 
 
 +c

 	 	fh///TcE6?SSSFOcUUEN;<<|||<###
 
 

 .1$&?&?.1:K&L&L-/%;%;-.r%:%:	  
 
 
 +c

 	 	fh/////r   z
f, f_numpyr  c                 r   |                     d          }t          |dd|          }t          |t                    rd                    |          n|}d| d}t          j        t          |	          5  t          |dd|          }d d d            n# 1 swxY w Y   t          j        ||           d S )
Nr7   r   r5   r6   r  |zusing DataFrameGroupBy.[]r   )	r  r   
isinstancera   joinrG   r   r   rH   )r?   r   f_numpyr@   rd   opsr   rR   s           r   test_pivot_string_func_vs_funcz-TestPivotTable.test_pivot_string_func_vs_func  s
    yyy%%Tc1EEE'4007chhqkkka////'SAAA 	R 	R"4sCQQQH	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R
fh/////s   7BBBc           	      8    G d dt           j                  }|                                5 }|                    t           d|           t	          t          j        d          t          j        d          dd          }d}t          j        t          |          5  t          j        t          d	          5  |                    d
ddd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                         e Zd Zd fdZ xZS )STestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstackerreturnNc                 T     t                      j        |i | t          d          )NDon't compute final result.)super__init__	Exception)r?   argskwargs	__class__s      r   r  z\TestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstacker.__init__7  s.      $1&111 =>>>r   )r  N)__name__
__module____qualname__r  __classcell__)r  s   @r   MockUnstackerr  6  s=        ? ? ? ? ? ? ? ? ? ?r   r  
_Unstackeri   r   )ind1ind2r  z$The following operation may generater   r  r  r  r  r4  )reshape_libr  contextsetattrr
   r;   r   rG   r   r   r{  r|  r  r   )r?   monkeypatchr  r   rc   r   s         r   -test_pivot_number_of_levels_larger_than_int32z<TestPivotTable.test_pivot_number_of_levels_larger_than_int322  s   	? 	? 	? 	? 	?K2 	? 	? 	?   "" 	aIIk<???5))29U3C3CaPP B 9C+,>cJJJ  ]94QRRR  NN$fWg #                               	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sZ   A1DC7:C C7 C$$C7'C$(C7+D7C;	;D>C;	?DDDc                    t          g dg dg dd          }d }d }d }t          |d|||g|	          }d
dt          j        t          j        ddgddt          j        t          j        ddgg}t	          j        g dddggd dg          }t          |ddg|          }	|r|	                    d          }	t          j        ||	           d S )N)applepeachr  )r   r   r3   )r   r-  r-  )fruitsizetastec                     dS )Nr   r   r   s    r   ret_onez?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_oneS  s    1r   c                      t          |           S r   )r]   r   s    r   ret_sumz?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_sumV  s    q66Mr   c                     t           j        S r   )r;   r   r   s    r   ret_nonez@TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_noneY  s	    6Mr   r  rD   r^   r   r   r   r  r-  )r  r  r  r  r  r}   r  r  r   rD   r  )	r
   r   r;   r   r   from_productr   rG   rH   )
r?   r   rc   r  r  r  rd   r@   r   rR   s
             r   test_pivot_table_aggfunc_dropnaz.TestPivotTable.test_pivot_table_aggfunc_dropnaI  s3   444!		" 
 
	 	 		 	 		 	 	 '8W)Ef
 
 
 Arvrvq!,r1bfbfa.KL%///'71CD/
 
 
 T&'):CHHH 	7I66H
fh/////r   c                 ~   t          g ddt          j        dgdt          j        t          j        gd          }t          |dd|          }d	t          j        gdt          j        gg}t	          d
dgd          }t          |ddg|          }|r|                    d          }t          j        ||           d S )N)r/   r0   r/   r   r3   r   )r5   rl   rm   r5   rF   r  r   r/   r0   r   rl   rm   r   rD   r  )r
   r;   r   r   r   r   rG   rH   )r?   r   rc   rd   r@   r   rR   s          r   &test_pivot_table_aggfunc_scalar_dropnaz5TestPivotTable.test_pivot_table_aggfunc_scalar_dropnal  s    '''q"&!nArvrvCVWW
 
 RfVLLLbf26{+UEN---T#sSAAA 	7I66H
fh/////r   r   c                    t          g dg dg dg dd          }|                    dddt          j        |	          }t	          g d
          }t          t	          g dd          |          }t          j        ||           d S )N)r3   r3   r   r   r3   )rX   r-  r   r  r   )prm  rm  r  rm  )NNNNN)r5   idr7   r8   r5   r8   r  r   r   r   rE  r   )r
   r   r;   r  r   rG   rH   )r?   r   rc   rd   exp_colsrR   s         r   test_pivot_table_empty_aggfuncz-TestPivotTable.test_pivot_table_empty_aggfunc}  s     $__%oo...333	 
 
 s4'   
 
 #&&&57#E#E#ExXXX
fh/////r   c                     d }t          g dg dg dd          }t          j        t          d          5  |                    ddd	|
           d d d            d S # 1 swxY w Y   d S )Nc                 *    t          j        |           S r   )r;   rF   )arrs    r   rN   z=TestPivotTable.test_pivot_table_no_column_raises.<locals>.agg  s    73<<r   r   rw  )r   r)  r<  (   )rU  rV  Z
notpresentr   rU  rV  )r^   )r
   r{  r|  r  r   )r?   rN   rc   s      r   !test_pivot_table_no_column_raisesz0TestPivotTable.test_pivot_table_no_column_raises  s    	  	  	  \\\CSCSCSTTUU]8<888 	@ 	@NN<c3N???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   AA#&A#c                 
   t          g dg dg dg dg dd          }t          |ddgd	d
gdg dd          }t          j        g d          }t          j        g dd	d
g          }t	          j        g dg dg dg dg          }t          |||          }|d                             t          j                  |d<   |d                             t          j                  |d<   t          j	        ||           d S )Nr  r  r  r  r  r  r8   r9   r5   r7   rF   )rT  rr  rF   r  )rB   rC   r^   ))r8   rF   r9   rr  )r9   rF   r9   rT  ))r-   r  )r-   r  )r,   r  )r,   r  r}   )r        "@g      @r   )r  r  g      !@r   )r   r   r   r   )g["8@r   g.UUU@r   r  r  r  )
r
   r   r   r~   r;   r  rb   r   rG   rH   )r?   rc   rP   rq   rC   valsrR   s          r   0test_pivot_table_multiindex_columns_doctest_casez?TestPivotTable.test_pivot_table_multiindex_columns_doctest_case  sz    TTTTTT
 
 
 100000 
 
( :* '='='=>>	
 
 
 %FFF
 
 &TTT*
 
 
 x$$$$$$$$$222	
 
 T4u===!),!7!>!>rx!H!H!),!7!>!>rx!H!H
eX.....r   c           	      l   t          g dg dg dg dd          }|                    ddgdd	d
d          }t          dt          j        gdt          j        gt          j        dggt	          ddgd          t          j        g dg dgddg                    }t          j        ||           d S )N)d1d4d3rg   )   r  "   )2018r  2019)rh   r   numr  rh   r   r  r  r]   F)rC   rD   rB   r^   sortr  r  r  r  r  r   r}   r  )	r
   r   r;   r   r   r   r#   rG   rH   r  s       r   test_pivot_table_sort_falsez*TestPivotTable.test_pivot_table_sort_false  s    '''&#||000	 
 
 ,ueRW   
 
 "&\B<"&"666*888(###___5c5\  
 
 
 	fh/////r   c           	      8   t          dddgt          ddgd          d          }|                    d	d
dd          }t          ddgddgddggt          g dd	          t	          j        ddgd d
g          d          }t          j        ||           d S )Nr5   r   r3   r   r4   Int64r   )rh   ri   salesri   rh   Tr]   r  r  rc  r   r  r5   r  r   r}   rC   rD   r   )r
   r   r   r   r   r~   rG   rH   r  s       r   !test_pivot_table_nullable_marginsz0TestPivotTable.test_pivot_table_nullable_margins  s    QFVRHG-L-L-LMM
 
 c3eTT"XBx"b*C000*!124+   
 
 
 	fh/////r   c           	         t          ddgddgddgddgd	          }|                    d
dgddgd          }t          ddgddggddgt          j        ddgd
dg                    }t	          j        ||           d S )NJohnMichaelFooBar      /   r  )	firstnamelastnameheightager
  r	  r  r  F)rC   rB   r  g     e@g     G@g     f@g     @@)r  r  )r  r  r}   r  )r
   r   r   r~   rG   rH   r  s       r   0test_pivot_table_sort_false_with_multiple_valuesz?TestPivotTable.test_pivot_table_sort_false_with_multiple_values  s    $i0"EN*Bx	 
 
 {+Xu4EE   
 
 T]UDM*u%( "45!;/  
 
 
 	fh/////r   c                 2   t          g dg dg dg dg          }g d|_        |                    dddd	d
d          }t          g dg dg dg          }g d|_        g d|_        d|j        _        d|j        _        t          j        ||           d S )Nrh   rl   r   rh   rm   r3   ri   rm   r   ri   rn   r   )r   r)  r<  r   r)  r<  r]   r   TrC   rD   rB   r^   r_   r   r   r3   r   r   r   r   r   r   r   rX   r   r   rl   rm   rn   r   rh   ri   r   )r
   rD   r   rC   rL   rG   rH   r  s       r   1test_pivot_table_with_margins_and_numeric_columnsz@TestPivotTable.test_pivot_table_with_margins_and_numeric_columns		  s    }}}mmm]]]STT!\\
bUqRV   
 
 lllLLL---HII111*** " 
fh/////r   r   c                    t          ddt          ddgd          d          }|                    dd	d
d|          }t          dggt          dgd          t          dgd	          d          }t	          j        ||           d S )Nrh   ri   r)  r  r  r   )rl   rm   r  rl   rm   r  rF   )rC   rD   rB   r^   r   r<  r   Float64r  )r
   r   r   r   rG   rH   )r?   r   rc   rd   rR   s        r   test_pivot_ea_dtype_dropnaz)TestPivotTable.test_pivot_ea_dtype_dropna	  s     Ss62r('3R3R3RSSTTs5&   
 
 TFC(((3%c***	
 
 
 	fh/////r   c                 :   t          dddgt          j        d          ddgd          }t          j        d           5  |                    dd	gd
dd          }d d d            n# 1 swxY w Y   t          ddgddgddggt          j        t          g dd          t          t          j        d          t          j        d          dgt          d	          g          t          j
        ddgd d
g                    }t          j        ||           d S )Nr5   r   r3   z
2019-12-31g      $@r4   )rh   ri   r   r  ri   r   rh   Tr]   r  r  g      5@rc  r   r  rE  r  r  r}   r   )r
   r!   r0  rG   r   r   r   r#   r   rs  r~   rH   r  s       r   !test_pivot_table_datetime_warningz0TestPivotTable.test_pivot_table_datetime_warning)	  s   V\22	 
 
 '-- 	 	^^FmS$ $  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 D\D$<$6(---c222l33R\,5O5OQST$#  	 	 *!124+  
 
 
  	fh/////s   A''A+.A+c                    t          g dg dg dg dg dg dg dg dd          }t          |ddd	gd
gd          }t          ddgddgddgt          j        dggt	          ddgd
          t          j        g dddgdz  gdd	g                    }|r|d                             d          |d<   t          j	        ||           d S )Nr  r  r  r  r  )r5   r6   r7   r8   r9   )col5)col6r-  r   sevenr8   r5   r6   r"  r]   r  r   r   r   r   r   r  r  r   )r-   r-   r,   r,   r/   r0   r3   r}   r  r   )
r
   r   r;   r   r   r   r#   rb   rG   rH   )r?   r9  rc   rd   rR   s        r   )test_pivot_table_with_mixed_nested_tuplesz8TestPivotTable.test_pivot_table_with_mixed_nested_tuplesI	  sc   TTTTTT
 
 
 100000
 
 

 
 

 
 
M1 13
 3
h s3*|ne
 
 
 3Z#sc3Z"&#?7G,<@@@(---u~/AB3PS*  
 
 
  	B ( 1 8 8 A AHW
fh/////r   c                 f   t          t          d          t          d          t          d          t          d          d          }t          j        d t          d          D             d t          d          D             t          d          gd          }t	          j        dt          j                  }t	          j        |d           t          |t          t          d          d	
          |          }|	                    d	gdgdgdg          }t          j        ||           d S )Nr   r   c                     g | ]}d S )nuniquer   r   r   s     r   r  zYTestPivotTable.test_pivot_table_aggfunc_nunique_with_different_values.<locals>.<listcomp>	  s    ...q...r   c                     g | ]}d S )rj   r   r(  s     r   r  zYTestPivotTable.test_pivot_table_aggfunc_nunique_with_different_values.<locals>.<listcomp>	  s    ((((((r   )NNri   r}   )r   r   r   rh   r   r   ri   rj   r'  r4  )r
   r   r   r#   r;   fullr   fill_diagonalr   r   rG   rH   )r?   test	columnvalnparrrR   rd   s         r   6test_pivot_table_aggfunc_nunique_with_different_valueszETestPivotTable.test_pivot_table_aggfunc_nunique_with_different_values	  s@   2YY2YY2YY2YY	 
 
 *..E"II...((eBii(((b		
 $
 
 
	 "&))
$$$U%b		*D*D*DiXXX!!   K " 
 
 	fh/////r   )ar  r  r  r{  fixturer@   rS   re   rv   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r  r  r  r+  r7  rH  rX  r_  re  r;   r  r   r   ru  rx  r~  xfailr  r  r  r  r  r   r~   r  r  r  r  r  r  r  r  r  r  r  r!  r(  r,  r:  r?  rS  rW  ra  rc  rl  rv  r}  r  r  r  r  r  r  r  r  r]   rF   r  r  slowr  r  r  r  r  r  r  r   r  r  r  r  r$  r/  r   r   r   r)   r)   ,   se	       ^.
 .
 ^.
`/ / /80 0 06
& 
& 
&#/ #/ #/J0 0 0 0 0 0@!0 !0 !0F0 0 0<0 0 01 1 180 0 0
0 0 0
/ / /!1 !1 !1F [x*+33343334	
 " " ",( ,( ,(\0 0 00 0 02 [Xe}55X X 65X6 [Xe}55, , 65,6 [Xe}55=, =, 65=,~50 50 50n [Xe}55+, +, 65+,Z0 0 00 [ENBHeU^$$FE5>""E5%.!!		
  [Xe}550 0 65 06 [ENBHeU^$$FE5>""E5%.!!		
  [Xe}55 0  0 65  0D2 2 2 [S    [Xe}55$0 $0 65 $0L [Xe}55P P 65P, Cj= = = =2B B B2/ / /4 [4 %%%';';';<222===	 c
))),,, '
&   *
 
 
	
 <$0 $0= <$0L0 0 000 0 0& [V%M%M%MNN0 0 ON02 2 2@ @ @*/ / /$17 17 17f0 0 08 8 8A A A7 7 7A A A []UE3sCj,QRR# # SR#JV V Vp}2 }2 }2~Y0 Y0 Y0vY0 Y0 Y0v0 0 0$0 0 0C C C&/ / /</ / // / / 0 0 0$!0 !0 !0F0 0 0,*0 *0 *0X0 0 08	/ 	/ 	/<0 <0 <0| [BFORWBFOV_rvrw/0U^bfbf-.V_rvrw/0	

 
	0 	0
 
	0 [  ,!0 !0 !0F0 0 0" [Yu660 0 760"@ @ @2/ 2/ 2/h0 0 0,0 0 0"0 0 0,0 0 0" [Xe}550 0 6500 0 0@C0 C0 C0J#0 #0 #0 #0 #0r   r)   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                             e            d	          d
             Zd Zd Zd Zd Zd Zd ZdS )	TestPivotc                    g dg dg dd}t          |          }|                    ddd          }t          dd	d
ddd	d
dd          }d\  |j        _        |j        _        t          j        ||           |j        j        dk    sJ |j        j        dk    sJ |                    dd          }|j        j        dk    sJ |j        j        dk    sJ d S )Nr5   r6   r7   r7   r6   r5   Oner:  r:  Twor;  r;  r   r   r   r   r   r   r   rC   rD   rB   r   r   r   r   r:  r;  r   NrD   )r
   r*  rC   rL   rD   rG   rH   rJ   )r?   r@   r  r  rR   s        r   
test_pivotzTestPivot.test_pivot	  s#   333AAA444
 
 $++GYx+PP s55 s55 
 
 6H2X-2
gx000 }!W,,,,#y0000 ++GY+??}!W,,,,$(9999999r   c                     t          g dg dg dd          }t          j        t          d          5  |                    ddd	
           d d d            d S # 1 swxY w Y   d S )N)r-   r-   r,   r,   r,   )r/   r0   r/   r/   r0   )r   r   r   r   r   rg   zduplicate entriesr   rh   ri   rj   r   )r
   r{  r|  r+  r*  )r?   r@   s     r   test_pivot_duplicateszTestPivot.test_pivot_duplicates	  s    888888... 
 
 ]:-@AAA 	; 	;JJS#cJ:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   AA"Ac                     t          g d          }|                    ddd          }t          g g           }t          j        ||d	           d S )
Nrg   r   rh   ri   rj   r   r   Fr  )r
   r*  rG   rH   r  s       r   test_pivot_emptyzTestPivot.test_pivot_empty	  s]    ///S==2r222
fhEBBBBBBr   c                     t          ddg|          }|                    ddd          }t          dd	gd|
          }|dk    r|                    d          }t	          j        |j        |           d S )N)r5   r  A1)r6   r  B2)r@   r   r   r   r3   r   r5   r6   r@  rs  r  )r
   r*  r   rb   rG   r   rD   )r?   any_string_dtyperc   rd   r   s        r   test_pivot_integer_bugz TestPivot.test_pivot_integer_bug	  s    "$45=M
 
 
 1Q77 #s!;KLLLx''/66u==
fn.>?????r   c                    g dg dg dd}t          |                              d          }|                    dd          }t          d	d
ddd	d
ddd          }d\  |j        _        |j        _        t          j        ||           |                    d          }t          j	        ddgd dg          |_        d|j        _        t          j        ||d           |j        j        dk    sJ |j        j
        dk    sJ |j                            d          |_        |                    dd          }d|j        _        t          j        ||           d S )Nr8  r9  r<  r   rC   rD   rB   rD   rB   r   r   r   r   r=  r   r   )rB   r:  )rB   r;  r}   Fr  r>  r   )r
   rU  r*  rC   rL   rD   rG   rH   r   r~   rJ   r\  )r?   r@   r  rd   rR   s        r   test_pivot_index_nonezTestPivot.test_pivot_index_none	  s    433AAA444
 
 $))'22Yx@@ s55 s55 
 
 6H2X-2
fh/// Y//%1 124:K
 
 
 &
fhEBBBB| G++++~#'88888#+55a88Yx@@ )
fh/////r   c                    t          g dg dg dg dg dd          }ddg}d	g}|                    ||
          }t          t          j        g ddt          j        dt          j        gg dt          j        dt          j        dgg          t          j        ddgddg          t          j        ddgd d	g          
          }t          j        ||           |ddgk    sJ |d	gk    sJ d S )N)r   r   r   r3   r3   r3   )r   r   r3   r   r   r3   )r   r3   r   r3   r   r3   rk  r  )lev1lev2lev3lev4rB   rM  rN  rO  r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r3   r   r3   r}   )rP  rP  rB   rB   )	r
   r*  r;   r  r   r   r#   rG   rH   )r?   rc   rC   rD   rd   rR   s         r   0test_pivot_index_list_values_none_immutable_argsz:TestPivot.test_pivot_index_list_values_none_immutable_args
  sZ   ************,,, 
 
  (w77H((("&#rv.(((VS"&#.	  (|,VV4D   *5|DVn  
 
 
$ 	fh///(((((6(""""""r   c                     t          dgdd          }t          j        t          d          5  |                                 d d d            d S # 1 swxY w Y   d S )Nr   r  z(missing 1 required keyword-only argumentr   rz  )r?   rc   s     r   test_pivot_columns_not_givenz&TestPivot.test_pivot_columns_not_given8
  s    aSq))**]9,VWWW 	 	HHJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAz&TODO(infer_string) None is cast to NaNr  c                    t          dgddd          }|                    d           }t          dgdd          }t          j        ||           |                    d d          }t          d	dit	          dgd
                    }t          j        ||           |                    d dd          }t          ddit	          dgd
                    }t          j        ||           d S )Nr   r3   r   Nri   rj   r   ))ri   r   rj   r   ri   r  rV  r   r   rj   rD   rC   rB   )r
   r*  rG   rH   r   r  s       r   test_pivot_columns_is_nonez$TestPivot.test_pivot_columns_is_none@
  s    
 qc2233$''q99::
fh///$c22h]%#2F2F2FGGG
fh///$c#>>aV5!3+?+?+?@@@
fh/////r   c                    t          dgddd          }|                    dd           }t          ddidg          }d dg|j        _        t	          j        ||           |                    dd d	
          }t          ddgt          dgd                    }|rt          j        |j	        _
        t	          j        ||           d S )Nr   r3   r   rU  ri   r  )rj   r3   r   rj   rW  r   r   )r
   r*  rD   rJ   rG   rH   r   r;   r   rC   rL   )r?   r  rc   rd   rR   s        r   test_pivot_index_is_nonez"TestPivot.test_pivot_index_is_noneR
  s    qc2233#T22h]1#666"&
fh///#T#>>Qqc5!33G3G3GHHH 	)"$&HN
fh/////r   c                    t          dgddd          }|                    ddd           }t          dt          dgd          t          dgd          	          }t          j        ||           |                    dd 
          }t          ddgt          dgd          	          }t          j        ||           d S )Nr   r3   r   rU  ri   rj   rW  r   r   rJ  r   )r
   r*  r   rG   rH   r  s       r   test_pivot_values_is_nonez#TestPivot.test_pivot_values_is_nonea
  s    qc2233#S>>UA3S)))5!33G3G3G
 
 
 	fh///#d33Qqc5!33G3G3GHHH
fh/////r   c                     t          dgddd          }|                    d          }|                    ddd	
           t          j        ||           d S )Nrh   r   r   )r/   r0   threeT)deepr/   r0   r^  r   )r
   r  r*  rG   rH   )r?   rc   rR   s      r   "test_pivot_not_changing_index_namez,TestPivot.test_pivot_not_changing_index_nameo
  s_    uQ;;<<777%%
ueG<<<
b(+++++r   c                     t          g g d          }|                    dddd          }t          g dd	          }t          j        |j        |           d S )
N)rh   ri   r  r   rh   ri   r  r  r4  rs  rE  )r
   r   r   rG   r   rD   r?   rc   r*  rR   s       r   .test_pivot_table_empty_dataframe_correct_indexz8TestPivot.test_pivot_table_empty_dataframe_correct_indexv
  sc    r#6#6#6777S#gwWW8#666
emX66666r   c           	         t          dddddddddd	d
dg          }t          j        |d                   |d<   t          j        d          5  |                    ddgdgdd          }d d d            n# 1 swxY w Y   t          j        dt          j	        dd          fdt          j	        dd          fdt          j	        dd          fdgddg          }t          j
        |j        |           d S )Nrl   z
2023-01-01r   )rh   date_strry   rm   z
2023-01-02r3   rn   z
2023-01-03r   re  r   Frh   ry   r]   T)rC   rB   r^   r   z2023-01-01 00:00:00z%Y-%m-%d %H:%M:%Sz2023-01-02 00:00:00z2023-01-03 00:00:00r  r}   )r
   r!   to_datetimerG   r   r   r   r~   r   strptimer   rC   rb  s       r   0test_pivot_table_handles_explicit_datetime_typesz:TestPivot.test_pivot_table_handles_explicit_datetime_types~
  so   |qAA|qAA|qAA
 
 ^BzN336
'.. 	 	NNFmXJt #  E	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 )h'(=?RSSTh'(=?RSSTh'(=?RSST	 -
 
 
 	ek844444s   A99A= A=c                    t          g dg dg dg dg          }|                    dddddd	
          }t          g dg dg dgt          g dd          t          g dd                    }t          j        ||           d S )Nr  r  r  r  r   r   r3   r]   Tr  r  r  r  r  r   r  r  r  r  s       r   6test_pivot_table_with_margins_and_numeric_column_namesz@TestPivot.test_pivot_table_with_margins_and_numeric_column_names
  s    }}}mmm]]]STTQq%At   
 
 \\<<<7000q999)))222
 
 

 	fh/////r   N)r  r  r  r?  rA  rC  rH  rK  rQ  rS  r{  r1  r3  r   rX  rZ  r\  r`  rc  rh  rj  r   r   r   r6  r6  	  s#       : : ::	; 	; 	;C C C	@ 	@ 	@"0 "0 "0H$# $# $#L   [%M   0 0 00 0 00 0 0, , ,7 7 75 5 560 0 0 0 0r   r6  )'r   r   r   	itertoolsr   r  numpyr;   r{  pandas._configr   pandas.errorsr   pandasr!   r	   r
   r   r   r   r   r   r   pandas._testing_testingrG   pandas.api.typesr   pandas.core.reshaper   r  pandas.core.reshape.pivotr   r0  r   r   r'   r)   r6  r   r   r   <module>ru     s@           
       				      - - - - - - , , , , , ,    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	       - - - - - - 6 6 6 6 6 6 1 1 1 1 1 1 e}%%%  &% !q1#'*UU1XXuuQ{{,CDEEEJ J FEJ
E&0 E&0 E&0 E&0 E&0 E&0 E&0 E&0PLr0 r0 r0 r0 r0 r0 r0 r0 r0 r0r   