
    Owgl                    z   d dl mZm Z mZ d dlmZ d dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlZd dlmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d d	lm Z   ejB                  d
dg      d        Z" ejB                  d gdz  dgdz  f e#d       e#dd      fg      d        Z$ G d d      Z% G d d      Z&y)    )datedatetime	timedelta)productN)using_pyarrow_string_dtype)PerformanceWarning)Categorical	DataFrameGrouperIndex
MultiIndexSeriesconcat
date_range)CategoricalDtype)reshapepivot_tableTF)paramsc                     | j                   S N)param)requests    V/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/reshape/test_pivot.pydropnar   !   s    ==             c                 t    | j                   \  }}t        t        j                  j	                  |||            S r   )r   r	   pdIntervalIndexfrom_arrays)r   closedleftrights       r   interval_valuesr'   &   s/    --KD%r''33D%H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(                  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(                  j+                  dddg      d        Zej(                  j+                  dddg      d        Zej(                  j+                  dddg      d        Zd  Zej(                  j+                  dddg      d!        Zd" Zej(                  j+                  d#d$d%g e jB                  d$d%g       e"d$d%g       e#d$d%g      g      ej(                  j+                  dddg      d&               Z$ej(                  j+                  d#d'd$g e jB                  d'd$g       e"d'd$g       e#d'd$g      g      ej(                  j+                  dddg      d(               Z%d) Z&ej(                  jO                  d*+      ej(                  j+                  dddg      d,               Z(ej(                  j+                  dddg      d-        Z)d.d/gd0gd1fd2Z*d3 Z+d4 Z,ej(                  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(                  j+                  dCg dD      dE        Z2dF Z3dG Z4dH Z5dI Z6dJ Z7dK Z8dL Z9dM Z:dN Z;ej(                  j+                  dOdPdQdRdSdTdUgg      dV        Z<dW Z=dX Z>dY Z?dZ Z@d[ ZAd\ ZBd] ZCd^ ZDd_ ZEd` ZFda ZGdb ZHdc ZIdd ZJde ZKdf ZLdg ZMej(                  j+                  dhd;e j                  fd6e j                  fdie j                  fd;d6ge j                  e j                  gfd;dige j                  e j                  gfdid6ge j                  e j                  gfg      dj        ZQej(                  j                  dk        ZSdl ZTdm ZUej(                  j+                  dnddg      do        ZVdp ZWdq ZXdr ZYds ZZdt Z[du Z\ej(                  j+                  dvddg      dw        Z]dx Z^dy Z_dz Z`yS){TestPivotTablec           
      :   t        g dg dg dt        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      d      S )Nfoor,   r,   r,   barr-   r-   r-   r,   r,   r,   oner/   r/   twor/   r/   r/   r0   r0   r0   r/   )dullr1   shinyr1   r1   r2   r2   r1   r2   r2   r2         )ABCDEF)r
   nprandomdefault_rngstandard_normal)selfs    r   datazTestPivotTable.data-   s}     YY**1-==bAYY**1-==bAYY**1-==bAU+-
 -	
r   c                 h   ddg}d}t        |d|||      }|j                  d|||      }t        j                  ||       t        |d||       t        |      dkD  r$|j                  j
                  t        |      k(  s J |j                  j                  |d   k(  sJ t        |      dkD  r|j                  j
                  |k(  s J |j                  j                  |d   k(  sJ |j                  ||gz         d   j                  d	      j                         }t        j                  ||       y )
Nr5   r6   r7   r8   )valuesindexcolumnsobserved)rB   rC   rE   r   r   mean)r   tmassert_frame_equallenrC   namestuplenamerD   groupbyaggunstack)r?   rE   r@   rC   rD   tabletable2expecteds           r   test_pivot_tablezTestPivotTable.test_pivot_table^   s(   c
E7X
 !!eWx " 
 	eV, 	DEHEu:>;;$$e444;;##uQx///w<!==&&'111==%%333<<	 1237;;FCKKM
eX.r   c                    t        t        d      t        d      g dd      }|j                  ddddd	
      }|j                  j	                  d      |_        |j
                  j	                  d      |_        |j                  j	                  d      |_        |j                  j	                  d      |_        |j                  ddddd	|      }t        j                  ||       y )Nabcdefghijr   r3   r   r      col1col2col3rZ   r\   r[   sumr   )rC   rB   rD   aggfunc
fill_valuecategory)rC   rB   rD   r^   r_   rE   )
r
   listr   rC   astyperD   rZ   r[   rG   rH   )r?   rE   dfrR   results        r   +test_pivot_table_categorical_observed_equalz:TestPivotTable.test_pivot_table_categorical_observed_equalz   s    ']DM?S
 >>ST " 
 "..z:#++22:>''..,''..,   
 	fh/r   c                 N   t        g dg dg dd      }|j                  dd      }|j                  dd      j                  }t        j                  ||       |j                  dd	d
i      }|j                  dd	d
i      j                  }t        j                  ||       y )Nabcxyzr   r3   r   )rowscolsrB   rq   r]   )rD   r^   rC   r^   rB   rF   )r
   r   TrG   rH   )r?   rc   rsxps       r   test_pivot_table_nocolsz&TestPivotTable.test_pivot_table_nocols   s    $oS
 ^^FE^:^^&%^8::
b"%^^FXv4F^G^^&8V2D^EG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      }|j                  ddddgd      }|j                  dddgdd      }t        j                  g dddg      }t	        j
                  |j                  |       t	        j
                  |j                  |       y )Ni`  i iP  i0u  )r   r   r3   r   r5   r6   r7   i[ i] i\ i^ rh   ri   rj   di i  i@B )amountcustomermonthr   quantityr|   r{   rz   r   F)r   ))r5   rh   )r5   ri   )r5   rj   )r5   rx   )r6   rh   )r6   ri   )r6   rj   )r6   rx   )r7   rh   )r7   ri   )r7   rj   )r7   rx   rJ   )r
   r   r   from_tuplesrG   assert_index_equalrD   rC   )r?   rc   pv_colpv_indms        r   test_pivot_table_dropnaz&TestPivotTable.test_pivot_table_dropna   s    #5UC #<#6fE"sss; 'Fw7K
 *i!8   
 Y/   
 "" y)
" 	fnna0
fllA.r   c                 x   t        g dg dd      }t        g dg dd      }t        ||g dd      }d	}t        j                  t        |
      5  t        |dddgd      }d d d        t        j                  ||gddg      }t        dg di|      }t        j                  |       y # 1 sw Y   LxY w)Nrh   rh   ri   ri   )rh   ri   rn   T
categoriesordered)rj   rx   rj   rx   )rj   rx   rm   r   r3   r   r   )r5   r6   rB   1The default value of observed=False is deprecatedmatchrB   r5   r6   )rB   rC   r   r}   )      ?       @      @      @rC   )	r	   r
   rG   assert_produces_warningFutureWarningr   r   r#   rH   )r?   cat1cat2rc   msgrd   	exp_indexrR   s           r   test_pivot_table_categoricalz+TestPivotTable.test_pivot_table_categorical   s     _d
  _d
 TEFA''SA 	U HS#JtTF	U **D$<SzJ	h(<=YO
fh/	U 	Us   B00B9c                 <   g d}t        g dg dt        d      d      }|d   j                  t        |d            |d<   d	}t	        j
                  t        |
      5  |j                  ddd|      }d d d        t        g dd      }|j                  t        |d            }t        g dd      }t        g dg dg dg||      }|s*|j                  t        |            j                  d      }t	        j                  |       y # 1 sw Y   xY w)Nrh   ri   rj   rx   )	rh   rh   rh   ri   ri   ri   rj   rj   rj   )	r   r3   r   r   r3   r   r   r3   r   	   r5   r6   r7   r5   Fr   r   r   r6   r7   )rC   rD   rB   r   rg   rL   ro   )        r         @)r   r         @)r         @       @rC   rD   rD   float)r
   rangerb   r   rG   r   r   r   r   reindexr	   rH   )	r?   r   r   rc   r   rd   expected_columnsexpected_indexrR   s	            r   $test_pivot_table_dropna_categoricalsz3TestPivotTable.test_pivot_table_dropna_categoricals   s   )
B01X
 S'..!1*e!LM3A''SA 	W^^#s3v^VF	W!/<+22Z7
  	4o? $

 ''J0G'HOOPWXH
fh/!	W 	Ws    DDc           
         t        t        t        j                  ddddgddgd      g dd      }d}t	        j
                  t        |      5  |j                  d	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                  |       y # 1 sw Y   exY w)NlowhighTr   )r   r   r   r   r   r5   r6   r   r   r5   r6   rC   rB   r   r   r   r   r   r   r   r   )r   r   r   r   )r
   r	   r;   nanrG   r   r   r   r   
from_codesrH   )r?   r   rc   r   rd   rB   codesrR   s           r   %test_pivot_with_non_observable_dropnaz4TestPivotTable.test_pivot_with_non_observable_dropna   s     VVUFE6: %v 
 /	
 B''SA 	J^^#c&^IF	J3ZFFE %FE&M&&ufov 	
 	fh/'	J 	Js   CCc           
         t        t        g dg dd      t        d      d      }d}t        j                  t
        |      5  |j                  d	d
|      }d d d        t        d
g dit        t        j                  g dg dd      d	            }|s|d
   j                  t              |d
<   t        j                  |       y # 1 sw Y   sxY w)N)r%   r   r   r   r   )r   r   r%   Tr   rX   r   r   r   r5   r6   r   r   )r   r   r3   r   r   )r
   r	   r   rG   r   r   r   r   r   rb   r   rH   )r?   r   rc   r   rd   rR   s         r   /test_pivot_with_non_observable_dropna_multi_catz>TestPivotTable.test_pivot_with_non_observable_dropna_multi_cat  s     :6 
 1X	
 B''SA 	J^^#c&^IF	J/"&&*A4 	
 $SM007HSM
fh/	J 	Js   CCc                 V   t        |dd      }d}t        j                  t        |      5  |j	                  dd|      }d d d        t        ddit        |j                         d	      
      }|s|j                  t              }t        j                  |       y # 1 sw Y   _xY w)Nr   r   r   r   r5   r6   r   r   r   r   )
r
   rG   r   r   r   r   uniquerb   r   rH   )r?   r'   r   rc   r   rd   rR   s          r   test_pivot_with_interval_indexz-TestPivotTable.test_pivot_with_interval_index7  s    _156A''SA 	J^^#c&^IF	J#JeO$:$:$<3G
 u-H
fh/	J 	Js   BB(c           
      T   t         j                  j                  g dg d      }t        t	        j
                  dddt        j                        g dt        |d	      j                  d
      d      }d}t        j                  t        |      5  t        |ddd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                   ||       y # 1 sw Y   zxY w)Nr   r   r   r   r   r   r3   r3   r   r   r   dtyperh   ri   rh   ri   Tr   F)	ascendingr   r   r   r7   r6   r5   r]   rC   rD   rB   r^   marginsAll)r      
   r   r3   r   )rC   rL   r   )r!   r"   r#   r
   r;   arangeintpr	   sort_valuesrG   r   r   r   r   r   Intervalassert_series_equal)r?   ordered_catrc   r   	pivot_tabrd   rR   s          r   &test_pivot_with_interval_index_marginsz5TestPivotTable.test_pivot_with_interval_index_marginsE  s    &&22<NYYq!Rrww7) d;GG# H 
 B''SA 	##s3tI	
 5!Q*BKK1,=uECP''	
 	vx0	 	s   DD'c                     |j                  d|j                  |j                        }|j                  ddd      }t        j                  ||       y )Nr8   r   r5   r7   )r   r5   r7   rG   rH   r?   r@   rd   rR   s       r   test_pass_arrayzTestPivotTable.test_pass_arraya  sH    !!#TVVTVV!D##CsC#@
fh/r   c                     |j                  dd |j                        }|j                  d|j                  dz  d      }t        j                  ||       y )Nr8   c                     | dz  S )NrX    rl   s    r   <lambda>z3TestPivotTable.test_pass_function.<locals>.<lambda>g  s
    qAv r   r   rX   r7   )r   r7   rC   rG   rH   r   s       r   test_pass_functionz!TestPivotTable.test_pass_functionf  sM    !!#-=tvv!N##CtzzQ#L
fh/r   c                     ddg}d}t        |||      }|j                  ||gz         j                  d      j                         }t	        j
                  ||       y )Nr5   r6   r7   r   rF   )r   rM   rN   rO   rG   rH   )r?   r@   rC   rD   rP   rR   s         r   test_pivot_table_multiplez(TestPivotTable.test_pivot_table_multiplek  sW    c
Dw?<<	 1266v>FF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                  ||       y )N)catbatr   r   r   r   )rh   vir   int64rh   r   r   r]   )rB   rC   rD   r_   r^   r3   abr   r   )      ?      @      @      @float64rF   )
r
   dtypesr   r   r;   r   r   ra   rG   r   )r?   frn   rd   rR   s        r   test_pivot_dtypesz TestPivotTable.test_pivot_dtypesr  s"   1!)
 xx}'''c#!U
 288G,-1tDzPS9TU
vx0 1))
 xx}	)))c#!V
 288I./!35dRU;VW
vx0r   zcolumns,valuesbool1float1float2)r   r   r   bool2c                 L   t        j                  dt         j                        }t        ||dz   |dk  |dk  d      }|j	                         j                  d||      }t        |j                        }|D ci c]  }|t        j                  d	       }}||k(  sJ y c c}w )
NrX   r   r   r3   r   )r   r   r   r   rC   rC   rD   rB   r   )	r;   r   r   r
   reset_indexr   dictr   r   )	r?   rD   rB   r   rc   df_resrd   colrR   s	            r   test_pivot_preserve_dtypesz)TestPivotTable.test_pivot_preserve_dtypes  s     IIarzz*AGa1fqAvN
 !--76 . 
 fmm$8>?C),,??!!! @s   :B!c                 d   t        j                  g d      }t        dg di|      }|j                  |j                  j
                  |j                  j                        }t        j                  ddg      }|j                  |j                  d   j                  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                  j
                  t'        dd            }t        j(                  dgt        j                  dgd      gd dg      }t        ddgt        ddgt        j                        |      }t!        j"                  ||       |j                  t'        d      t'        dd            }t        dgt        j                  dgd      |      }t!        j"                  ||       y )N)
2011-01-01z
2011-02-01
2011-01-02r   r   r5   rW   r   r   )r5   r   )r5   r3   r   )levelr   r   r   r3   r   r   r8   rX   )freqperiods)r5   dtr   ME)keyr   z
2011-01-31zM8[ns]r}         
@YEr   r   z
2011-12-31)r!   DatetimeIndexr
   r   rC   r{   dayr   r~   
set_levelslevelsrb   r;   int32r   r   rG   rH   r   r   r#   )r?   idxrc   resexp_columnsexps         r   test_pivot_no_valuesz#TestPivotTable.test_pivot_no_values  s   R
 _-S9nn288>>288<<nH ,,h-AB!,,q!((2! - 
 3Z#rvv'Abhh/

 	c3'$ CC 
 nn288>>7tRV;WnX ,,UB$$l^8DE,
 3KuaV288<k
 	c3'nnt$g$T.J  
 E""L>=

 	c3'r   c                     t        |ddgdddgd      }t        |j                  dgd	
      dddgd      }t        j                  ||       y )Nr8   r9   r5   r6   r7   r   )rB   rC   rD   r_   r:   r   axis)rC   rD   r_   )r   droprG   rH   r   s       r   test_pivot_multi_valuesz&TestPivotTable.test_pivot_multi_values  sZ    #s3c
q
 IIse!I$C#sPQ
 	fh/r   c                 "   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                  ||       y )Nc                 ,    t        ddgddgd|       S )Nr8   r9   r5   r6   r7   rB   rC   rD   r^   r   funcr@   s    r   r   z;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>  s    #sC:sD
 r   rF   stdr   )keysr  c                 .    t        ddgddgd| d      S )Nr8   r9   r5   r6   r7   T)rB   rC   rD   r^   r   r   r  s    r   r   z;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>  s&    :*
 r   )r   rG   rH   )r?   r@   r   rd   meansstdsrR   s    `     r   test_pivot_multi_functionsz)TestPivotTable.test_pivot_multi_functions  s    
 FE?#&	x5$-vuoAF
fh/
 FE?#&	x5$-vuoAF
fh/r   methodTFc           	         t         j                  }t        dd|dgg dg dd      }|r|j                  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                  |j                  ddd	
      |j                         y )NR1R2R4)C1C2C3C4)r            rg   rh   ri   rj   r   r%  r   r$  r&  r   r   )	r;   r   r
   pivotr!   r   rG   rH   rs   )r?   r  r   rc   rd   rR   s         r   test_pivot_index_with_nanz(TestPivotTable.test_pivot_index_with_nan  s     ffD#t,-%
 XXCSXAFXXbSEFc2s#S#s#b#s#c3#	 dD$/c:2=	
 	fh/
bhhS#chJHJJ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|j                  dd	d      }nt	        j                  |dd	d      }|j                         j                  j                         t        |      k(  sJ |j                         D ]$  \  }}|j                  |d   |d	   f   |d   k(  r$J  |r|j                  d	dd      }nt	        j                  |d	dd      }t        j                  ||j                          y )Nz
2014-02-01   r8   )r   r   d   )rh   rj   rh   z
2014-02-02ri   )r   rh   )r   rh   r   ri   )r   ri   rj   r   )r
   r   r;   r   r!   	Timestampr   locr'  notnarB   r]   rI   iterrowsrG   rH   rs   )r?   r  rc   pv_rowrd   s          r   test_pivot_index_with_nan_datesz.TestPivotTable.test_pivot_index_with_nan_dates  s\    acB299Q<'
 S'BLL663*,&&0v*,&&0vS=B"CSABxxz  $$&#b'111kkm 	:FAs66#c(CH,-S999	: XXCSXAFXXbSEF
fbdd+r   c                    t        t        j                  t        ddddd      t        ddddd      t        ddddd      t        ddddd      gd| d      t        j                  t        d	dddd      t        d	dddd      t        d	dddd      t        d	dddd      gd| d
      t	        j
                  dd      t	        j
                  dd      d      }t        g d      }t        j                  ddgdz  dd| d
      }t        j                  ||g      }t        j                  ddgdd| d      }t        g dg dg||      }|r|j                  dd      }	nt        j                  |dd      }	t        j                  |	|       t        ddgddgg||d d       }|r|j                  ddd      }	nt        j                  |ddd      }	t        j                  |	|       y )N  r   r   r   r3   zM8[z, US/Pacific]r     z, Asia/Tokyo]r   r   )dt1dt2data1data2r:  r:  r;  r;  z2014/01/01 09:00z2014/01/02 09:00r9  rL   r   z2013/01/01 09:00z2013/01/02 09:00r8  r   r3   r   r3   r   r   r   r   r   r   r:  r   )r
   r!   r  r   r;   r   r   r   r#   r'  rG   rH   )
r?   r  unitrc   exp_col1exp_col2exp_colexp_idxrR   r1  s
             r   test_pivot_with_tzz!TestPivotTable.test_pivot_with_tz4  s$    '' q!Q2 q!Q2 q!Q2 q!Q2	  v]3 '' q!Q2 q!Q2 q!Q2 q!Q2	  v]3 1G41G4)
2 =>##!34q8v]+

 (((H)=>""!34v]+

 <(
 u5B"E59B
b(+VaVRaL
 uWEB"E5IB
b(+r   c                 $   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      }|j                  d
      j	                         }|j
                  j                  d       }t        |j                  d
      j	                         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                  ||       y )Naaz2016-08-12 13:00:00-0700z
US/Pacific)tz)uidtsz2016-08-12 08:00:00-0700z2016-08-12 14:00:00-0700z2016-08-25 11:00:00-0700z2016-08-25 13:00:00-0700rJ  c                 ,    | j                  dddd      S )Nr   )hourminutesecondmicrosecond)replacer   s    r   r   z8TestPivotTable.test_pivot_tz_in_values.<locals>.<lambda>  s    199!AaUV9#W r   rI  minr  r   z2016-08-12 00:00:00z2016-08-25 00:00:00r   )r
   r!   r-  	set_indexr   rJ  mapr   r   r  rG   rH   )r?   rc   minsrd   rR   s        r   test_pivot_tz_in_valuesz&TestPivotTable.test_pivot_tz_in_valuest  su     ,,'AlS
  ,,'AlS
  ,,'AlS
  ,,'AlS
  ,,'AlS#
2 \\$++-uuyyWXLL**,'F
  LL!;MLL!;M U+$$LL!6<HLL!6<H 
  	fh/r   c           
      >   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|j                  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|j                  ddd      }nt        j                  |ddd      }t        j                  ||       y )Nz
2013-01-01r8   z
2013-01-02z2013-01Mz2013-02r   r   r   )p1p2r:  r;  r<  r3   rY  )rL   r   r>  r?  rX  r   r   r   r   r:  r   )r
   r!   Periodr;   r   r   PeriodIndexr   r#   r'  rG   rH   )r?   r  rc   rA  rB  rC  rR   r1  s           r   test_pivot_periodsz!TestPivotTable.test_pivot_periods  s    IIlC0IIlC0IIlC0IIlC0	 IIi-IIi-IIi-IIi-	 1G41G4
& =>>>9i"81"<4cR(((H)=><(..,!=DsS

 d3B"D$7B
b(+VaV..,!=DsSNNIy#93O

 d7CB"D$w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
            }|j	                  dd
dd      }t        j                  ||       y )Nr   2019Q12019Q2r   )rh   ri   rl   r   r3   r   rh   r   r   ri   r@   rC   rD   rl   T)rC   rD   rB   r   )r
   r!   rZ  r   r   rG   rH   )r?   rc   rR   rd   s       r   test_pivot_periods_with_marginsz.TestPivotTable.test_pivot_periods_with_margins  s    !IIh'IIh'IIh'IIh'	 	
 C0299X.		(0CUKRUV
 c3sDQ
h/r   rB   bazzooc                 x   t        g dg dg dg dd      }|r|j                  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   j                  t              |d<   t        j                  ||       y )Nr/   r/   r/   r0   r0   r0   r5   r6   r7   r5   r6   r7   r   r3   r   r   rX   r*  rl   rm   rn   qwtr,   r-   rc  rd  r,   r-   r   )r   r3   r   rl   rm   rn   )r   rX   r*  rj  rk  rl  r/   r0   r@   rL   rc  rd  r   )r   r   r   r   r   r   )r   r   r3   r   r   r3   r  r   rJ   ra  )	r
   r'  r!   r   r   rb   objectrG   rH   	r?   rB   r  rc   rd   r@   rC   rD   rR   s	            r    test_pivot_with_list_like_valuesz/TestPivotTable.test_pivot_with_list_like_values  s     A5)5	
 XXE5XHFXXbuVLF(*BCE5>6ENO4%'9:-

 $eWE"5/008
fh/r   r-   c           	         t        g dg dg dg dd      }|r|j                  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   j                  t              |d<   t        j                  ||       y )Nrf  rg  rh  ri  rm  rd  r,   r   r5   r   r7   r*  r6   rX   r   r3   r   )rj  rl  rk  rl   rm   rn   rn  r-   rc  r/   r0   r   r   r   r   r   ro  ra  )r
   r'  r!   r;   r   r   r   rb   rp  rG   rH   rq  s	            r   %test_pivot_with_list_like_values_nansz4TestPivotTable.test_pivot_with_list_like_values_nans  s=    A5)5	
 XXE5XHFXXbuVLF VVS"&&!$VVS"&&!$VVS"&&!$"&&!RVV$"&&!RVV$"&&!RVV$
 9FENUEN3.-

 $eWE"5/008
fh/r   c                     t        g dg dg dd      }d}t        j                  t        |      5  |j	                  dd       d d d        y # 1 sw Y   y xY w)	Nrg   ro   rY   z=pivot\(\) missing 1 required keyword-only argument: 'columns'r   rZ   r\   )rC   rB   r
   pytestraises	TypeErrorr'  )r?   rc   r   s      r   #test_pivot_columns_none_raise_errorz2TestPivotTable.test_pivot_columns_none_raise_errorB  sK    IVWN]]9C0 	2HH6&H1	2 	2 	2s   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|j                  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                  ||       y ) Nr   r   r3   r   r   rX   )r@   )r/   r5   r   rl   )r/   r6   r3   rm   )r/   r7   r   rn   )r0   r5   r   rj  )r0   r6   rX   rk  )r0   r7   r*  rl  r-   rc  firstrN  r   rt  )r  r   rp  )r@   rC   rD   r   )r-   r  )r-   rN  )rc  r  r   r   r   r/   r0   r   r3   rX   r   r*  r   )r   r   r
   r'  r!   r   rG   rH   )r?   r  rC   r@   rD   rc   rd   rR   s           r   test_pivot_with_multiindexz)TestPivotTable.test_pivot_with_multiindexI  s     -.      
 ENWh$78.
 DwhOXX&)'  F XX&)'	F Auen5Auen5Auen5

 T?
fh/r   c                     t        g dg dg dg dd      }t        j                  t        d      5  |r|j	                  dd	d
       nt        j                  |dd	d
       d d d        y # 1 sw Y   y xY w)Nrf  rg  rh  ri  rm  z^\('bar', 'baz'\)$r   rd  r,   )r-   rc  r   )r
   rx  ry  KeyErrorr'  r!   )r?   r  rc   s      r   test_pivot_with_tuple_of_valuesz.TestPivotTable.test_pivot_with_tuple_of_valuess  sp     A5)5	
 ]]8+@A 	PueNK5%O	P 	P 	Ps   1A..A7r5   r6   r7   r   c                 &   |j                   |j                  d d |f   }|j                  |      |   j                         }t	        j
                  ||d       |j                  |k(  sJ |j                         }|j                   |df   j                  d d }	|j                  |      |   j                         }
t	        j
                  |	|
d       |	j                  |dfk(  sJ |j                   |df|f   }||   j                         }||k(  sJ y )Nr   Fcheck_names )	r.  rC   rM   rF   rG   r   rL   
sort_indexiloc)r?   rd   
values_colr@   rC   rD   margins_colcol_marginsexpected_col_marginsindex_marginsexpected_ix_marginsgrand_total_marginsexpected_total_marginss                r   _check_outputzTestPivotTable._check_output  s    jjcr!2K!?@#||E2:>CCE
{,@eT;...""$

K#45::3B?"ll73J?DDF
}.AuU!!k2%6666$jj+r):K)GH!%j!1!6!6!8"&<<<<r   c                 L   |j                  dddgddd      }| j                  |d|       |j                  dddgdddd	      }| j                  |d|d
       |j                  ddgddd      }|j                  j                  d   D ]  }| j                  ||   ||        y )Nr8   r5   r6   r7   TrF   )rB   rC   rD   r   r^   Totals)rB   rC   rD   r   r^   margins_name)r  rC   rD   r   r^   r   )r   r  rD   r  )r?   r@   rd   rP   	value_cols        r   test_marginszTestPivotTable.test_margins  s    !!sCj#tV " 
 	63- !!*! " 
 	63(C   *c4 ! 
 --a0 	BIuY/DA	Br   c                     |j                   D cg c]  }|dz  	 c}|_         t        j                  d      }t        j                  t
        |      5  |j                  ddgdd       d d d        |j                  d	
      j                  ddgdd      }|j                   D ]+  }|j                  d|f   }|||   j                         k(  r+J  t        j                  t
        |      5  |j                  ddgdd       d d d        |j                  d	
      j                  ddgdd      }dD ]+  }|j                  d|f   }|||   j                         k(  r+J  y c c}w # 1 sw Y   xY w# 1 sw Y   qxY w)Nr3   &agg function failed [how->mean,dtype->r   AABBTrF   )rC   r   r^   CCr   r   r  )DDEEFF)
rD   reescaperx  ry  rz  r   r  r.  rF   )r?   r@   kr   rP   r  totalsitems           r   test_no_colzTestPivotTable.test_no_col  s    (,||4!A4ii@A]]9C0 	OD$<vN	O		$	'33,f 4 
  	4IYY{I56FT)_113333	4 ]]9C0 	OD$<vN	O		$	'33,f 4 
 ' 	/DYY{D01FT$Z__....	/! 5	O 	O	O 	Os   E#E(-E4(E14E=z*columns, aggfunc, values, expected_columnsrF   )      @r  皙@r  )r   r   皙@r  )r-   r   r,   r   r   r]   )r         rX   r*  r4   )          r4   r4   r  ))r-   r/   )r-   r0   )r-   r   )r,   r/   )r,   r0   )r,   r   r}   c                    t        g dg dg dg dg dd      }|dk7  rMt        j                  d      }t        j                  t
        |	      5  |j                  |d
|       d d d        d|vr|j                  d      }|j                  d      j                  |d
|      }t        |t        ddg      |      }t        j                  ||       y # 1 sw Y   sxY w)N	r,   r,   r,   r,   r,   r-   r-   r-   r-   	r/   r/   r/   r0   r0   r/   r/   r0   r0   	smalllarger  r  r  r  r  r  r  	r   r3   r3   r   r   r   rX   r*  r   	r3   r   rX   rX   r*  r*     r   r   r5   r6   r7   r8   r9   r]   r  r   T)rD   r   r^   r6   r   r7   r8   r9   r   )r
   r  r  rx  ry  rz  r   r  r   rG   rH   )	r?   rD   r^   rB   r   rc   r   rd   rR   s	            r   %test_margin_with_only_columns_definedz4TestPivotTable.test_margin_with_only_columns_defined  s    D TT
 10
& e))DECy4 OwgNOg%B%11T7 2 
 V5#s+<FVW
fh/O Os   CC!c                    |j                         }t        j                  t        |      dz        j	                  t        |      d      j                  d      |g d<   t        t        ddgddg            dgz   }t        j                  |d	
      }t        g dg dd|      j                  dd      }|d   |d   z   |d<   |j                  dddgdddd      }t        j                  ||       y )Nr   i8)r8   r9   r:   r-   r,   r/   r0   r  r   r}   )      r   r   -   )!   r   $   3   x   r1   r2   r   r7   r   r  r1   r2   r   r8   r5   r6   Tr]   r   rB   rC   rD   r   r^   r_   )copyr;   r   rI   r   rb   ra   r   r   r~   r
   rename_axisr   rG   rH   )r?   r@   rc   mi_valmirR   rd   s          r   test_margins_dtypez!TestPivotTable.test_margins_dtype  s     YY[ iiB!4<<SWaHOOPTU?guenuen=>+N##F*='2FGr

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

+c+
" 	 #6*Xg->>!!* " 
 	h/r   rq   ))r   r3   rh   ri   r,  )rh   r   c           	          t        |d   g d|d   g ddg di      }|j                  d|      }t        g dgt        j                  g d|	      t	        dgt
        
            }t        j                  ||       y )Nr   ro   r   r   )r   rX   r*  )rB   rD   )r   r   r   ))r   r   )r3   r3   )r   r   r}   r   rD   rC   )r
   r   r   r~   r   rp  rG   rH   )r?   rq   df2rd   rR   s        r    test_pivot_table_multiindex_onlyz/TestPivotTable.test_pivot_table_multiindex_only<  st     a)T!WiiPQT:**+C4PV,
 	fh/r   c                 l   t        ddd      }t        t        j                  j	                  d      j                  d      t        j                  j	                  d      j                  d      |d      }|j                  ddgd	
      }|j                  j                  d   j                  |      sJ y )Nz
2016-01-01r   zEurope/Amsterdam)r   rH  r3   r   r6   r7   F)rC   r   r   )
r   r
   r;   r<   r=   r>   r   rC   r  equals)r?   dtirc   rd   s       r   test_pivot_table_retains_tzz*TestPivotTable.test_pivot_table_retains_tzJ  s    q5GHYY**1-==a@YY**1-==a@
 sCj? ||""1%,,S111r   c                    t         j                  }t        t        ddgg dddgt	        d      D cg c]  }|t        |      z    c}dg            }t        |      }|j                  dg d	d
g      }|j                  t              }|j                  dg ddg      }t        j                  ||d       y c c}w )Nr,   r-   r   x1x2r&  r   r   )r   r   r   r3   )rB   rC   rD   r   4)0132Fr  )r   rQ  ra   r   r   r   r
   r   renamestrrG   rH   )r?   rx   r   r@   rc   rP   r  rQ   s           r   test_pivot_integer_columnsz)TestPivotTable.test_pivot_integer_columnsX  s     HHt+095aYq\!5
 t_ay1#Fiii$?SER
eV? 6s   B;c                    t        g ddz  g ddz  dgdz  dgdz  z   dz  t        j                  j                  d      j	                  d      d      }|j                  d	d
ddg      }|j                  g d      d	   j                         }|j                  d      j                  d      j                  dd      }t        j                  ||       y )N)rh   rh   rh   rh   ri   ri   ri   ri   r3   )r   r   r   r   r   r   r   r   r,   r   r-      )rh   ri   rj   valuer  rh   ri   rj   r   rg   r   all)r  how)r
   r;   r<   r=   r>   r   rM   rF   rO   r   rG   rH   )r?   r@   rP   groupedrR   s        r   test_pivot_no_level_overlapz*TestPivotTable.test_pivot_no_level_overlapm  s     =A-1gkUGaK/14..q1AA"E	
   c3Z H,,/8==???3'//4;;;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                  j                  d      j                  dt        |      |      }|d   |   |d<   |d   |   |d<   t        t        ddd      t        ddd            }|t         j                  j                  d      j                  dt        |      |         }|j                  |d<   |j                  |d<   |j                  |d<   t         j                  j                  d      j!                  dd|      |d<   t#        |      }|j%                  dddgg dd      }	|	j&                  j(                  sJ y )Ni'  r   SymbolYearMonthDayQuantityPrice)	)SP500ADBE)r  NVDA)r  ORCL)NDQ100AAPL)r  MSFT)r  GOOG)FTSEzDGE.L)r  zTSCO.L)r  zGSK.Lr   r3   r   i  r   i  r     r   r   )r   r  r  rF   rC   rD   r^   )r;   r   rp  intr   arrayemptyr<   r=   integersrI   r   r   yearr{   r  	lognormalr
   r   rD   is_monotonic_increasing)
r?   nr   productsitemsiproductdrdatesrc   pivoteds
             r   test_pivot_columns_lexsortedz+TestPivotTable.test_pivot_columns_lexsorted  s   &!6"#S!% 

 88
 V$x&89
 %(99((+44QHqI!'*84g"8,X6hT1a($tR*<=299((+44QBCD

fgyye..q1;;CaHgu..E"/	 ! 
 6666r   c                     dgdgd}|j                  ddg      j                  |      j                  d      }|j                  dd|      }t	        j
                  ||       y )Nr  r]   r8   r9   r5   r6   r  )rM   rN   rO   r   rG   rH   )r?   r@   r   rR   rd   s        r   test_pivot_complex_aggfuncz)TestPivotTable.test_pivot_complex_aggfunc  s_    '(<<c
+//2::3?!!S!!D
fh/r   c                     |ddg   j                  ddgt        d      }|j                         }t        |d d       |d   k(  sJ y )Nr5   r6   T)rC   r^   r   r   )r   rI   tolistr]   )r?   r@   rd   result_lists       r   test_margins_no_values_no_colsz-TestPivotTable.test_margins_no_values_no_cols  sV    sCj!--*c4 . 
 mmo;s#$B777r   c                     |g d   j                  ddgdt        d      }|j                  j                         g dk(  sJ y )Nr   r5   r6   r7   TrC   rD   r^   r   r   r   r   r         &@r   rI   r   r  r?   r@   rd   s      r   test_margins_no_values_two_rowsz.TestPivotTable.test_margins_no_values_two_rows  sI     o&22*c3 3 
 zz  "&@@@@r   c                     |ddg   j                  ddt        d      }|j                  j                         g dk(  sJ y )Nr5   r6   Tr  )r   r   r  r  r  s      r   &test_margins_no_values_one_row_one_colz5TestPivotTable.test_margins_no_values_one_row_one_col  sI     sCj!--sC . 
 zz  "&6666r   c                     g d|d<   |g d   j                  ddgddgt        d      }|j                  j                         g d	k(  sJ y )
N)rh   ri   rj   rx   er   ghr   jr  r8   r5   r6   r7   r8   r5   r6   r7   Tr  r  r  r  s      r   'test_margins_no_values_two_row_two_colsz6TestPivotTable.test_margins_no_values_two_row_two_cols  sX     LS	*+77*sCj#t 8 
 zz  "&@@@@r   margin_namer,   r/   i  Nrh   ri   c           	         d| d}t        j                  t        |      5  t        |dddgdgd|	       d d d        t        j                  t        |      5  t        |ddgddgd|	       d d d        t        j                  t        |      5  t        |ddgdgd|	       d d d        y # 1 sw Y   yxY w# 1 sw Y   MxY w# 1 sw Y   y xY w)
NzConflicting name "z3" in margins|margins_name argument must be a stringr   r8   r5   r6   r7   T)rB   rC   rD   r   r  )rx  ry  
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 	 ]]:S1 		Cj(		 ]]:S1 		ec
(		 ]]:S1 		e(		 		)		 				 				 		s#   B/B;C/B8;CCc                 	   t        dj                         dj                         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	      j                  d
      }t        t	        j
                  g dd      j                  dd      t        j                  t        ddd      gd      dj                               }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      j                  dd      t        j                  t        ddd      t        ddd      gd      dj                               }d
|j                  _
        d|j                  _
        |r|d   j%                  d      |d<   t        |t        d      ddd      }t        j                  ||       t        |dt        d      dd      }t        j                  ||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        t)        j*                  t,        |      5  t        |dt        dd       dd       d d d        |j                  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        t)        j*                  t.        |      5  t        |dt        dd !      dd       d d d        y # 1 sw Y   GxY w# 1 sw Y   xY w# 1 sw Y   cxY w# 1 sw Y   y xY w)#NA A A A A A A B$Carl Mark Carl Carl Joe Joe Joe Carlr   r   rX   r   r  r   r   r   r6  r   r   r3   r  )BranchBuyerr  Dater+  )r   r  r   r   r   r   r  r   r   zCarl Joe Markr   r*  r  r]   rC   rD   rB   r^   r   r  r   6MSCarlr   r   z#'The grouper name foo is not found'r   r,   )r   r   zThe level foo is not valid)r
   splitr   rR  r;   r  r   r!   r  rC   rL   rD   r   r   rG   rH   rs   r   rb   r   rx  ry  r  r#  )r?   using_array_managerrc   rR   rd   r   s         r   test_pivot_timegrouperz%TestPivotTable.test_pivot_timegrouper   s   +113?EEG4T1a(T1a(T2q)T2q)T2q)T2q)T2q)T2q)		
  )F
! 	$ HH[088A>""HT2r$:#;$G#))+

 % 't$
 	fh/&
 	fhjj1HHaAr26623;;AqA""$1%xa';<5 $))+
 % ''/66w?HVu%
 	fh/'
 	fhjj1 ^^u&1
 	fh/F3
 	fhjj13]]83/ 	5e4!	 ]]83/ 	U6!	 \\&!uF3
 	fh/f5
 	fhjj1*]]:S1 	56!	 ]]:S1 	U%8!	 	]	 		 	<	 		 	s0   R;SSS!;SSS!S*c                 	   t        dj                         dj                         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      j                  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      j                  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                          y )%Nr&  r'  r(  r6  r4   r   r  r   r   rX   r   r&  r3   r  r  r   r$  r      )r)  r*  r  r+  PayDayr   r+  r/  r5  r  r]   r,  r   r*  r  r   r   r}   r5   r6   r)  )r
   r0  r   r   r   r;   r  r   r   r!   r  rC   rL   rD   rG   rH   rs   r   r~   )r?   rc   rd   rR   tuplesr  s         r   test_pivot_timegrouper_doublez,TestPivotTable.test_pivot_timegrouper_double  s   +113?EEG4T2q"a0T1aQ/T2q"a0T2q"a0T2q"a0T2q"a0T2q"a0T2q"a0	 T2q!Q/T2r2q1T1aQ/T2q"a0T2q"a0T1aQ/T2r2q1T2r2q1	
8 t084
 HHFFFFFFFFFFFFFFFFFFFF!& gam""T1b)T2r*T2r*T2r*	  $$T1b)T2r*T2r*T2r*	 ='
P % (
fh/t262
 	fhjj1 dAr"HT2r$:;dB#XdAr%:;dB#XdB%;<dB#XdB%;<dB#XdB%;<dB#XdB%;<
 $$VFH3EFHHBFFArvvq"&&!RVVQPQRgam#J
 !)&17(3STJ
 	fh/*$F3W$H5UV
 	fhjj1r   c           	         t        j                  g ddd      }t        j                  g dd      }t        g d||t        j                  d	d
      ddgdz  d      }|d d }t        ddg      }t        ddgd      }t        j                  ||g      }t        ddgddgddgg||      }t        |dgdgdg      }	t        j                  |	|       t        g d      }t        g ddz        }t        j                  ddgd z  dd!      }
t        j                  |||
g      }t        t        j                  g d"g d#g d$gd
      ||d d        }t        t        j                  g d%g d&g d'g      ||d d        }t        ||gd(      }t        |dgd!gdd)gd*d+g,      }	t        j                  |	|       y )-N2011-07-19 07:00:002011-07-19 08:00:002011-07-19 09:00:00r:  r;  r<  zM8[ns, US/Pacific]r8  r   rL   2013-01-01 15:00:00r?  r?  2013-02-01 15:00:00r@  r@  zM8[ns, Asia/Tokyo]r   rh   rh   rh   ri   ri   ri   r*  r   r   r3   r   labelr8  r9  value1value2rD  rh   ri   rC  r   r   r   r   r   r   r   r   r   )r]   r]   r]   r]   rF   rF   rF   rF   )rD  rD  rE  rE  r?  r@  r   r9  )r   r   r   r3   )r   r   r3   r   )r3   rX   r   r3   )r   r   r   r   )r   r   r   r   )r   r   r   r   r  rE  r]   rF   r,  )r!   r  r
   r;   r   r   r   r#   r   rG   rH   r  r   )r?   dates1dates2rc   rD  rA  rB  rC  rR   rd   exp_col3	expected1	expected2s                r   test_pivot_datetime_tzz%TestPivotTable.test_pivot_datetime_tz  s   !! '
 !! '

 7))AW5a&1*
 !*(H-.#s'2(((H)=>3Z#sc3Z0
 Rw	8*U
fh/UVAAEF##"$9:Q>&

 (((Hh)GHHH ! 	  BQK
	" HH((( ABK

	 9i0q9'Gh'FO
 	fh/r   c                    t        j                  g d      }t        j                  g d      }t        g d||t        j                  dd      ddgd	z  d
      }t        |d|d   j                  j                  d      }t        ddgd      }t        ddgddgddgd|t        g dt        j                  d            }t        j                  ||       t        ||d   j                  j                  |d   j                  j                  d      }t        ddgddgddgdt        ddgt        j                  d      t        g dt        j                  d            }t        j                  ||       t        ||d   j                  j                  j                  |d   j                  j                  |d   j                  j                  gd      }t        j                   t        j"                  g dt        j                        t        j"                  ddgd	z  t        j                        gddg      }t        t        j"                  g dg      t        dgt        j                        |      }t        j                  ||       t        |t        j"                  g d       |d   j                  j                  |d   j                  j                  gd      }t        t        j"                  d!d	dt        j$                  dt        j$                  gt        j$                  t        j$                  t        j$                  d"t        j$                  d#gg      d$d%g|      }t        j                  ||       y )&Nr9  r>  rA  r*  r   r   r   r3   r   rB  rC  r8  rD  r   rh   ri   r   r   r   r   r   r   r   )r   r  r   r=  r   r9  )r   r   r  r  r   r   r}   )r   r   r   r   r   r   r6  )XrM  rM  rM  YrN  r   r   rX   rM  rN  )r!   r  r
   r;   r   r   r   rL  r   r  rG   rH   r{   r  rB   r   r#   r  r   )r?   rF  rG  rc   rd   rD  rR   rC  s           r   test_pivot_dtaccessorz$TestPivotTable.test_pivot_dtaccessorr  s   !!	
 !!	
 7))AW5a&1*
 gr%y||'8'8
 c
1c
SzsCj9)288%@

 	fh/bill(("U),,2C2CH
 c
SzsCj9AbhhU;)288%@

 	fh/U),,##**Y\\&&5	(:(:;	
 ((+288<!Q!2884 %.
 HH456bhh/

 	fh/((9:Y\\&&5	(:(:;	
 HHQ2661bff-266ST/UV *
 	fh/r   c                    t        ddd      }t        t        j                  t	        |            |      }t        t        |      |j                  j                  |j                  j                        }|j                  j                  d      |_
        t        j                  |j                  j                        }i }|j                  j                  j                         j                  D ];  }|j                  j                  |k(  }t        |j                  |   ||         ||<   = t        |t              j                   }t#        j$                  ||       y )	N1/1/2000
12/31/2004r8   r   r   r   r   r   )r   r   r;   r   rI   r   r
   rC   r  	dayofyearrD   	droplevelasarrayr   rB   r   rs   rG   rH   )r?   rngrJ  rd   doyrR   rm   masks           r   
test_dailyzTestPivotTable.test_daily  s    \<BIIc#h's3bM8J8J
  11!4jj++,%%'.. 	CA88==A%D 4D	BHQK	C XU355
fh/r   c                    t        ddd      }t        t        j                  t	        |            |      }t        t        |      |j                  j                  |j                  j                        }|j                  j                  d      |_
        t        j                  |j                  j                        }i }|j                  j                  j                         j                  D ];  }|j                  j                  |k(  }t        |j                  |   ||         ||<   = t        |t              j                   }t#        j$                  ||       y )	NrQ  rR  r   r   r   r   r   r   )r   r   r;   r   rI   r   r
   rC   r  r{   rD   rT  rU  r   rB   r   rs   rG   rH   )r?   rV  rJ  rd   r{   rR   rm   rX  s           r   test_monthlyzTestPivotTable.test_monthly  s    \=BIIc#h's3Yr]"((--X11!4

288>>*%%'.. 	EA88==A%D 4dDHQK	E XU355
fh/r   c                 "   ddd}t        |dgt        |j                               |      }t        |dg|j                         |      }t        j                  ||       d |D        }t        |dg||      }t        j                  ||       y )Nr]   rF   r  r5   )rC   rB   r^   c              3       K   | ]  }|  y wr   r   ).0r  s     r   	<genexpr>zGTestPivotTable.test_pivot_table_with_iterator_values.<locals>.<genexpr>  s     2E%2s   )r   ra   r  rG   rH   )r?   r@   aggspivot_values_listpivot_values_keysagg_values_genpivot_values_gens          r   %test_pivot_table_with_iterator_valuesz4TestPivotTable.test_pivot_table_with_iterator_values  s    ('d499;&7
 (diik4
 	/1BC2T2&nd
 	.0ABr   c                 ,   d}t        g dg dg dd      }|j                  ddd|d	d
g      }t        dd|gd      }ddd	d|fddd
d|fg}t        j                  |g d      }t        |j
                  ||      }t        j                  ||       y )NWeekly)baconcheeserh  ri  )r   r   g	@gffffff
@)r   r   rs   rs   )r  costr  r  r  TrF   max)rC   rD   r   r  r^   rh  ri  r   )rF   rj  r   )rF   rj  rs   rj  )rk  rj  r   )rk  rj  rs   )NNr  r}   r   )r
   r   r   r   r~   rB   rG   rH   )r?   r  costsrP   ixtupsrq   rR   s           r   /test_pivot_table_margins_name_with_aggfunc_listz>TestPivotTable.test_pivot_table_margins_name_with_aggfunc_list  s    >,-
 !!%UO " 
 GX|46B"!V\*! FL)
 %%d2EFU\\TB
eX.r   c                 p   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d	d|d      }t        j                  ||       y )Nr  r   r3   rk   r   r   r   rX   r*  r  r   r   r   r   r   r   rm   r   rn   rl   Tr   r   )	r
   r;   r   r   rC   rD   r   rG   rH   )r?   rE   rc   rR   rP   s        r   test_categorical_marginsz'TestPivotTable.test_categorical_margins  s    ))A,RYYq\Q%6RYYq\A=MN
 o{KHI}37 S9sCXtL
eX.r   c                 T   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                  j                  d      |_        |j                  j                  d      |_        d}t        j                  t        |      5  |j                  dd	d|d      }d d d        t        j                  |       y # 1 sw Y    xY w)Nr  r   r3   rk   rq  rr  rs  rt  rm   r   rn   r`   r   r   rl   Tru  )r
   r;   r   r   rC   rD   rm   rb   rn   rG   r   r   r   rH   )r?   rE   rc   rR   r   rP   s         r   !test_categorical_margins_categoryz0TestPivotTable.test_categorical_margins_category,  s    ))A,RYYq\Q%6RYYq\A=MN
 o{KHI}37 S9tt{{:&tt{{:&A''SA 	QNN3S4NPE	Q
eX.	Q 	Qs   (DD'c                     t        g dg dg dg dd      }t        |dd      }t        g d	g d
g ddt        g dd            }t        j                  ||       y )N)r3   r   r*  r  )r   r   rX   r  )r   r   r   r*  )rM  rM  rN  rN  r  r8   T)rC   r   )r   r   rX   )r   g      @r   )r   r   r   r   )rM  rN  r   r   r   r
   r   r   rG   rH   r?   rc   rd   rR   s       r   test_margins_casted_to_floatz+TestPivotTable.test_margins_casted_to_float<  s^    !!!)	
 RsD9oOL)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      }|j                  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                  ||       |j                  d
d|      }t        ddgg|t        dg            }t        j                  ||       y )Nr   r   r5   r6   r   r   r*  )InColValr~  r  r  )rC   rD   rB   rE   )r   rL   r   r   )r@   rD   r   )rD   rB   rE   r   )r@   rD   rC   )r;   r   r
   r	   r   r   r!   CategoricalIndexr   rC   rG   rH   )	r?   rE   r   r  r   rc   rd   expected_colsrR   s	            r   test_pivot_with_categoricalz*TestPivotTable.test_pivot_with_categoricalN  s=   vvufeRVV4vvsC-!#5&/7S"3C:wOQ{
 eh   
 ++S#JeTC=2663-"@-XUFOWU

 	fh/ ehO*}E5'N
 	fh/r   c                    t        g dg dg dd      }|d   j                  d      |d<   d}t        j                  t        |      5  |j                  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                  |       y # 1 sw Y   xY w)N)r5   r6   r7   r7   r   r   )r   r!  Vr   r`   r   r   r  r!  count)rC   rD   r   r^   r   Fr   r   rL   rh   ri   r   r   r   r3   r   r   )r
   rb   rG   r   r   r   r!   r  r   r;   r  r   rH   )	r?   rE   rc   r   rd   r   r   expected_datarR   s	            r   test_categorical_aggfuncz'TestPivotTable.test_categorical_aggfuncq  s    '/C,W
 d8??:.4A''SA 	^^4h $ F	
 ,,T
 !#s$71a&1a&1a&!9J9I
 	fh/	 	s   
C((C1c                    t        g dg dg dd      }g d}|d   j                  d      j                  j                  |      |d<   |j	                  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                  ||       y )N)r+  r     )Januaryr  r  )r6  r7  r6  )Salesr  r  )r  FebruaryMarchAprilMayJuneJulyAugust	SeptemberOctoberNovemberDecemberr  r`   r  r  r]   )rB   rC   rD   rE   r^   r6  r7  r   r=  Fr  i@  r  r   r4   r   r  )r
   rb   r   set_categoriesr   r   r!   r  r.  rG   rH   )	r?   rE   rc   monthsrd   r   r   r  rR   s	            r   %test_categorical_pivot_index_orderingz4TestPivotTable.test_categorical_pivot_index_ordering  s    (:*

 k((488GGO7   
 !$F'J,,vu7
 sAx"}49I
 ||YK0H
fh/r   c                    t        g dg dg dd      }|j                  dddgd	      }t        j                  g dg dgddg
      }t        g d|dg      }t	        j
                  ||       |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
                  ||       |j                  dddg	      }t        j                  dgdgg      }t        g dt        g dd      |      }t	        j
                  ||       y )N)r   r   rX   )r7   r8   r9   )r   r   r   rY   rZ   r\   r[   r]   rr   r}   r   r  r   r   rX   r   )	r
   r   r   r#   rG   rH   r;   r   r   )r?   rc   rd   r   rR   s        r   test_pivot_table_not_seriesz*TestPivotTable.test_pivot_table_not_series  s=   
 	?IVWvv.>N""I#?PVGWXYa&B
fh/ffeT 2661bff"57JK	//7
 	fh/fugF""UGfX#67YeIF.KUVW
fh/r   c                     d}t        dg dit        dgt                    }t        |dgt        d|      }t        dd	d
|gdd      }t        |g       }t        j                  ||       y )Nu   Δοκιμήr,   ro   r   r   T)rC   r^   r   r  r   r3   r   rp  r=  r   )r
   r   rp  r   rI   rG   rH   )r?   greekframerP   rC   rR   s         r   test_pivot_margins_name_unicodez.TestPivotTable.test_pivot_margins_name_unicode  sm    65),eUG66RS%#t%
 q!Q&hUC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|      j	                  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|      j	                  d      }t        j                  ||       y ) Nr+   r.   r4   r   r5   r6   r]   r  r7   r/   r0   r   r   ro  r$  r  )r-   r,   r   r&  ))r7   r/   )r7   r0   r   rF   r   )r   r   r   r   rt  )NNr6   r   r   r   g@))rF   r7   r/   )rF   r7   r0   )r]   r7   r/   )r]   r7   r0   )r
   r   r   r   r  rG   rH   )r?   r@   rd   r  rR   s        r   test_pivot_string_as_funcz(TestPivotTable.test_pivot_string_as_func  sA     2Y7
@ Tc5IEE5>*Aq6Aq62B4QT+
 #%b1SUAVW
 +c
 	 	fh/TcE6?SFOcUUEN;|<#

 .1$&?.1:K&L-/%;-.r%:	 
 +c
 	 	fh/r   z
f, f_numpyr  c                 B   |j                  d      }t        |dd|      }t        |t              rdj	                  |      n|}d| d}t        j                  t        |	      5  t        |dd|      }d d d        t        j                  |       y # 1 sw Y    xY w)
Nr7   r   r5   r6   r  |zusing DataFrameGroupBy.[]r   )	r  r   
isinstancera   joinrG   r   r   rH   )r?   r   f_numpyr@   rd   opsr   rR   s           r   test_pivot_string_func_vs_funcz-TestPivotTable.test_pivot_string_func_vs_func  s     yyy%Tc1E'40chhqka(Q/''SA 	R"4sCQH	R
fh/	R 	Rs   &BBc           	          G d dt         j                        }|j                         5 }|j                  t         d|       t	        t        j                  d      t        j                  d      dd      }d}t        j                  t        |      5  t        j                  t        d	      5  |j                  d
ddd       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nc                         e Zd Zd fdZ xZS )STestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstackerc                 8    t        |   |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__3  s!     $1&1 =>>r   )returnN)__name__
__module____qualname__r  __classcell__)r  s   @r   MockUnstackerr  2  s    ? ?r   r  
_Unstackeri   r   )ind1ind2r  z$The following operation may generater   r  r  r  r  r,  )reshape_libr  contextsetattrr
   r;   r   rG   r   r   rx  ry  r  r   )r?   monkeypatchr  r   rc   r   s         r   -test_pivot_number_of_levels_larger_than_int32z<TestPivotTable.test_pivot_number_of_levels_larger_than_int32.  s    	?K22 	?   " 	aIIk<?5)299U3CaPB 9C++,>cJ ]]94QR NN$fWg # 	 	  	 	s<   A*C7C+0CC+C7C($C++C4	0C77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|	j                  d      }	t        j                  ||	       y )N)applepeachr  )r   r   r3   )r   r*  r*  )fruitsizetastec                      y)Nr   r   r   s    r   ret_onez?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_oneO  s    r   c                     t        |       S r   )r]   r   s    r   ret_sumz?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_sumR  s    q6Mr   c                 "    t         j                  S r   )r;   r   r   s    r   ret_nonez@TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_noneU  s    66Mr   r  rD   r^   r   r   r   r  r*  )r  r  r  r  r  r}   r  r  r   rD   r  )	r
   r   r;   r   r   from_productr   rG   rH   )
r?   r   rc   r  r  r  rd   r@   r   rR   s
             r   test_pivot_table_aggfunc_dropnaz.TestPivotTable.test_pivot_table_aggfunc_dropnaE  s    4!"
			 '8W)Ef
 Arvvrvvq!,r1bffbffa.KL%%/'71CD/
 T&'):CHI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|j                  d      }t        j                  ||       y )N)r/   r0   r/   r   r3   r   )r5   rl   rm   r5   rF   r  r   r/   r0   r   rl   rm   r   rD   r  )r
   r;   r   r   r   r   rG   rH   )r?   r   rc   rd   r@   r   rR   s          r   &test_pivot_table_aggfunc_scalar_dropnaz5TestPivotTable.test_pivot_table_aggfunc_scalar_dropnah  s    'q"&&!nArvvrvvCVW
 RfVLbff266{+UEN-T#sSAI6H
fh/r   r   c                     t        g dg dg dg dd      }|j                  dddt        j                  |	      }t	        g d
      }t        t	        g dd      |      }t        j                  ||       y )N)r3   r3   r   r   r3   )rX   r*  r   r  r   )prj  rj  r  rj  )NNNNN)r5   idr7   r8   r5   r8   r  r   r   r   r=  r   )r
   r   r;   r  r   rG   rH   )r?   r   rc   rd   exp_colsrR   s         r   test_pivot_table_empty_aggfuncz-TestPivotTable.test_pivot_table_empty_aggfuncy  sv     $%.3	
 s4'   
 #&57#ExX
fh/r   c                     d }t        g dg dg dd      }t        j                  t        d      5  |j	                  ddd	|
       d d d        y # 1 sw Y   y xY w)Nc                 ,    t        j                  |       S r   )r;   rF   )arrs    r   rN   z=TestPivotTable.test_pivot_table_no_column_raises.<locals>.agg  s    773<r   r   rt  )r   r&  r4  (   )rM  rN  Z
notpresentr   rM  rN  )r^   )r
   rx  ry  r  r   )r?   rN   rc   s      r   !test_pivot_table_no_column_raisesz0TestPivotTable.test_pivot_table_no_column_raises  sV    	  \CSTU]]8<8 	@NN<c3N?	@ 	@ 	@s   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   j                  t        j                        |d<   |d   j                  t        j                        |d<   t        j                  ||       y )Nr  r  r  r  r  r  r8   r9   r5   r7   rF   )rQ  rk  rF   r  )rB   rC   r^   ))r8   rF   r9   rk  )r9   rF   r9   rQ  ))r-   r  )r-   r  )r,   r  )r,   r  r}   )r        "@g      @r   )r  r  g      !@r   )r   r   r   r   )g["8@r   g.UUU@r   r  r  r  )
r
   r   r   r~   r;   r  rb   r   rG   rH   )r?   rc   rP   rq   rC   valsrR   s          r   0test_pivot_table_multiindex_columns_doctest_casez?TestPivotTable.test_pivot_table_multiindex_columns_doctest_case  s     TT
 10
( :* '=>	
 %%F
 &&T*
 xx$$$2	
 T4u=!),!7!>!>rxx!H!),!7!>!>rxx!H
eX.r   c           	      f   t        g dg dg dg dd      }|j                  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                  ||       y )N)d1d4d3rg   )   r  "   )2018r  2019)rh   r   numr  rh   r   r  r  r]   F)rC   rD   rB   r^   sortr  r  r  r  r  r   r}   r  )	r
   r   r;   r   r   r   r#   rG   rH   r{  s       r   test_pivot_table_sort_falsez*TestPivotTable.test_pivot_table_sort_false  s    '&#0	
 ,ueRW   
 "&&\B<"&&"666*8((#_5c5\
 	fh/r   c           	         t        dddgt        ddgd      d      }|j                  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                  ||       y )Nr5   r   r3   r   r4   Int64r   )rh   ri   salesri   rh   Tr]   r  r  r`  r   r  r5   r  r   r}   rC   rD   r   )r
   r   r   r   r   r~   rG   rH   r{  s       r   !test_pivot_table_nullable_marginsz0TestPivotTable.test_pivot_table_nullable_margins  s    QFVRHG-LM
 c3eT"XBx"b*C0**!124+ 
 	fh/r   c           	          t        ddgddgddgddgd	      }|j                  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
                  ||       y )NJohnMichaelFooBar      /   r  )	firstnamelastnameheightager  r  r  r  F)rC   rB   r  g     e@g     G@g     f@g     @@)r  r  )r  r  r}   r  )r
   r   r   r~   rG   rH   r{  s       r   0test_pivot_table_sort_false_with_multiple_valuesz?TestPivotTable.test_pivot_table_sort_false_with_multiple_values  s    $i0"EN*Bx	
 {+Xu4EE   
 T]UDM*u%(( "45!;/
 	fh/r   c                 .   t        g dg dg dg dg      }g d|_        |j                  dddd	d
d      }t        g dg dg dg      }g d|_        g d|_        d|j                  _        d|j                  _        t        j                  ||       y )Nrh   rl   r   rh   rm   r3   ri   rm   r   ri   rn   r   )r   r&  r4  r   r&  r4  r]   r   TrC   rD   rB   r^   r_   r   r   r3   r   r   r   r   r   r   r   rX   r   r   rl   rm   rn   r   rh   ri   r   )r
   rD   r   rC   rL   rG   rH   r{  s       r   1test_pivot_table_with_margins_and_numeric_columnsz@TestPivotTable.test_pivot_table_with_margins_and_numeric_columns	  s    }m]ST!
bUqRV   
 lL-HI1* " 
fh/r   r   c                     t        ddt        ddgd      d      }|j                  dd	d
d|      }t        dggt        dgd      t        dgd	      d      }t	        j
                  ||       y )Nrh   ri   r&  r  r  r   )rl   rm   r  rl   rm   r  rF   )rC   rD   rB   r^   r   r4  r   Float64r  )r
   r   r   r   rG   rH   )r?   r   rc   rd   rR   s        r   test_pivot_ea_dtype_dropnaz)TestPivotTable.test_pivot_ea_dtype_dropna	  s~     Ss62r('3RS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  |j                  dd	gd
dd      }d d d        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                  |       y # 1 sw Y   xY w)Nr5   r   r3   z
2019-12-31g      $@r4   )rh   ri   r   r  ri   r   rh   Tr]   r  r  g      5@r`  r   r  r=  r  r  r}   r   )r
   r!   r-  rG   r   r   r   r#   r   rp  r~   rH   r{  s       r   !test_pivot_table_datetime_warningz0TestPivotTable.test_pivot_table_datetime_warning%	  s   V\2	
 ''- 	^^FmS$ $ F	 D\D$<$6((-c2l3R\\,5OQST$#	 **!124+
  	fh/)	 	s   C??Dc                 z   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   j                  d      |d<   t        j                  ||       y )Nr  r  r  r  r  )r5   r6   r7   r8   r9   )col5)col6r*  r   sevenr8   r5   r6   r  r]   r  r   r   r   r   r   r  r  r   )r-   r-   r,   r,   r/   r0   r3   r}   r  r   )
r
   r   r;   r   r   r   r#   rb   rG   rH   )r?   r1  rc   rd   rR   s        r   )test_pivot_table_with_mixed_nested_tuplesz8TestPivotTable.test_pivot_table_with_mixed_nested_tuplesE	  s    TT
 10


M13
h s3*|ne
 3Z#sc3Z"&&#?7G,<@((-u~/AB3PS*
  ( 1 8 8 AHW
fh/r   c                 8   t        t        d      t        d      t        d      t        d      d      }t        j                  t        d      D cg c]  }d c}t        d      D cg c]  }d c}t        d      gd      }t	        j
                  dt        j                        }t	        j                  |d       t        |t        t        d      d	
      |      }|j                  d	gdgdgdg      }t        j                  ||       y c c}w c c}w )Nr   r   nuniquerj   )NNri   r}   )r   r   r   rh   r   r   ri   r,  )r
   r   r   r#   r;   fullr   fill_diagonalr   r   rG   rH   )r?   testr   	columnvalnparrrR   rd   s          r   6test_pivot_table_aggfunc_nunique_with_different_valueszETestPivotTable.test_pivot_table_aggfunc_nunique_with_different_values	  s   2Y2Y2Y2Y	
 **$)"I.q.#Bi((b	
 $
	 "&&)
$U%b	*DiX!!   K " 
 	fh// /(s   	D)	D
)ar  r  r  rx  fixturer@   rS   re   rv   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r
  r  r  r(  r4  rE  rU  r\  rb  r;   r  r   r   rr  ru  r{  xfailr  r  r  r  r  r   r~   r  r  r  r  r  r  r  r	  r  r  r  r  r   r$  r2  r7  rK  rO  rY  r[  re  ro  rv  rx  r|  r  r  r  r  r  r  r]   rF   r  r  slowr  r  r  r  r  r  r  r  r  r  r  r  r  r%  r   r   r   r)   r)   ,   s   ^^.
 .
`/806
&#/J0 0@!0F0<0180
0
/!1F [[x*+3434	
"",(\002 [[Xe}5X 6X6 [[Xe}5, 6,6 [[Xe}5=, 6=,~50n [[Xe}5+, 6+,Z00 [[ENBHHeU^$E5>"5%.!		
 [[Xe}50 606 [[ENBHHeU^$E5>"5%.!		
 [[Xe}5 0 6 0D2 [[S   [[Xe}5$0 6$0L [[Xe}5P 6P, Cj=2B2/0 [[4 %';<2=	 c
), '
&& *
	
<"0=<"0H000& [[V%MN0 O02@*/$17f08A7A [[]UE3sCj,QR# S#JVp}2~Y0vY0v0$0C&/<// 0$!0F0,*0X08	/<0| [[BFFORWWBFFOV_rvvrww/0U^bffbff-.V_rvvrww/0	

	0
	0 [[ ,!0F0" [[Yu60 70"@2/h0,0"0,0" [[Xe}50 600@C0J#0r   r)   c                      e Zd Zd Zd Zd Zej                  j                  de	dg      d        Z
d Zd Zd	 Zej                  j                   e       d
      d        Zej                  j                   e       d
      d        Zej                  j                   e       d
      d        Zd Zd Zd Zd Zy)	TestPivotc                    g dg dg dd}t        |      }|j                  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 |j                  dd      }|j                  j                  dk(  sJ |j                  j                  dk(  sJ y )Nr5   r6   r7   r7   r6   r5   Oner0  r0  Twor1  r1  r   r   r   r   r   r   r   rC   rD   rB   r   r   r   r   r0  r1  r   NrD   )r
   r'  rC   rL   rD   rG   rH   rJ   )r?   r@   r  r  rR   s        r   
test_pivotzTestPivot.test_pivot	  s    3A4
 $++GYx+P s5 s5
 6H2X--2
gx0 }}!!W,,,##y000 ++GY+?}}!!W,,,$$(9999r   c                     t        g dg dg dd      }t        j                  t        d      5  |j	                  ddd	
       d d d        y # 1 sw Y   y xY w)N)r-   r-   r,   r,   r,   )r/   r0   r/   r/   r0   )r   r   r   r   r   rg   zduplicate entriesr   rh   ri   rj   r   )r
   rx  ry  r#  r'  )r?   r@   s     r   test_pivot_duplicateszTestPivot.test_pivot_duplicates	  sR    88.
 ]]:-@A 	;JJS#cJ:	; 	; 	;s   AAc                     t        g d      }|j                  ddd      }t        g g       }t        j                  ||d	       y )
Nrg   r   rh   ri   rj   r   r   Fr  )r
   r'  rG   rH   r{  s       r   test_pivot_emptyzTestPivot.test_pivot_empty	  s>    /S=2r2
fhEBr   r   stringc                     t        ddg|      }|j                  ddd      }t        j                  |j                  t        dd	gd|
             y )N)r5   r  A1)r6   r  B2)r@   r   r   r   r3   r   r5   r6   r=  )r
   r'  rG   r   rD   r   )r?   r   rc   rd   s       r   test_pivot_integer_bugz TestPivot.test_pivot_integer_bug	  sJ    -/?@N1Q7
fnneS#JQe.TUr   c                    g dg dg dd}t        |      j                  d      }|j                  dd      }t        d	d
ddd	d
ddd      }d\  |j                  _        |j
                  _        t        j                  ||       |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
                  j                  d      |_        |j                  dd      }d|j
                  _        t        j                  ||       y )Nr.  r/  r2  r   rC   rD   rB   rD   rB   r   r   r   r   r3  r   r   )rB   r0  )rB   r1  r}   Fr  r4  r   )r
   rR  r'  rC   rL   rD   rG   rH   r   r~   rJ   rT  )r?   r@   r  rd   rR   s        r   test_pivot_index_nonezTestPivot.test_pivot_index_none	  s[    4A4
 $))'2Yx@ s5 s5
 6H2X--2
fh/ Y/%11 124:K
 &
fhEB||  G+++~~##'8888#++55a8Yx@ )
fh/r   c                    t        g dg dg dg dg dd      }ddg}d	g}|j                  ||
      }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 y )N)r   r   r   r3   r3   r3   )r   r   r3   r   r   r3   )r   r3   r   r3   r   r3   rh  r  )lev1lev2lev3lev4rB   rC  rD  rE  r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r3   r   r3   r}   )rF  rF  rB   rB   )	r
   r'  r;   r  r   r   r#   rG   rH   )r?   rc   rC   rD   rd   rR   s         r   0test_pivot_index_list_values_none_immutable_argsz:TestPivot.test_pivot_index_list_values_none_immutable_args

  s   ****,
  (w7HH("&&#rvv.(VVS"&&#.	 ((|,VV4D **5|DVn
$ 	fh/((((6("""r   c                     t        dgdd      }t        j                  t        d      5  |j	                          d d d        y # 1 sw Y   y xY w)Nr   r  z(missing 1 required keyword-only argumentr   rw  )r?   rc   s     r   test_pivot_columns_not_givenz&TestPivot.test_pivot_columns_not_given0
  s@    aSq)*]]9,VW 	HHJ	 	 	s   AAzNone is cast to NaNr|  c                    t        dgddd      }|j                  d       }t        dgdd      }t        j                  ||       |j                  d d      }t        d	dit	        dgd
            }t        j                  ||       |j                  d dd      }t        ddit	        dgd
            }t        j                  ||       y )Nr   r3   r   Nri   rj   r   ))ri   r   rj   r   ri   r  rL  r   r   rj   rD   rC   rB   )r
   r'  rG   rH   r   r{  s       r   test_pivot_columns_is_nonez$TestPivot.test_pivot_columns_is_none6
  s     qc23$'q9:
fh/$c2h]%#2FG
fh/$c#>aV5!3+?@
fh/r   c                 F   t        dgddd      }|j                  dd       }t        ddidg      }d dg|j                  _        t	        j
                  ||       |j                  dd d	
      }t        ddgt        dgd            }t	        j
                  ||       y )Nr   r3   r   rK  ri   r  )rj   r3   r   rj   rM  r   r   )r
   r'  rD   rJ   rG   rH   r   r{  s       r   test_pivot_index_is_nonez"TestPivot.test_pivot_index_is_noneF
  s     qc23#T2h]1#6"&
fh/#T#>Qqc5!33GH
fh/r   c                 L   t        dgddd      }|j                  ddd       }t        dt        dgd      t        dgd      	      }t        j                  ||       |j                  dd 
      }t        ddgt        dgd      	      }t        j                  ||       y )Nr   r3   r   rK  ri   rj   rM  r   r   r@  r   )r
   r'  r   rG   rH   r{  s       r   test_pivot_values_is_nonez#TestPivot.test_pivot_values_is_noneT
  s     qc23#S>UA3S)5!33G
 	fh/#d3Qqc5!33GH
fh/r   c                     t        dgddd      }|j                  d      }|j                  ddd	
       t        j                  ||       y )Nrh   r   r   )r/   r0   threeT)deepr/   r0   rT  r   )r
   r  r'  rG   rH   )r?   rc   rR   s      r   "test_pivot_not_changing_index_namez,TestPivot.test_pivot_not_changing_index_namec
  sG    uQ;<777%
ueG<
b(+r   c                     t        g g d      }|j                  dddd      }t        g dd	      }t        j                  |j
                  |       y )
N)rh   ri   r  r   rh   ri   r  r  r,  rp  r=  )r
   r   r   rG   r   rD   r?   rc   r'  rR   s       r   .test_pivot_table_empty_dataframe_correct_indexz8TestPivot.test_pivot_table_empty_dataframe_correct_indexj
  sG    r#67S#gwW8#6
emmX6r   c           	         t        dddddddddd	d
dg      }t        j                  |d         |d<   t        j                  d      5  |j                  ddgdgdd      }d d d        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                  |       y # 1 sw Y   xY w)Nrl   z
2023-01-01r   )rh   date_strry   rm   z
2023-01-02r3   rn   z
2023-01-03r   r[  r   Frh   ry   r]   T)rC   rB   r^   r   z2023-01-01 00:00:00z%Y-%m-%d %H:%M:%Sz2023-01-02 00:00:00z2023-01-03 00:00:00r  r}   )r
   r!   to_datetimerG   r   r   r   r~   r   strptimer   rC   rX  s       r   0test_pivot_table_handles_explicit_datetime_typesz:TestPivot.test_pivot_table_handles_explicit_datetime_typesr
  s
   |qA|qA|qA
 ^^BzN36
''. 	NNFmXJt # E	
 ))h''(=?RSTh''(=?RSTh''(=?RST	 -
 	ekk84	 	s   C,,C5c                     t        g dg dg dg dg      }|j                  dddddd	
      }t        g dg dg dgt        g dd      t        g dd            }t        j                  ||       y )Nr  r	  r
  r  r   r   r3   r]   Tr  r  r  r  r  r   r  r  rz  r{  s       r   6test_pivot_table_with_margins_and_numeric_column_namesz@TestPivot.test_pivot_table_with_margins_and_numeric_column_names
  ss    }m]STQq%At   
 <70q9)2

 	fh/r   N)r  r  r  r5  r7  r9  rx  r'  r(  rp  r>  rA  rG  rI  r)  r   rN  rP  rR  rV  rY  r^  r`  r   r   r   r,  r,  	  s    ::	;C [[Wvx&89V :V"0H$#L [[13<QR0 S0 [[13<QR0 S0 [[13<QR0 S0,7560r   r,  )'r   r   r   	itertoolsr   r  numpyr;   rx  pandas._configr   pandas.errorsr   pandasr!   r	   r
   r   r   r   r   r   r   pandas._testing_testingrG   pandas.api.typesr   pandas.core.reshaper   r  pandas.core.reshape.pivotr   r&  r   r   r'   r)   r,  r   r   r   <module>rk     s    
  	   5 , 	 	 	  - 6 1 e}% & !q1#'*U1XuQ{,CDEJ FJ
A&0 A&0HLj0 j0r   