
    o[wec                       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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 d           e"dd          fg          d             Z# G d d          Z$ G d d          Z%dS )    )datedatetime	timedelta)productN)PerformanceWarning)Categorical	DataFrameGrouperIndex
MultiIndexSeriesconcat
date_range)CategoricalDtype)reshapepivot_tableTF)paramsc                     | j         S N)param)requests    ?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@ej                            d[ eAd\d]                    d^             ZBej                            d[ eAd\d_                    d`             ZCda ZDdb ZEdc ZFdd ZGde ZHdf ZIdg ZJdh ZKdi ZLdj ZMdk ZNej                            dld;e jO        fd6e jP        fdme jQ        fd;d6ge jO        e jP        gfd;dmge jO        e jQ        gfdmd6ge jQ        e jP        gfg          dn             ZRej        jS        do             ZTdp ZUdq ZVej                            drddg          ds             ZWdt ZXdu ZYdv ZZdw Z[dx Z\dy Z]ej                            dzddg          d{             Z^d| Z_d} Z`d~ ZadSS )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.   r/   r/   r/   r.   )dullr0   shinyr0   r0   r1   r1   r0   r1   r1   r1         )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 )
Nr4   r5   r6   r7   )valuesindexcolumnsobserved)rA   rB   rD   r   r   mean)r   tmassert_frame_equallenrB   namestuplenamerC   groupbyaggunstack)r>   rD   r?   rB   rC   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   r2   r   r      col1col2col3rY   r[   rZ   sumr   )rB   rA   rC   aggfunc
fill_valuecategory)rB   rA   rC   r]   r^   rD   )
r	   listr   rB   astyperC   rY   rZ   rF   rG   )r>   rD   dfrQ   results        r   +test_pivot_table_categorical_observed_equalz:TestPivotTable.test_pivot_table_categorical_observed_equalx   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   r2   r   )rowscolsrA   rp   r\   )rC   r]   rB   r]   rA   rE   )r	   r   TrF   rG   )r>   rb   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   r2   r   r4   r5   r6   i[ i] i\ i^ rg   rh   ri   di i  i@B )amountcustomermonthr   quantityr{   rz   ry   r   F)r   ))r4   rg   )r4   rh   )r4   ri   )r4   rw   )r5   rg   )r5   rh   )r5   ri   )r5   rw   )r6   rg   )r6   rh   )r6   ri   )r6   rw   rI   )r	   r   r   from_tuplesrF   assert_index_equalrC   rB   )r>   rb   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          }t          |d	d
dgd          }t          j        ||gd
dg          }t          d	g di|          }t          j        ||           d S )Nrg   rg   rh   rh   )rg   rh   rm   T
categoriesordered)ri   rw   ri   rw   )ri   rw   rl   r   r2   r   r   )r4   r5   rA   rA   r4   r5   )rA   rB   r   r|   )      ?       @      @      @rB   )r   r	   r   r   r"   rF   rG   )r>   cat1cat2rb   rc   	exp_indexrQ   s          r   test_pivot_table_categoricalz+TestPivotTable.test_pivot_table_categorical   s       ___d
 
 
    ___d
 
 
 TEEFFRc
4PPP*D$<SzJJJ	h(<(<(<=YOOO
fh/////r   c                 H   g d}t          g dg dt          dd          d          }|d                             t          |d	                    |d<   |                    d
dd|          }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rg   rh   ri   rw   )	rg   rg   rg   rh   rh   rh   ri   ri   ri   )	r   r2   r   r   r2   r   r   r2   r   r   	   r4   r5   r6   r4   Fr   r5   r6   )rB   rC   rA   r   rf   rK   rn   )        r         @)r   r         @)r         @       @rB   rC   rC   float)
r	   rangera   CDTr   r   reindexr   rF   rG   )r>   r   r   rb   rc   expected_columnsexpected_indexrQ   s           r   $test_pivot_table_dropna_categoricalsz3TestPivotTable.test_pivot_table_dropna_categoricals   sS   )))
BBB0001a[[ 
 
 S'..Z!?!?!?@@3c3s6RR!///<<<+223z53Q3Q3QRR			444__ooo? $
 
 

  	Y''J0G0G'HHOOPWXXH
fh/////r   c           
      b   t          t          t          j        ddddgddgd          g dd          }|                    dd|	          }|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   r4   r5   r4   r5   rB   rA   r   r   r   r   r   r   r   r   )r   r   r   r   )	r	   r   r:   nanr   r   
from_codesrF   rG   )r>   r   rb   rc   rA   codesrQ   s          r   %test_pivot_with_non_observable_dropnaz4TestPivotTable.test_pivot_with_non_observable_dropna   s    VUFE6: %v   
 /.. 	
 	
 c#fEE 	3ZFFEE %__FJJE&M&ufov   	  
 
 
 	fh/////r   c           
         t          t          g dg dd          t          d          d          }|                    dd|	          }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   rW   r   r4   r5   r   r   )r   r   r2   r   r   )
r	   r   r   r   r   r   ra   r   rF   rG   r>   r   rb   rc   rQ   s        r   /test_pivot_with_non_observable_dropna_multi_catz>TestPivotTable.test_pivot_with_non_observable_dropna_multi_cat  s    :::666   
 1XX 	
 	
 c#fEE///"&II*A*A*A4   	  
 
 
  	8$SM0077HSM
fh/////r   c                 $   t          |dd          }|                    dd|          }t          ddit          |                                d                    }|s|                    t
                    }t          j        ||           d S )	Nr   r   r4   r5   r   r   r   r   )r	   r   r   uniquera   r   rF   rG   )r>   r&   r   rb   rc   rQ   s         r   test_pivot_with_interval_indexz-TestPivotTable.test_pivot_with_interval_index+  s    _15566c#fEE#JeO$:$:$<$<3GGG
 
 
  	.u--H
fh/////r   c           
         t           j                            g dg d          }t          t	          j        dddt          j                  g dt          |d	                              d
          d          }t          |ddddd          }|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   r2   r2   r   r   r   dtyperg   rh   rg   rh   Tr   F)	ascendingr   r6   r5   r4   r\   rB   rC   rA   r]   marginsAll)r      
   r   r2   r   )rB   rK   r   )r    r!   r"   r	   r:   arangeintpr   sort_valuesr   r   r   IntervalrF   assert_series_equal)r>   ordered_catrb   	pivot_tabrc   rQ   s         r   &test_pivot_with_interval_index_marginsz5TestPivotTable.test_pivot_with_interval_index_margins6  s!   &22<<<NNYq!Rrw777))) d;;;GG# H   
 
  c3sE4
 
 
	 5!JJQ**BK1,=,=uECPPP'	
 
 
 	vx00000r   c                     |                     d|j        |j                  }|                     ddd          }t          j        ||           d S )Nr7   r   r4   r6   )r   r4   r6   rF   rG   r>   r?   rc   rQ   s       r   test_pass_arrayzTestPivotTable.test_pass_arrayP  sS    !!#TVTV!DD##CsC#@@
fh/////r   c                     |                     dd |j                  }|                     d|j        dz  d          }t          j        ||           d S )Nr7   c                     | dz  S )NrW    rk   s    r   <lambda>z3TestPivotTable.test_pass_function.<locals>.<lambda>V  s
    qAv r   r   rW   r6   )r   r6   rB   rF   rG   r   s       r   test_pass_functionz!TestPivotTable.test_pass_functionU  s[    !!#-=-=tv!NN##CtzQ#LL
fh/////r   c                     ddg}d}t          |||          }|                    ||gz                                 d                                          }t	          j        ||           d S )Nr4   r5   r6   r   rE   )r   rL   rM   rN   rF   rG   )r>   r?   rB   rC   rO   rQ   s         r   test_pivot_table_multiplez(TestPivotTable.test_pivot_table_multipleZ  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   )rg   vir   int64rg   r   r   r\   )rA   rB   rC   r^   r]   r2   abr   r   )      ?      @      @      @float64rE   )
r	   dtypesr   r   r:   r   r   r`   rF   r   )r>   frm   rc   rQ   s        r   test_pivot_dtypesz TestPivotTable.test_pivot_dtypesa  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 )
NrW   r   r   r2   r   )r   r   r   r   rB   rB   rC   rA   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>   rC   rA   r   rb   df_resrc   rQ   s           r   test_pivot_preserve_dtypesz)TestPivotTable.test_pivot_preserve_dtypes  s     Iarz***AGa1fqAvNN
 
 !!--76 . 
 
 fm$$?????!!!!!!r   c                 z   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t          j        d          f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   r4   rV   r   r   )r4   r   )r4   r2   r   )levelr   r   r   r2   r   r   r7   rW   )freqperiods)r4   dtr   M)keyr   z
2011-01-31      
@r   r   z
2011-12-31)r    DatetimeIndexr	   r   rB   rz   dayr   r}   
set_levelslevelsra   r:   int32r   r   rF   rG   r   r
   	TimestamprI   )r>   idxrb   resexp_columnsexps         r   test_pivot_no_valuesz#TestPivotTable.test_pivot_no_values  sT   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>7tRU;V;V;VnWW ,sBL4N4N.O-PQQ!4L3KuaV28<<<k
 
 
 	c3'''nns###WC-H-H-H  
 
 E)<.sCCC[
 
 
 	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 )Nr7   r8   r4   r5   r6   r   )rA   rB   rC   r^   r9   r   axis)rB   rC   r^   )r   droprF   rG   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 )Nr7   r8   r4   r5   r6   rA   rB   rC   r]   r   funcr?   s    r   r   z;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>  s)    #sC:sD
 
 
 r   rE   stdr   )keysr  c                 6    t          ddgddgd| d          S )Nr7   r8   r4   r5   r6   T)rA   rB   rC   r]   r   r   r  s    r   r   z;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>  s0    :*
 
 
 r   )r   rF   rG   )r>   r?   r   rc   meansstdsrQ   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            rf   rg   rh   ri   r   r#  r   r"  r$  r   r   )	r:   r   r	   pivotr    r   rF   rG   rr   )r>   r  r   rb   rc   rQ   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   r7   )r   r   d   )rg   ri   rg   z
2014-02-02rh   )r   rg   )r   rg   r   rh   )r   rh   ri   r   )r	   r   r:   r   r    r  r   locr%  notnarA   r\   rH   iterrowsrF   rG   rr   )r>   r  rb   pv_rowrc   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                    t          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          gt          j        dd	          t          j        dd	          d
          }|d                             d           |d<   |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 )N  r   r   r   r2     r   r   r   )dt1dt2data1data2r5  c                 .    t          j        | d          S N
US/Pacifictzr    r  rw   s    r   r   z3TestPivotTable.test_pivot_with_tz.<locals>.<lambda>5      bl1.N.N.N r   r6  c                 .    t          j        | d          S N
Asia/Tokyor<  r>  r?  s    r   r   z3TestPivotTable.test_pivot_with_tz.<locals>.<lambda>6  r@  r   r7  r7  r8  r8  z2014/01/01 09:00z2014/01/02 09:00rC  )rK   r=  r   r2   r   r2   r   r   r   r   z2013/01/01 09:00z2013/01/02 09:00r;  r   r   r7  r   )r	   r   r:   r   applyr   r    r   r   r"   r%  rF   rG   r>   r  rb   exp_col1exp_col2exp_colrQ   r.  s           r   test_pivot_with_tzz!TestPivotTable.test_pivot_with_tz  s     T1aA..T1aA..T1aA..T1aA..	 T1aA..T1aA..T1aA..T1aA..	 1G4441G444 
 
& uIOO$N$NOO5	uIOO$N$NOO5	===>>#!34q8u
 
 
 ((H)=>>\\<<<("#%78u   
 
 
  	:u55BB"E5999B
b(+++VaV"#%78u   $#%78u  
 
 
  	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-0700r;  r<  )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-0700rP  c                 4    |                      dddd          S )Nr   )hourminutesecondmicrosecond)replacer   s    r   r   z8TestPivotTable.test_pivot_tz_in_values.<locals>.<lambda>w  s    199!AaUV9#W#W r   rO  minr  r   z2016-08-12 00:00:00z2016-08-25 00:00:00r   )r	   r    r  	set_indexr   rP  mapr   r   r   rF   rG   )r>   rb   minsrc   rQ   s        r   test_pivot_tz_in_valuesz&TestPivotTable.test_pivot_tz_in_values[  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-01r7   z
2013-01-02z2013-01r   z2013-02r   r   r   )p1p2r7  r8  rD  r2   r^  )rK   r   rE  rF  r]  r   r   r   r   r7  r   )r	   r    Periodr:   r   r   PeriodIndexr   r"   r%  rF   rG   rH  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   )rg   rh   rk   r   r2   r   rg   r   r   rh   )r?   rB   rC   rk   T)rB   rC   rA   r   )r	   r    r_  r   r   rF   rG   )r>   rb   rQ   rc   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   rA   bazzooc                 j   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          j        ||           d S )Nr.   r.   r.   r/   r/   r/   r4   r5   r6   r4   r5   r6   r   r2   r   r   rW   r(  rk   rl   rm   qwtr+   r,   rg  rh  r+   r,   r   )r   r2   r   rk   rl   rm   )r   rW   r(  rn  ro  rp  r.   r/   r?   rK   rg  rh  r   )r   r   r   r   r   r   )r   r   r2   r   r   r2   r  r   rI   objectr?   rB   rC   r   )r	   r%  r    r   r   rF   rG   	r>   rA   r  rb   rc   r?   rB   rC   rQ   s	            r    test_pivot_with_list_like_valuesz/TestPivotTable.test_pivot_with_list_like_values  s    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:-
 
 

 $eWHUUU
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          j        ||           d S )Nrj  rk  rl  rm  rq  rh  r+   r   r4   r   r6   r(  r5   rW   r   r2   r   )rn  rp  ro  rk   rl   rm   rr  r,   rg  r.   r/   r   r   r   r   r   rs  rt  ru  )	r	   r%  r    r:   r   r   r   rF   rG   rv  s	            r   %test_pivot_with_list_like_values_nansz4TestPivotTable.test_pivot_with_list_like_values_nans  sm    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<<.-
 
 

 $eWHUUU
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 )	Nrf   rn   rX   z=pivot\(\) missing 1 required keyword-only argument: 'columns'matchrY   r[   )rB   rA   r	   pytestraises	TypeErrorr%  )r>   rb   msgs      r   #test_pivot_columns_none_raise_errorz2TestPivotTable.test_pivot_columns_none_raise_error'  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   r2   r   r   rW   r?   )r.   r4   r   rk   )r.   r5   r2   rl   )r.   r6   r   rm   )r/   r4   r   rn  )r/   r5   rW   ro  )r/   r6   r(  rp  r,   rg  firstrT  r   ry  )r  r   rt  ru  )r,   r  )r,   rT  )rg  r  r   r   r   r.   r/   r   r2   rW   r   r(  r   )r   r   r	   r%  r    r   rF   rG   )r>   r  rB   r?   rC   rb   rc   rQ   s           r   test_pivot_with_multiindexz)TestPivotTable.test_pivot_with_multiindex.  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 )Nrj  rk  rl  rm  rq  z^\('bar', 'baz'\)$r|  rh  r+   )r,   rg  r   )r	   r  r  KeyErrorr%  r    )r>   r  rb   s      r   test_pivot_with_tuple_of_valuesz.TestPivotTable.test_pivot_with_tuple_of_valuesX  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=r4   r5   r6   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 )	r+  rB   rL   rE   rF   r   rK   
sort_indexiloc)r>   rc   
values_colr?   rB   rC   margins_colcol_marginsexpected_col_marginsindex_marginsexpected_ix_marginsgrand_total_marginsexpected_total_marginss                r   _check_outputzTestPivotTable._check_outputj  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 )Nr7   r4   r5   r6   TrE   )rA   rB   rC   r   r]   Totals)rA   rB   rC   r   r]   margins_name)r  rB   rC   r   r]   r   )r   r  rC   r  )r>   r?   rc   rO   	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          }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 )r2   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->object]r|  AABBTrE   )rB   r   r]   CCr   r   r  )DDEEFF)
rC   reescaper  r  r  r   r  r+  rE   )r>   r?   r  rO   r  totalsitems          r   test_no_colzTestPivotTable.test_no_col  s[    54t|444iGHH]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$   A--A14A1:D!!D%(D%z*columns, aggfunc, values, expected_columnsrE   )      @r  皙@r  )r   r   皙@r  )r,   r   r+   r   r   r\   )r         rW   r(  r3   )          r3   r3   r  ))r,   r.   )r,   r/   )r,   r   )r+   r.   )r+   r/   )r+   r   r|   c                    t          g dg dg dg dg dd          }|dk    r_t          j        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.   r/   r/   r.   r.   r/   r/   	smalllarger  r  r  r  r  r  r  	r   r2   r2   r   r   r   rW   r(  r   	r2   r   rW   rW   r(  r(     r   r   r4   r5   r6   r7   r8   r\   r  r|  T)rC   r   r]   r5   r   r6   r7   r8   r   )r	   r  r  r  r  r  r   r  r   rF   rG   )	r>   rC   r]   rA   r   rb   r  rc   rQ   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)KLLC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::A>A>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)r7   r8   r9   r,   r+   r.   r/   r  r   r|   )      r   r   -   )!   r   $   3   x   r0   r1   r   r6   r   r
  r0   r1   r   r7   r4   r5   Tr\   r   rA   rB   rC   r   r]   r^   )copyr:   r   rH   r   ra   r`   r   r   r}   r	   rename_axisr   rF   rG   )r>   r?   rb   mi_valmirQ   rc   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.   r/   r  r   r|   )r   r   r2   r   rW   )r2   r   r2   r2   r(  r  r   r6   r   r
  r0   r1   r   r7   r4   r5   Tr   r  )
r`   r   r   r}   r	   r  r   rH   rF   rG   )r>   r?   r  r  rQ   rc   s         r   test_margins_dtype_lenz%TestPivotTable.test_margins_dtype_len  s    guenuen==>>+N#F*===$__??r
 
 

+c+
"
" 	 #6*Xg->>!!* " 
 
 	h/////r   rp   ))r   r2   rg   rh   r*  )rg   r   c           	         t          |d         g d|d         g ddg di          }|                    d|          }t          g dgt          j        g d|	          t	          dg          
          }t          j        ||           d S )Nr   rn   r   r   )r   rW   r(  )rA   rC   )r   r   r   ))r   r   )r2   r2   )r   r   r|   rC   rB   )r	   r   r   r}   r   rF   rG   )r>   rp   df2rc   rQ   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,,
 
 
 	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   r=  r2   r   r5   r6   F)rB   r   r   )
r   r	   r:   r;   r<   r=   r   rB   r  equals)r>   dtirb   rc   s       r   test_pivot_table_retains_tzz*TestPivotTable.test_pivot_table_retains_tz/  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   rw   s     r   r  z=TestPivotTable.test_pivot_integer_columns.<locals>.<listcomp>F  s$    555aYq\\!555r   r$  r   r   )r   r   r   r2   )rA   rB   rC   r   4)0132Fr  )r   rW  r`   r   r   r	   r   renamestrrF   rG   )r>   r?   rb   rO   r  rP   rw   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)rg   rg   rg   rg   rh   rh   rh   rh   r2   )r   r   r   r   r   r   r   r   r+   r   r,      )rg   rh   ri   valuer  rg   rh   ri   r   rf   r   all)r  how)r	   r:   r;   r<   r=   r   rL   rE   rN   r   rF   rG   )r>   r?   rO   groupedrQ   s        r   test_pivot_no_level_overlapz*TestPivotTable.test_pivot_no_level_overlapR  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   r2   r   i  r   i  r     r   r   )r   r  r  rE   rB   rC   r]   )r:   r   rt  intr   arrayemptyr;   r<   integersrH   r   r   yearrz   r   	lognormalr	   r   rC   is_monotonic_increasing)
r>   nr   productsitemsiproductdrdatesrb   pivoteds
             r   test_pivot_columns_lexsortedz+TestPivotTable.test_pivot_columns_lexsortedd  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\   r7   r8   r4   r5   r  )rL   rM   rN   r   rF   rG   )r>   r?   r   rQ   rc   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 )Nr4   r5   T)rB   r]   r   r   )r   rH   tolistr\   )r>   r?   rc   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   r4   r5   r6   TrB   rC   r]   r   r   r   r   r         &@r   rH   r   r  r>   r?   rc   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 )Nr4   r5   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)rg   rh   ri   rw   er   ghr   jr  r7   r4   r5   r6   r7   r4   r5   r6   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  Nrg   rh   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|  r7   r4   r5   r6   T)rA   rB   rC   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   rW   r   r  r   r   r   r3  r   r   r2   r  )BranchBuyerr  Dater6  )r   r  r   r   r   r   r  r4   r   zCarl Joe Markr   r5  r  r\   rB   rC   rA   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   rX  r:   r  r   r    r   rB   rK   rC   r   r
   rF   rG   rr   r   ra   r   r  r  r  r.  )r>   using_array_managerrb   rQ   rc   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$:$:#;#FFF#))++
 
 

 % 's###
 
 
 	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 )%Nr1  r2  r3  r3  r3   r   r  r   r   rW   r   r$  r2   r  r  r   r"  r      )r4  r5  r  r6  PayDayr   r6  r:  r@  r  r\   r7  r   r(  r  r   r   r|   r4   r5   r4  )r	   r;  r   r   r
   r:   r  r   r   r    r   rB   rK   rC   rF   rG   rr   r   r}   )r>   rb   rc   rQ   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 s///(333
 
 
 HFFFFFFFFFF! & gamm"T1b))T2r**T2r**T2r**	    $T1b))T2r**T2r**T2r**	   ='
 '
 '
P % (
fh///s111&111
 
 
 	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
 
 
 !)000's2Q2Q2QRJ
 
 
 	fh///*#6222G(4S4S4ST
 
 
 	fhj11111r   c           	      0   g d}g d}t          g d||t          j        dd          ddgd	z  d
          }|d                             d           |d<   |d                             d           |d<   t	          j        g 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 )0N2011-07-19 07:00:002011-07-19 08:00:002011-07-19 09:00:00rE  rF  rG  2013-01-01 15:00:00rI  rI  2013-02-01 15:00:00rJ  rJ  rg   rg   rg   rh   rh   rh   r(  r   r   r   r2   r   labelr5  r6  value1value2r5  c                 .    t          j        | d          S r:  r>  r?  s    r   r   z7TestPivotTable.test_pivot_datetime_tz.<locals>.<lambda>  r@  r   r6  c                 .    t          j        | d          S rB  r>  r?  s    r   r   z7TestPivotTable.test_pivot_datetime_tz.<locals>.<lambda>  r@  r   )rE  rF  rG  r;  )r=  rK   rN  rg   rh   rM  r   r   r   r   r   r   r   r   r   )r\   r\   r\   r\   rE   rE   rE   rE   )rN  rN  rO  rO  rI  rJ  r   rC  )r   r   r   r2   )r   r   r2   r   )r2   rW   r   r2   )r   r   r   r   )r   r   r   r   )r   r   r   r   r
  rO  r\   rE   r7  )r	   r:   r   rG  r    r   r   r   r"   r   rF   rG   r  r   )r>   dates1dates2rb   exp_idxrI  rJ  rK  rQ   rc   exp_col3	expected1	expected2s                r   test_pivot_datetime_tzz%TestPivotTable.test_pivot_datetime_tz  s   
 
 

 
 
 777)AW555a&1* 
 
 uIOO$N$NOO5	uIOO$N$NOO5	"QQQ
 
 

 (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                    g d}g d}t          g d||t          j        dd          ddgd	z  d
          }|d                             d           |d<   |d                             d           |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 )(NrD  rH  rK  r(  r   r   r   r2   r   rL  r5  c                 *    t          j        |           S r   r>  r?  s    r   r   z6TestPivotTable.test_pivot_dtaccessor.<locals>.<lambda>q      bl1oo r   r6  c                 *    t          j        |           S r   r>  r?  s    r   r   z6TestPivotTable.test_pivot_dtaccessor.<locals>.<lambda>r  r[  r   rM  rN  r   rg   rh   r   r   r   r   r   r   r   )r   r  r   r   rK   r   )r   r   r  r  r   r   r|   )r   r   r   r   r   r   r3  )Xr^  r^  r^  Yr_  r   r   rW   r^  r_  )r	   r:   r   rG  r   r   rR  r   r  rF   rG   rz   r
  rA   r   r"   r  r   )r>   rR  rS  rb   rc   rT  rQ   rK  s           r   test_pivot_dtaccessorz$TestPivotTable.test_pivot_dtaccessorV  s   
 
 

 
 
 777)AW555a&1* 
 
 uIOO$=$=>>5	uIOO$=$=>>5	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   r   r   io  c                 \   t          ddd          }t          t          j                            d                              t          |                    |          }t          t          |          |j	        j
        |j	        j                  }|j                            d          |_        t          j        |j	        j                  }|||k             }|j	        j
        |_	        ||                                         }t!          j        ||d	
           |j        |k    sJ d S )N1/1/2000
12/31/2004r7   r   r2   r   r   r   Fr  )r   r   r:   r;   r<   r=   rH   r   r	   rB   r
  	dayofyearrC   	droplevelasarrayr   rF   r   rK   )r>   r   rngrP  annualdoysubsetrc   s           r   
test_dailyzTestPivotTable.test_daily  s   \<<<BI))!,,<<SXXFFcRRRbMM8J
 
 
  11!44j+,,C1H|(!!##
vv5AAAA{ar   r  c                 8   t          ddd          }t          t          j                            d                              t          |                    |          }t          t          |          |j	        j
        |j	        j                  }|j                            d          |_        |j	        j        }|||k             }|j	        j
        |_	        ||                                         }t          j        ||d	
           |j        |k    sJ d S )Nrb  rc  r   r   r2   r   r   r   Fr  )r   r   r:   r;   r<   r=   rH   r   r	   rB   r
  rz   rC   re  r   rF   r   rK   )r>   r   rg  rP  rh  rz   rj  rc   s           r   test_monthlyzTestPivotTable.test_monthly  s    \<<<BI))!,,<<SXXFFcRRRYr]]"(-XXX11!44EQJ|(!!##
vv5AAAA{a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\   rE   r  r4   )rB   rA   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   r`   r  rF   rG   )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                 B   d}t          g dg dg dd          }|                    ddd|d	d
g          }t          dd|gd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cheesery  rz  )r   r   g	@gffffff
@)r   r   rr   rr   )r  costr   r  r   TrE   max)rB   rC   r   r  r]   ry  rz  rt  r]  )rE   r{  r   )rE   r{  rr   r{  )r|  r{  r   )r|  r{  rr   )NNr   r|   r   )r	   r   r   r   r}   rA   rF   rG   )r>   r  costsrO   ixtupsrp   rQ   s           r   /test_pivot_table_margins_name_with_aggfunc_listz>TestPivotTable.test_pivot_table_margins_name_with_aggfunc_list  s    >>>,,,+++ 
 
 !!%UO " 
 
 GX|4H6RRR!!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   r2   rj   r   r   r   rW   r(  r  r   r   r   r   r   r   rl   r   rm   rk   Tr   r   )	r	   r:   r   r   rB   rC   r   rF   rG   r>   rD   rb   rQ   rO   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                    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d	d|d          }t          j        ||           d S )Nr  r   r2   rj   r  r  r  r  rl   r   rm   r_   rk   Tr  )r	   r:   r   r   rB   rC   rl   ra   rm   r   rF   rG   r  s        r   !test_categorical_margins_categoryz0TestPivotTable.test_categorical_margins_category  s    )A,,RYq\\Q%6RYq\\A=MNN
 
 ooo{{{KKKHII}}}3777 S999t{{:&&t{{:&&sCXtLL
eX.....r   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)r2   r   r(  r  )r   r   rW   r  )r   r   r   r(  )r^  r^  r_  r_  r*  r7   T)rB   r   )r   r   rW   )r   g      @r   )r   r   r   r   )r^  r_  r   r   r   )r	   r   r   rF   rG   r>   rb   rc   rQ   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   r4   r5   r   r   r(  )InColValr  r  r  )rB   rC   rA   rD   )r   rK   r   r   )r?   rC   r   )rC   rA   rD   r   )r?   rC   rB   )r:   r   r	   r   r   r   r    CategoricalIndexr   rB   rF   rG   )	r>   rD   r   r  r   rb   rc   expected_colsrQ   s	            r   test_pivot_with_categoricalz*TestPivotTable.test_pivot_with_categorical/  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dd|d	
          }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)r4   r5   r6   r6   r   r   )r  r  Vr  r_   r  r  count)rB   rC   r   r]   r   Fr   r   rK   rg   rh   r   r   r   r2   r   r   )r	   ra   r   r    r  r   r:   r  r   rF   rG   )r>   rD   rb   rc   r   r   expected_datarQ   s           r   test_categorical_aggfuncz'TestPivotTable.test_categorical_aggfuncR  s   '''/C/C/C,,,WW
 
 d8??:..4tT(G   
 
 ,OOT
 
 
 !#s$7771a&1a&1a&!9JJJ9I
 
 
 	fh/////r   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  )r3  r4  r3  )Salesr  r  )r  FebruaryMarchAprilMayJuneJulyAugust	SeptemberOctoberNovemberDecemberr  r_   r  r  r\   )rA   rB   rC   rD   r]   r3  r4  r   )rK   r   Fr  i@  r  r   r3   r   r  )r	   ra   r   set_categoriesr   r   r    r  r+  rF   rG   )	r>   rD   rb   monthsrc   r   r   r  rQ   s	            r   %test_categorical_pivot_index_orderingz4TestPivotTable.test_categorical_pivot_index_orderingf  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   rW   )r6   r7   r8   )r   r   r   rX   rY   r[   rZ   r\   rq   r|   r   r  r   r   rW   r   )	r	   r   r   r"   rF   rG   r:   r   r   )r>   rb   rc   r   rQ   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          d|          }t          ddd|gd	d
          }t          |g           }t	          j        ||           d S )Nu   Δοκιμήr+   rn   T)rB   r]   r   r  r   r2   r   rt  r]  r   )r	   r   rH   r   rF   rG   )r>   greekframerO   rB   rQ   s         r   test_pivot_margins_name_unicodez.TestPivotTable.test_pivot_margins_name_unicode  s    65))),--%#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-   r3   r   r4   r5   r\   r  r6   r.   r/   r   r   rs  r"  r  )r,   r+   r   r$  ))r6   r.   )r6   r/   r   rE   r   )r   r   r   r   ry  )NNr5   r   r   r   g@))rE   r6   r.   )rE   r6   r/   )r\   r6   r.   )r\   r6   r/   )r	   r   r   r   r  rF   rG   )r>   r?   rc   r  rQ   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 )
Nr6   r   r4   r5   r  |zusing DataFrameGroupBy.[]r|  )	r  r   
isinstancer`   joinrF   assert_produces_warningFutureWarningrG   )r>   r   f_numpyr?   rc   opsr  rQ   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__  s.      $1&111 =>>>r   )r  N)__name__
__module____qualname__r  __classcell__)r  s   @r   MockUnstackerr    s=        ? ? ? ? ? ? ? ? ? ?r   r  
_Unstackeri   r   )ind1ind2r  z$The following operation may generater|  r  r  r  r  r7  )reshape_libr  contextsetattrr	   r:   r   rF   r  r   r  r  r  r   )r>   monkeypatchr  r   rb   r  s         r   -test_pivot_number_of_levels_larger_than_int32z<TestPivotTable.test_pivot_number_of_levels_larger_than_int32  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   r2   )r   r(  r(  )fruitsizetastec                     dS )Nr   r   r   s    r   ret_onez?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_one.  s    1r   c                      t          |           S r   )r\   r   s    r   ret_sumz?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_sum1  s    q66Mr   c                     t           j        S r   )r:   r   r   s    r   ret_nonez@TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_none4  s	    6Mr   r  rC   r]   r   r   r   r  r(  )r  r  r  r  r  r|   r  r  r   rC   r
  )	r	   r   r:   r   r   from_productr   rF   rG   )
r>   r   rb   r  r  r  rc   r?   r   rQ   s
             r   test_pivot_table_aggfunc_dropnaz.TestPivotTable.test_pivot_table_aggfunc_dropna$  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.   r/   r.   r   r2   r   )r4   rk   rl   r4   rE   r  r   r.   r/   r   rk   rl   r   rC   r
  )r	   r:   r   r   r   r   rF   rG   )r>   r   rb   rc   r?   r   rQ   s          r   &test_pivot_table_aggfunc_scalar_dropnaz5TestPivotTable.test_pivot_table_aggfunc_scalar_dropnaG  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)r2   r2   r   r   r2   )rW   r(  r   r  r   )prn  rn  r  rn  )NNNNN)r4   idr6   r7   r4   r7   r  r   r   r   r]  r   )r	   r   r:   r  r   rF   rG   )r>   r   rb   rc   exp_colsrQ   s         r   test_pivot_table_empty_aggfuncz-TestPivotTable.test_pivot_table_empty_aggfuncX  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:   rE   )arrs    r   rM   z=TestPivotTable.test_pivot_table_no_column_raises.<locals>.aggl  s    73<<r   r   ry  )r   r$  r?  (   )r^  r_  Z
notpresentr|  r^  r_  )r]   )r	   r  r  r  r   )r>   rM   rb   s      r   !test_pivot_table_no_column_raisesz0TestPivotTable.test_pivot_table_no_column_raisesj  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  r7   r8   r4   r6   rE   )rW  r|  rE   r  )rA   rB   r]   ))r7   rE   r8   r|  )r8   rE   r8   rW  ))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  ra   r   rF   rG   )r>   rb   rO   rp   rB   valsrQ   s          r   0test_pivot_table_multiindex_columns_doctest_casez?TestPivotTable.test_pivot_table_multiindex_columns_doctest_cases  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d3rf   )   r  "   )2018r  2019)rg   r   numr
  rg   r   r
  r  r\   F)rB   rC   rA   r]   sortr  r  r   r  r  r   r|   r  )	r	   r   r:   r   r   r   r"   rF   rG   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 )Nr4   r   r2   r   r3   Int64r   )rg   rh   salesrh   rg   Tr\   r  r  re  r   r  r4   r  r   r|   rB   rC   r   )r	   r   r   r   r   r}   rF   rG   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)rB   rA   r  g     e@g     G@g     f@g     @@)r  r  )r  r  r|   r  )r	   r   r   r}   rF   rG   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)rg   rk   r   )rg   rl   r2   )rh   rl   r   )rh   rm   r   )r   r$  r?  r   r$  r?  r\   r   T)rB   rC   rA   r]   r^   r   )r   r2   r   r   )r   r   r   r   )r   rW   r   r   )rk   rl   rm   r   )rg   rh   r   )r	   rC   r   rB   rK   rF   rG   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 )Nrg   rh   r$  r  r  r   )rk   rl   r  rk   rl   r  rE   )rB   rC   rA   r]   r   r?  r   Float64r  )r	   r   r   r   rF   rG   r   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 )Nr4   r   r2   z
2019-12-31g      $@r3   )rg   rh   r   r  rh   r   rg   Tr\   r  r  g      5@re  r   r  r]  r	  r
  r|   r   )r	   r    r  rF   r  r   r   r"   r   rt  r}   rG   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  )r4   r5   r6   r7   r8   )col5)col6r(  r   sevenr7   r4   r5   r$  r\   r  r   r   r   r   r   r  r  r   )r,   r,   r+   r+   r.   r/   r2   r|   r  r   )
r	   r   r:   r   r   r   r"   ra   rF   rG   )r>   r<  rb   rc   rQ   s        r   )test_pivot_table_with_mixed_nested_tuplesz8TestPivotTable.test_pivot_table_with_mixed_nested_tuples$	  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>u	  s    ...q...r   c                     g | ]}d S )ri   r   r*  s     r   r  zYTestPivotTable.test_pivot_table_aggfunc_nunique_with_different_values.<locals>.<listcomp>v	  s    ((((((r   )NNrh   r|   )r   r   r   rg   r   r   rh   ri   r)  r7  )r	   r   r   r"   r:   fullr   fill_diagonalr   r   rF   rG   )r>   test	columnvalnparrrQ   rc   s         r   6test_pivot_table_aggfunc_nunique_with_different_valueszETestPivotTable.test_pivot_table_aggfunc_nunique_with_different_valuesi	  s@   2YY2YY2YY2YY	 
 
 *..E"II...((eBii(((b		
 $
 
 
	 "&))
$$$U%b		*D*D*DiXXX!!   K " 
 
 	fh/////r   )br  r  r  r  fixturer?   rR   rd   ru   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r  r  r  r&  r1  rL  r[  ra  rf  r:   r  r   r   rw  rz  r  xfailr  r  r  r  r  r   r}   r  r  r  r  r  r  r  r  r  r  r"  r$  r+  r/  r=  rB  rX  r`  r   rk  rm  rv  r  r  r  r  r  r  r  r  r  r  r\   rE   r  r  slowr  r  r  r  r  r  r  r  r  r  r  r   r&  r1  r   r   r   r(   r(   *   s	       ^.
 .
 ^.
`/ / /80 0 06
& 
& 
&#/ #/ #/J0 0 00 0 080 0 0B0 0 08	0 	0 	01 1 140 0 0
0 0 0
/ / /!1 !1 !1F [x*+33343334	
 " " "(( (( ((T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9, 9, 659,v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 04 [ENBHeU^$$FE5>""E5%.!!		
  [Xe}550 0 65 0B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/ / /0 [4 %%%';';';<222===	 c
))),,, '
&   *
 
 
	
 <"0 "0= <"0H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~X0 X0 X0tW0 W0 W0r [S%%3--00    10 $ [S%%2,,//    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	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r4   r5   r6   r6   r5   r4   Oner<  r<  Twor=  r=  r   r   r   r   r   r   r   rB   rC   rA   r   r   r   r   r<  r=  r   NrC   )r	   r%  rB   rK   rC   rF   rG   rI   )r>   r?   r  r  rQ   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.   r/   r.   r.   r/   )r   r   r   r   r   rf   zduplicate entriesr|  rg   rh   ri   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 )
Nrf   r   rg   rh   ri   r   r   Fr  )r	   r%  rF   rG   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          |           t          j        |j        t          dd	gd
                     d S )N)r4   r  A1)r5   r  B2r  r   r   r2   r   r4   r5   r   )r	   r%  reprrF   r~   rC   r   )r>   rb   rc   s      r   test_pivot_integer_bugz TestPivot.test_pivot_integer_bug	  sg    -/?@AAA1Q77V
fneS#JQ.G.G.GHHHHHr   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 )Nr:  r;  r>  r   rB   rC   rA   rC   rA   r   r   r   r   r?  r   r   )rA   r<  )rA   r=  r|   Fr  r@  r   )r	   rX  r%  rB   rK   rC   rF   rG   r   r}   rI   re  )r>   r?   r  rc   rQ   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   r2   r2   r2   )r   r   r2   r   r   r2   )r   r2   r   r2   r   r2   rl  r  )lev1lev2lev3lev4rA   rO  rP  rQ  r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r2   r   r2   r|   )rR  rR  rA   rA   )	r	   r%  r:   r  r   r   r"   rF   rG   )r>   rb   rB   rC   rc   rQ   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|  r~  )r>   rb   s     r   test_pivot_columns_not_givenz&TestPivot.test_pivot_columns_not_given
  s    aSq))**]9,VWWW 	 	HHJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAA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   r2   r   Nrh   ri   r   ))rh   r   ri   r   rh   r  rX  r   r   ri   rC   rB   rA   )r	   r%  rF   rG   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                 j   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                    }t	          j        ||           d S )Nr   r2   r   rW  rh   r  )ri   r2   r   ri   rY  r   r   )r	   r%  rC   rI   rF   rG   r   r  s       r   test_pivot_index_is_nonez"TestPivot.test_pivot_index_is_none$
  s    qc2233#T22h]1#666"&
fh///#T#>>Qqc5!33G3G3GHHH
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   r2   r   rW  rh   ri   rY  r   r   rL  r   )r	   r%  r   rF   rG   r  s       r   test_pivot_values_is_nonez#TestPivot.test_pivot_values_is_none1
  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 )Nrg   r   r   )r.   r/   threeT)deepr.   r/   r`  r   )r	   r  r%  rF   rG   )r>   rb   rQ   s      r   "test_pivot_not_changing_index_namez,TestPivot.test_pivot_not_changing_index_name?
  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)rg   rh   r  r   rg   rh   r  r  r7  rt  r]  )r	   r   r   rF   r~   rC   r>   rb   r%  rQ   s       r   .test_pivot_table_empty_dataframe_correct_indexz8TestPivot.test_pivot_table_empty_dataframe_correct_indexF
  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 )Nrk   z
2023-01-01r   )rg   date_strrx   rl   z
2023-01-02r2   rm   z
2023-01-03r   rg  r   Frg   rx   r\   T)rB   rA   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_datetimerF   r  r   r   r}   r   strptimer~   rB   rd  s       r   0test_pivot_table_handles_explicit_datetime_typesz:TestPivot.test_pivot_table_handles_explicit_datetime_typesN
  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=N)r  r  r  rA  rC  rE  rJ  rM  rS  rU  rZ  r\  r^  rb  re  rj  r   r   r   r8  r8  	  s        : : ::	; 	; 	;C C CI I I"0 "0 "0H$# $# $#L  0 0 00 0 00 0 0, , ,7 7 75 5 5 5 5r   r8  )&r   r   r   	itertoolsr   r  numpyr:   r  pandas.errorsr   pandasr    r   r	   r
   r   r   r   r   r   pandas._testing_testingrF   pandas.api.typesr   r   pandas.core.reshaper   r  pandas.core.reshape.pivotr   r2  r   r   r&   r(   r8  r   r   r   <module>rt     s0           
       				      , , , , , ,    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	       4 4 4 4 4 4 6 6 6 6 6 6 1 1 1 1 1 1 e}%%%  &% !q1#'*UU1a[[%%1++,FGHHHJ J IHJ
b%0 b%0 b%0 b%0 b%0 b%0 b%0 b%0JKX5 X5 X5 X5 X5 X5 X5 X5 X5 X5r   