
    .i-                        d dl mZm Z mZ d dlmZ d dlZd dlZd dlZd dl	m
Z
 d dlZd dlmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ  G d	 d
      Z  G d d      Z!y)    )datedatetime	timedelta)productN)using_string_dtype)	
ArrowDtypeCategorical	DataFrameGrouperIndex
MultiIndexSeriesconcat
date_range)CategoricalDtype)reshapepivot_tablec                   z   e Zd Zej                  d        Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zej                  j                  d
dgdz  dgdz  f ed       edd      fg      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(e!e"jF                  e$e%g      ej                  j                  dd d!g      d)               Z&ej                  j                  d*d+d,g e"jF                  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                  jS                  d/0      ej                  j                  dd d!g      d1               Z*ej                  j                  dd d!g      d2        Z+	 	 	 dd4Z,d5 Z-d6 Z.ej                  j                  d7d8d9g d:g d;g e%g d<d8=      fd8d>gd?g d@g dAg e/j`                  g dBd8d>gC      fg      dD        Z1dE Z2dF Z3ej                  j                  dGg dH      dI        Z4dJ Z5dK Z6dL Z7dM Z8dN Z9dO Z:dP Z;dQ Z<dR Z=ej                  j                  dSdTdUdVd3dWdXgg      dY        Z>dZ Z?d[ Z@d\ ZAd] ZBd^ ZCd_ ZDd` ZEda ZFdb ZGdc ZHdd ZIde ZJdf ZKdg ZLdh ZMdi ZNdj ZOej                  j                  dkdWdlidlddmddldng      do        ZPej                  j                  dki dXdpidWdiddpdmdpddng      dq        ZQej                  j                  drd?e"j                  fd9e"j                  fdse"j                  fd?d9ge"j                  e"j                  gfd?dsge"j                  e"j                  gfdtd9ge"j                  e"j                  gfg      du        ZVej                  j                  dv        ZXdw ZYdx ZZej                  j                  dyd d!g      dz        Z[d{ Z\d| Z]d} Z^d~ Z_d Z`d Zaej                  j                  dddg      d        Zbd Zcd Zdd Zed Zfej                  j                  dddde"j                  de"j                  ge"j                  de"j                  dgg e%d8d>gd       e%g dd      fddde"j                  ge"j                  dgde"j                  ge"j                  dgg e%g dd       e%d8d>gd      fgddg      d        Zhd Ziy3)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   r   r   r   r   )dullr   shinyr   r   r   r   r   r   r   r         )ABCDEF)r
   nprandomdefault_rngstandard_normalselfs    ]/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/reshape/test_pivot.pydatazTestPivotTable.data!   s}     YY**1-==bAYY**1-==bAYY**1-==bAU+-
 -	
    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 ||      d   j                  d	      j                         }t        j                  ||       y )
Nr"   r#   r$   r%   )valuesindexcolumnsobserved)r2   r3   r5      r   mean)r   tmassert_frame_equallenr3   namestuplenamer4   groupbyaggunstack)r-   r5   r/   r3   r4   tabletable2expecteds           r.   test_pivot_tablezTestPivotTable.test_pivot_tableR   s,   c
E7X
 !!eWx " 
 	eV, 	DEHEu:>;;$$e444;;##uQx///w<!==&&'111==%%333<< 1% 1 1237;;FCKKM
eX.r0   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r6   r             col1col2col3rM   rO   rN   sumr   )r3   r2   r4   aggfunc
fill_valuecategory)r3   r2   r4   rQ   rR   r5   )
r
   listr   r3   astyper4   rM   rN   r8   r9   )r-   r5   dfrC   results        r.   +test_pivot_table_categorical_observed_equalz:TestPivotTable.test_pivot_table_categorical_observed_equaln   s    ']DM?S
 >>ST " 
 "..z:#++22:>''..,''..,   
 	fh/r0   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r6   r    rI   )rowscolsr2   rd   rP   )r4   rQ   r3   rQ   r2   r7   )r
   r   Tr8   r9   )r-   rV   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"%r0   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   r6   r    rI   r"   r#   r$   i[ i] i\ i^ r[   r\   r]   di i  i@B )amountcustomermonthr   quantityro   rn   rm   r   F)dropna))r"   r[   )r"   r\   )r"   r]   )r"   rk   )r#   r[   )r#   r\   )r#   r]   )r#   rk   )r$   r[   )r$   r\   )r$   r]   )r$   rk   r;   )r
   r   r   from_tuplesr8   assert_index_equalr4   r3   )r-   rV   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.r0   c                    t        g dg dd      }t        g dg dd      }t        ||g dd      }t        |d	d
dgdd      }t        j                  ||gd
dg      }t        d	g di|      }t        j                  ||       y )Nr[   r[   r\   r\   )r[   r\   ra   T
categoriesordered)r]   rk   r]   rk   )r]   rk   r`   r6   r    rI   rJ   )r"   r#   r2   r2   r"   r#   F)r2   r3   rp   r5   rq   )      ?       @      @      @r3   )r	   r
   r   r   from_arraysr8   r9   )r-   cat1cat2rV   rW   	exp_indexrC   s          r.   test_pivot_table_categoricalz+TestPivotTable.test_pivot_table_categorical   s     _d
  _d
 TEFxSz$
 **D$<SzJ	h(<=YO
fh/r0   c                    g d}t        g dg dt        d      d      }|d   j                  t        |d            |d<   |j	                  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 )Nr[   r\   r]   rk   )	r[   r[   r[   r\   r\   r\   r]   r]   r]   )	r6   r    rI   r6   r    rI   r6   r    rI   	   r"   r#   r$   r"   Fr|   r#   r$   )r3   r4   r2   rp   r5   rZ   r=   rb   )        r         @)r~   r         @)r         @       @r3   r4   r4   float)
r
   rangerU   r   r   r   reindexr	   r8   r9   )r-   rp   r{   rV   rW   expected_columnsexpected_indexrC   s           r.   $test_pivot_table_dropna_categoricalsz3TestPivotTable.test_pivot_table_dropna_categoricals   s    )
B01X
 S'..!1*e!LM3s3v   
 "/<+22Z7
  	4o? $

 ''J0G'HOOPWXH
fh/r0   c           
      F   t        t        t        j                  ddddgddgd      g dd      }|j	                  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      d            }t        j                  ||       y )NlowhighTrz   )r   r~   r   r   r   r"   r#   r"   r#   Fr3   r2   rp   r5   r   r   r   r6   r   r   r   )r   r6   r   r   )	r
   r	   r(   nanr   r   
from_codesr8   r9   )r-   rp   rV   rW   r2   codesrC   s          r.   %test_pivot_with_non_observable_dropnaz4TestPivotTable.test_pivot_with_non_observable_dropna   s     VVUFE6: %v 
 /	
 c#fuU3ZFFE %FE&M&&u%RVW
 	fh/r0   c           
      N   t        t        g dg dd      t        d      d      }|j                  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 )N)leftr   r   r   r   )r   r   r   Trz   rK   r   r"   r#   Fr   r   r   r6   r    r   r   )
r
   r	   r   r   r   r   rU   r   r8   r9   )r-   rp   rV   rW   rC   s        r.   /test_pivot_with_non_observable_dropna_multi_catz>TestPivotTable.test_pivot_with_non_observable_dropna_multi_cat	  s     :6 
 1X	
 c#fuU/"&&*A4 	
 $SM007HSM
fh/r0   
left_rightr   rJ   r6   rI   c                 R   |\  }}t        t        j                  j                  |||            }t	        |dd      }|j                  dd|d      }t	        ddit        |j                         d      	      }	|s|	j                  t              }	t        j                  ||	       y )
Nr6   r   r"   r#   Fr   r~   r   r   )r	   pdIntervalIndexr   r
   r   r   uniquerU   r   r8   r9   )
r-   r   rp   closedr   rightinterval_valuesrV   rW   rC   s
             r.   test_pivot_with_interval_indexz-TestPivotTable.test_pivot_with_interval_index%  s    
 !e%b&6&6&B&B4PV&WX_156c#fuU#JeO$:$:$<3G
 u-H
fh/r0   c           
         t         j                  j                  g dg d      }t        t	        j
                  dddt        j                        g dt        |d	      j                  d
      d      }t        |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 )Nr   r   r6   r6   r6   r6   r    r    rJ   r   r   dtyper[   r\   r[   r\   Tr   F)	ascendingr   r$   r#   r"   rP   )r3   r4   r2   rQ   marginsr5   All)rI      
   r6   r    r   )r3   r=   r   )r   r   r   r
   r(   arangeintpr	   sort_valuesr   r   r   Intervalr8   assert_series_equal)r-   ordered_catrV   	pivot_tabrW   rC   s         r.   &test_pivot_with_interval_index_marginsz5TestPivotTable.test_pivot_with_interval_index_margins6  s    &&22<NYYq!Rrww7) d;GG# H 
  
	 5!Q*BKK1,=uECP''	
 	vx0r0   c                     |j                  d|j                  |j                        }|j                  ddd      }t        j                  ||       y )Nr%   r   r"   r$   )r   r"   r$   r8   r9   r-   r/   rW   rC   s       r.   test_pass_arrayzTestPivotTable.test_pass_arrayV  sH    !!#TVVTVV!D##CsC#@
fh/r0   c                     |j                  dd |j                        }|j                  d|j                  dz  d      }t        j                  ||       y )Nr%   c                     | dz  S )NrK    r_   s    r.   <lambda>z3TestPivotTable.test_pass_function.<locals>.<lambda>\  s
    qAv r0   r   rK   r$   )r   r$   r3   r8   r9   r   s       r.   test_pass_functionz!TestPivotTable.test_pass_function[  sM    !!#-=tvv!N##CtzzQ#L
fh/r0   c                     ddg}d}t        |||      }|j                  g ||      j                  d      j                         }t	        j
                  ||       y )Nr"   r#   r$   r   r7   )r   r>   r?   r@   r8   r9   )r-   r/   r3   r4   rA   rC   s         r.   test_pivot_table_multiplez(TestPivotTable.test_pivot_table_multiple`  s[    c
Dw?<< 1% 1 1266v>FFH
eX.r0   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   )r[   vir   int64r[   r   r   rP   )r2   r3   r4   rR   rQ   r    abr   r   )      ?      @      @      @float64r7   )
r
   dtypesr   r   r(   r   r   rT   r8   r   )r-   fra   rW   rC   s        r.   test_pivot_dtypesz TestPivotTable.test_pivot_dtypesg  s"   1!)
 xx}'''c#!U
 288G,-1tDzPS9TU
vx0 1))
 xx}	)))c#!V
 288I./!35dRU;VW
vx0r0   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 )
NrK   r   r   r    rI   )r   r   r   r   r3   r3   r4   r2   r   )	r(   r   r   r
   reset_indexr   dictr   r   )	r-   r4   r2   r   rV   df_resrW   colrC   s	            r.   test_pivot_preserve_dtypesz)TestPivotTable.test_pivot_preserve_dtypes  s     IIarzz*AGa1fqAvN
 !--76 . 
 fmm$8>?C),,??!!! @s   :B!c           	      f   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      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   r"   rH   r   r   )r"   r6   )r"   r    r6   )levelr   r   r   r    r   r   r%   rK   ns)freqperiodsunit)r"   dtr   ME)keyr   z
2011-01-31zM8[ns]rq         
@YEr   r   z
2011-12-31)r   DatetimeIndexr
   r   r3   rn   dayr   rr   
set_levelslevelsrU   r(   int32r   r   r8   r9   r   r   r   )r-   idxrV   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N 
 nn288>>7tRV;WnX ,,UB$$l^8DE,
 3KuaV288<k
 	c3'nnt$g$T.J  
 E""L>=

 	c3'r0   c                     t        |ddgdddgd      }t        |j                  dgd	
      dddgd      }t        j                  ||       y )Nr%   r&   r"   r#   r$   r   )r2   r3   r4   rR   r'   r6   axis)r3   r4   rR   )r   dropr8   r9   r   s       r.   test_pivot_multi_valuesz&TestPivotTable.test_pivot_multi_values  sZ    #s3c
q
 IIse!I$C#sPQ
 	fh/r0   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 )Nr%   r&   r"   r#   r$   r2   r3   r4   rQ   r   funcr/   s    r.   r   z;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>  s    #sC:sD
 r0   r7   stdr6   )keysr  c                 .    t        ddgddgd| d      S )Nr%   r&   r"   r#   r$   T)r2   r3   r4   rQ   r   r   r  s    r.   r   z;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>  s&    :*
 r0   )r   r8   r9   )r-   r/   r   rW   meansstdsrC   s    `     r.   test_pivot_multi_functionsz)TestPivotTable.test_pivot_multi_functions  s    
 FE?#&	x5$-vuoAF
fh/
 FE?#&	x5$-vuoAF
fh/r0   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            rZ   r[   r\   r]   r   r  r   r  r  r   r   )	r(   r   r
   pivotr   r   r8   r9   rf   )r-   r  r   rV   rW   rC   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Wr0   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   r%   )r   r   d   )r[   r]   r[   z
2014-02-02r\   )r6   r[   )rI   r[   r6   r\   )rJ   r\   r]   r   )r
   r   r(   r   r   	Timestampr   locr  notnar2   rP   r:   iterrowsr8   r9   rf   )r-   r  rV   pv_rowrW   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+r0   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  r6   r   r   r    zM8[z, US/Pacific]r     z, Asia/Tokyo]rJ   r   )dt1dt2data1data2r2  r2  r3  r3  z2014/01/01 09:00z2014/01/02 09:00r1  r=   r   z2013/01/01 09:00z2013/01/02 09:00r0  r   r    r   r    r6   rI   r6   rI   r   rI   r2  r   )r
   r   r   r   r(   r   r   r   r   r  r8   r9   )
r-   r  r   rV   exp_col1exp_col2exp_colexp_idxrC   r)  s
             r.   test_pivot_with_tzz!TestPivotTable.test_pivot_with_tz)  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(+r0   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-0700rB  c                 *    | j                  ddd      S )Nr   )hourminutesecond)replacer   s    r.   r   z8TestPivotTable.test_pivot_tz_in_values.<locals>.<lambda>  s    199!Aa9#H r0   rA  minr
  r   z2016-08-12 00:00:00z2016-08-25 00:00:00r   )r
   r   r%  	set_indexr   rB  mapr   r   r   r8   r9   )r-   rV   minsrW   rC   s        r.   test_pivot_tz_in_valuesz&TestPivotTable.test_pivot_tz_in_valuesi  su     ,,'AlS
  ,,'AlS
  ,,'AlS
  ,,'AlS
  ,,'AlS#
2 \\$++-uuyyHILL**,'F
  LL!;MLL!;M U+$$LL!6<HLL!6<H 
  	fh/r0   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-01r%   z
2013-01-02z2013-01Mz2013-02rJ   r   r   )p1p2r2  r3  r4  r    rP  )r=   r   r6  r7  rO  r   r   r6   rI   r2  r   )r
   r   Periodr(   r   r   PeriodIndexr   r   r  r8   r9   )r-   r  rV   r8  r9  r:  rC   r)  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(+r0   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~   )r[   r\   r_   r6   r    r   r[   r   r   r\   r/   r3   r4   r_   T)r3   r4   r2   r   )r
   r   rQ  r   r   r8   r9   )r-   rV   rC   rW   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/r0   boxc                     |ddg      }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bazzoor   r   r   r   r   r   r"   r#   r$   r"   r#   r$   r6   r    rI   rJ   rK   r"  r_   r`   ra   qwtr   r   r\  r]  r   r   r   )r6   r    rI   r_   r`   ra   )rJ   rK   r"  rb  rc  rd  r   r   r/   r=   r   )r   r   r   r6   r6   r6   )r   r6   r    r   r6   r    r   r   r;   rX  )	r
   r  r   r   r   rU   objectr8   r9   )
r-   rZ  r  r2   rV   rW   r/   r3   r4   rC   s
             r.    test_pivot_with_list_like_valuesz/TestPivotTable.test_pivot_with_list_like_values  s     eU^$A5)5	
 XXE5XHFXXbuVLF(*BCE5>6ENO4%'9:-

 $eWE"5/008
fh/r0   r2   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 )Nr^  r_  r`  ra  re  r]  r   r   r"   rJ   r$   r"  r#   rK   r6   r    rI   )rb  rd  rc  r_   r`   ra   rf  r   r\  r   r   r   r   r6   r   r6   rg  rX  )r
   r  r   r(   r   r   r   rU   rh  r8   r9   )	r-   r2   r  rV   rW   r/   r3   r4   rC   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/r0   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)	NrZ   rb   rL   z=pivot\(\) missing 1 required keyword-only argument: 'columns'matchrM   rO   )r3   r2   r
   pytestraises	TypeErrorr  )r-   rV   msgs      r.   #test_pivot_columns_none_raise_errorz2TestPivotTable.test_pivot_columns_none_raise_error0  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   r6   r    rI   rJ   rK   )r/   )r   r"   r6   r_   )r   r#   r    r`   )r   r$   rI   ra   )r   r"   rJ   rb  )r   r#   rK   rc  )r   r$   r"  rd  r   r\  firstrF  r   rk  )r   r   rh  )r/   r3   r4   r   )r   rz  )r   rF  )r\  rz  r   r6   rJ   r   r   r   r    rK   rI   r"  r   )r   r   r
   r  r   r   r8   r9   )r-   r  r3   r/   r4   rV   rW   rC   s           r.   test_pivot_with_multiindexz)TestPivotTable.test_pivot_with_multiindex7  s     -.      
 ENWh$78.
 DwhOXX&)'  F XX&)'	F Auen5Auen5Auen5

 T?
fh/r0   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)Nr^  r_  r`  ra  re  z^\('bar', 'baz'\)$rn  r]  r   )r   r\  r   )r
   rq  rr  KeyErrorr  r   )r-   r  rV   s      r.   test_pivot_with_tuple_of_valuesz.TestPivotTable.test_pivot_with_tuple_of_valuesa  sp     A5)5	
 ]]8+@A 	PueNK5%O	P 	P 	Ps   1A..A7Nc                 <   |ddg}|dg}|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"   r#   r$   r   Fcheck_names )	r&  r3   r>   r7   r8   r   r=   
sort_indexiloc)r-   rW   
values_colr/   r3   r4   margins_colcol_marginsexpected_col_marginsindex_marginsexpected_ix_marginsgrand_total_marginsexpected_total_marginss                r.   _check_outputzTestPivotTable._check_outputs  s3    =#JE?eG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"&<<<<r0   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 )Nr%   r"   r#   r$   Tr7   )r2   r3   r4   r   rQ   Totals)r2   r3   r4   r   rQ   margins_name)r  r3   r4   r   rQ   r   )r   r  r4   r   )r-   r/   rW   rA   	value_cols        r.   test_marginszTestPivotTable.test_margins  s    !!sCj#tV " 
 	63- !!*! " 
 	63(C   *c4 ! 
 --a0 	BIuY/DA	Br0   c                    |j                   D cg c]  }|dz  	 c}|_         t        j                  d      }|r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)Nr    &agg function failed [how->mean,dtype->-dtype 'str' does not support operation 'mean'rn  AABBTr7   )r3   r   rQ   CCr   r   r  )DDEEFF)
r4   reescaperq  rr  rs  r   r  r&  r7   )	r-   r/   using_infer_stringkrt  rA   r  totalsitems	            r.   test_no_colzTestPivotTable.test_no_col  s    (,||4!A4ii@AAC]]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,1E8,E58Fz*columns, aggfunc, values, expected_columnsr"   r7   )      @r  皙@r  )r   r   皙@r  )r   r   r   r   r   r#   rP   )r         rK   r"  r!   )          r!   r!   r  ))r   r   )r   r   )r   r   )r   r   )r   r   )r   r   rq   c                    t        g dg dg dg dg dd      }|dk7  rQt        j                  d      }|r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   r   r   r   r   r   r   	smalllarger  r  r  r  r  r  r  	r6   r    r    rI   rI   rJ   rK   r"  r   	r    rJ   rK   rK   r"  r"     r   r   r"   r#   r$   r%   r&   rP   r  r  rn  T)r4   r   rQ   r#   r   r$   r%   r&   r   )r
   r  r  rq  rr  rs  r   r  r   r8   r9   )
r-   r4   rQ   r2   r   r  rV   rt  rW   rC   s
             r.   %test_margin_with_only_columns_definedz4TestPivotTable.test_margin_with_only_columns_defined  s    D TT
 10
& e))DEC!E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<   g t        t        ddgddg            d}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 )NrI   i8)r%   r&   r'   r   r   r   r   r  r   rq   )      rI   r   -   )!   r   $   3   x   r   r   r   r$   r6   r  r   r   r   r%   r"   r#   TrP   r   r2   r3   r4   r   rQ   rR   )copyr(   r   r:   r   rU   rT   r   r   rr   r
   rename_axisr   r8   r9   )r-   r/   rV   mi_valmirC   rW   s          r.   test_margins_dtypez!TestPivotTable.test_margins_dtype  s     YY[ iiB!4<<SWaHOOPTU?N4?@N+N##F*='2FGr

+c+
" 	 #6*Xg->>*   
 	h/r0   c                 8   g t        t        ddgddg            d}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   r   r  r   rq   )r6   r6   r    r6   rK   )r    r   r    r    r"  r  r   r$   r6   r  r   r   r   r%   r"   r#   Tr   r  )
rT   r   r   rr   r
   r  r   r:   r8   r9   )r-   r/   r  r  rC   rW   s         r.   test_margins_dtype_lenz%TestPivotTable.test_margins_dtype_len  s    N4?@N+N##F*=$?r

+c+
" 	 #6*Xg->>!!* " 
 	h/r0   rd   ))r6   r    r[   r\   r$  )r[   r6   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|d
k(  rdnd            }t        j                  ||       y )Nr   rb   r6   r   )rJ   rK   r"  )r2   r4   )r   r   r   ))r6   r6   )r    r    )rI   rI   rq   r  strrh  r   r4   r3   )r
   r   r   rr   r   r8   r9   )r-   rd   df2rW   rC   s        r.    test_pivot_table_multiindex_onlyz/TestPivotTable.test_pivot_table_multiindex_only2  s}     a)T!WiiPQT:**+C4Pdj.@UhO
 	fh/r0   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-01rI   zEurope/Amsterdam)r   r@  r    r   r#   r$   F)r3   rp   r6   )
r   r
   r(   r)   r*   r+   r   r3   r   equals)r-   dtirV   rW   s       r.   test_pivot_table_retains_tzz*TestPivotTable.test_pivot_table_retains_tz@  s    q5GHYY**1-==a@YY**1-==a@
 sCj? ||""1%,,S111r0   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~   rJ   )r   r6   rI   r    )r2   r3   r4   r   4)0132Fr  )r   rH  rT   r   r   r   r
   r   renamer  r8   r9   )r-   rk   r   r/   rV   rA   r  rB   s           r.   test_pivot_integer_columnsz)TestPivotTable.test_pivot_integer_columnsN  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)r[   r[   r[   r[   r\   r\   r\   r\   r    )r   r   r   r   r6   r6   r6   r6   r   rJ   r      )r[   r\   r]   valuer  r[   r\   r]   r   rZ   r6   all)r  how)r
   r(   r)   r*   r+   r   r>   r7   r@   rp   r8   r9   )r-   r/   rA   groupedrC   s        r.   test_pivot_no_level_overlapz*TestPivotTable.test_pivot_no_level_overlapc  s     =A-1gkUGaK/14..q1AA"E	
   c3Z H,,/8==???3'//4;;;N
eX.r0   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   r    r   i  r6   i  r     r   r   )r   r  r  r7   r3   r4   rQ   )r(   r   rh  intr   arrayemptyr)   r*   integersr:   r   r   yearrn   r   	lognormalr
   r   r4   is_monotonic_increasing)
r-   nr   productsitemsiproductdrdatesrV   pivoteds
             r.   test_pivot_columns_lexsortedz+TestPivotTable.test_pivot_columns_lexsortedu  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6r0   c                     dgdgd}|j                  ddg      j                  |      j                  d      }|j                  dd|      }t	        j
                  ||       y )Nr  rP   r%   r&   r"   r#   r  )r>   r?   r@   r   r8   r9   )r-   r/   r   rC   rW   s        r.   test_pivot_complex_aggfuncz)TestPivotTable.test_pivot_complex_aggfunc  s_    '(<<c
+//2::3?!!S!!D
fh/r0   c                     |ddg   j                  ddgt        d      }|j                         }t        |d d       |d   k(  sJ y )Nr"   r#   T)r3   rQ   r   r   )r   r:   tolistrP   )r-   r/   rW   result_lists       r.   test_margins_no_values_no_colsz-TestPivotTable.test_margins_no_values_no_cols  sV    sCj!--*c4 . 
 mmo;s#$B777r0   c                     |g d   j                  ddgdt        d      }|j                  j                         g dk(  sJ y )Nr   r"   r#   r$   Tr3   r4   rQ   r   r   r~   r   r         &@r   r:   r   r
  r-   r/   rW   s      r.   test_margins_no_values_two_rowsz.TestPivotTable.test_margins_no_values_two_rows  sI     o&22*c3 3 
 zz  "&@@@@r0   c                     |ddg   j                  ddt        d      }|j                  j                         g dk(  sJ y )Nr"   r#   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6r0   c                     g d|d<   |g d   j                  ddgddgt        d      }|j                  j                         g d	k(  sJ y )
N)r[   r\   r]   rk   er   ghr   jr  r%   r"   r#   r$   r%   r"   r#   r$   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  "&@@@@r0   margin_namer   r   i  r[   r\   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 stringrn  r%   r"   r#   r$   T)r2   r3   r4   r   r  )rq  rr  
ValueErrorr   )r-   r  r/   rt  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                  _
        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r6   rI   rK   r6   r  r6   r   rI   r.  r6   r   r    r  )BranchBuyerr  Dater'  )r   r  rI   r   r   rI   r  r   r   zCarl Joe Markr   r&  r  rP   r3   r4   r2   rQ   r   r  r   6MSr   r   z#'The grouper name foo is not found'rn  r   )r   r   zThe level foo is not valid)r
   splitr   rI  r(   r  r   r   r   r3   r=   r4   r   r   r8   r9   rf   r   r   rq  rr  r}  r  )r-   rV   rC   rW   rt  s        r.   test_pivot_timegrouperz%TestPivotTable.test_pivot_timegrouper  se   +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 $))+
 % '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" R/>R<=S"R,/R9<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$  r.  r!   r6   r  r   r   rK   r   r  r    r  r  rJ   r  r      )r%  r&  r  r'  PayDayr   r'  r*  r/  r  rP   r(  rI   r"  r  r   r   rq   r"   r#   r%  )r
   r+  r   r   r   r(   r  r   r   r   r   r3   r=   r4   r8   r9   rf   r   rr   )r-   rV   rW   rC   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1r0   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:00r4  r5  r6  zM8[ns, US/Pacific]r0  r   r=   2013-01-01 15:00:00r9  r9  2013-02-01 15:00:00r:  r:  zM8[ns, Asia/Tokyo]r   r[   r[   r[   r\   r\   r\   r"  r   r6   r    rI   labelr0  r1  value1value2r>  r[   r\   r=  r   r   r   r~   r   r   r   r   r   )rP   rP   rP   rP   r7   r7   r7   r7   )r>  r>  r?  r?  r9  r:  rJ   r1  )r   rI   r6   r    )r6   rJ   r    r6   )r    rK   r6   r    )r   r   r~   r   )r~   r   r   r~   )r   r   r~   r   r  r?  rP   r7   r(  )r   r   r
   r(   r   r   r   r   r   r8   r9   r  r   )r-   dates1dates2rV   r;  r8  r9  r:  rC   rW   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/r0   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 )&Nr3  r8  r;  r"  r   r   r6   r    rI   r<  r=  r0  r>  r   r[   r\   r   r   r   r~   r   r   r   r   r  r   r7  r   r1  )r   r   r  r  r   r   rq   )r   r   r~   r   r   r   r.  )XrH  rH  rH  YrI  r   rJ   rK   rH  rI  )r   r   r
   r(   r   r   r   rD  r   r   r8   r9   rn   r  r2   r   r   r  r   )r-   r@  rA  rV   rW   r;  rC   r:  s           r.   test_pivot_dtaccessorz$TestPivotTable.test_pivot_dtaccessore  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/r0   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                   }|j                  j#                  t        j$                        |_        t'        j(                  ||       y )	N1/1/2000
12/31/2004r%   r   r   r   r   r   )r   r   r(   r   r:   r   r
   r3   r  	dayofyearr4   	droplevelasarrayr   r2   r   rf   rU   r   r8   r9   )r-   rngrB  rW   doyrC   r`   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!..rxx8
fh/r0   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                   }|j                  j#                  t        j$                        |_        t'        j(                  ||       y )	NrL  rM  r   r   r   r   r   r   )r   r   r(   r   r:   r   r
   r3   r  rn   r4   rO  rP  r   r2   r   rf   rU   r   r8   r9   )r-   rQ  rB  rW   rn   rC   r`   rS  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!..rxx8
fh/r0   c                 "   ddd}t        |dgt        |j                               |      }t        |dg|j                         |      }t        j                  ||       d |D        }t        |dg||      }t        j                  ||       y )NrP   r7   r  r"   )r3   r2   rQ   c              3       K   | ]  }|  y wNr   ).0r  s     r.   	<genexpr>zGTestPivotTable.test_pivot_table_with_iterator_values.<locals>.<genexpr>  s     2E%2s   )r   rT   r  r8   r9   )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Br0   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cheeserd  re  )r   r   g	@gffffff
@)r   r   rf   rf   )r  costr   r  r   Tr7   max)r3   r4   r   r  rQ   rd  re  r   )r7   rf  r   )r7   rf  rf   rf  )rg  rf  r   )rg  rf  rf   )NNr   rq   r   )r
   r   r   r   rr   r2   r8   r9   )r-   r  costsrA   ixtupsrd   rC   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.r0   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  rJ   r    r^   r~   r   r   rK   r"  r  rI   rJ   r   r   r6   r   r`   r   ra   r_   T)rp   r   )	r
   r(   r   r   r3   r4   r   r8   r9   r-   r5   rV   rC   rA   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.r0   c                    t        t        j                  d      t        j                  d      dz  t        j                  d      dz  d      }t        g dg dg dg      }t        g dd	
      |_        t        g dd
      |_        |j                  j                  d      |_        |j                  j                  d      |_        |j                  dd	d|dd      }t        j                  ||       y )Nr  rJ   r    r^   rm  rn  ro  rp  r`   r   ra   rS   r_   TF)rp   r   r5   )r
   r(   r   r   r3   r4   r`   rU   ra   r   r8   r9   rq  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{{:&c(D5  
 	eX.r0   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)r    rJ   r"  r  )r6   rJ   rK   r  )r6   rI   rJ   r"  )rH  rH  rI  rI  r  r%   T)r3   r   )r   r   rK   )r   g      @r   )r   r   r   r   )rH  rI  r   r   r   r
   r   r   r8   r9   r-   rV   rW   rC   s       r.   test_margins_casted_to_floatz+TestPivotTable.test_margins_casted_to_float1  s^    !!!)	
 RsD9oOL)4
 	fh/r0   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   r"   r#   rz   r6   r"  )InColValrz  r{  r|  )r3   r4   r2   r5   )r|   r=   r   r   )r/   r4   r   )r4   r2   r5   r   )r/   r4   r3   )r(   r   r
   r	   r   r   r   CategoricalIndexr   r3   r8   r9   )	r-   r5   r|   r   r   rV   rW   expected_colsrC   s	            r.   test_pivot_with_categoricalz*TestPivotTable.test_pivot_with_categoricalC  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/r0   c                    t        g dg dg dd      }|d   j                  d      |d<   |j                  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 )N)r"   r#   r$   r$   ry   r}   )r  r  Vr  rS   r  r  countF)r3   r4   rp   rQ   r5   r   r{   r|   r=   r[   r\   r   r6   r   r    r   r   )r
   rU   r   r   r}  r   r(   r  r   r8   r9   )r-   r5   rV   rW   r   r   expected_datarC   s           r.   test_categorical_aggfuncz'TestPivotTable.test_categorical_aggfuncf  s    '/C,W
 d8??:.4   
 ,,T
 !#s$71a&1a&1a&!9J9I
 	fh/r0   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  )r.  r/  r.  )Salesr  r  )r  FebruaryMarchAprilMayJuneJulyAugust	SeptemberOctoberNovemberDecemberr  rS   r  r  rP   )r2   r3   r4   r5   rQ   r.  r/  r   r5  Fr  i@  r  r   r!   r   r  )r
   rU   r   set_categoriesr   r   r   r}  r&  r8   r9   )	r-   r5   rV   monthsrW   r   r   r  rC   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/r0   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)rI   rJ   rK   )r$   r%   r&   )r6   rI   r   rL   rM   rO   rN   rP   re   rq   r   r  rI   rJ   rK   r   )	r
   r   r   r   r8   r9   r(   r   r   )r-   rV   rW   rv   rC   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/r0   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   rb   r   r   T)r3   rQ   r   r  r6   r    rI   rh  r7  r   )r
   r   rh  r   r:   r8   r9   )r-   greekframerA   r3   rC   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.r0   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   r!   r   r"   r#   rP   r  r$   r   r   r   r6   rg  r  r  )r   r   r   r  ))r$   r   )r$   r   r   r7   r   )r   r   r   r   rk  )NNr#   r   r   r   g@))r7   r$   r   )r7   r$   r   )rP   r$   r   )rP   r$   r   )r
   r   r   r   r  r8   r9   )r-   r/   rW   r  rC   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/r0   kwargsr    r  )r\   r[   c                     ddfd}t        g dg dg dd      }t        |fddd	d
}t        |ddd	|
      }t        j                  ||       y )Nc                 .    | j                         |z  |z   S rY  rP   r_   r[   r\   s      r.   r   z1TestPivotTable.test_pivot_table_kwargs.<locals>.f  s    557Q;?"r0   c                      | fi S rY  r   r_   r   r  s    r.   r  z1TestPivotTable.test_pivot_table_kwargs.<locals>.g      Q>&>!r0   )goodbadr  r  r  )r   r   r   threer   )r    rK   rJ   r  r   )r"   r#   rH  r"   r#   rH  r(  )rI   r
   r   r8   r9   )r-   r  r  rV   rW   rC   r   s    `    @r.   test_pivot_table_kwargsz&TestPivotTable.test_pivot_table_kwargs  sp    	#	" ;:&
 
3sA
AG
 rc#qQ
fh/r0   r   c           
          d
dfd} |j                   ddddgdddd	}|j                  dddgd|dd	      }t        j                  ||       y )Nc                 .    | j                         |z   |z  S rY  r  r  s      r.   r   z8TestPivotTable.test_pivot_table_kwargs_margin.<locals>.f+  s    EEGaK1$$r0   c                      | fi S rY  r   r  s    r.   r  z8TestPivotTable.test_pivot_table_kwargs_margin.<locals>.g.  r  r0   r%   r"   r#   r$   Tr   )r2   r3   r4   rQ   r   rR   )rK   r   r   )r   r8   r9   )r-   r/   r  r  rW   rC   r   s     `   @r.   test_pivot_table_kwargs_marginz-TestPivotTable.test_pivot_table_kwargs_margin&  s    
	%	" "!! 
*
 
 ##* $ 
 	fh/r0   z
f, f_numpyrH  rg  c                     |j                  d      }t        |dd|      }t        |dd|      }t        j                  ||       y )Nr$   r   r"   r#   r  )r  r   r8   r9   )r-   r   f_numpyr/   rW   rC   s         r.   test_pivot_string_func_vs_funcz-TestPivotTable.test_pivot_string_func_vs_funcF  sD     yyy%Tc1Et3WM
fh/r0   c           	          G d dt         j                        }|j                         5 }|j                  t         d|       t	        t        j                  d      t        j                  d      dd      }d}t        j                  ||      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ddZ xZS )YTestPivotTable.test_pivot_number_of_levels_larger_than_int32_warns.<locals>.MockUnstackerc                 8    t        |   |i | t        d      )NDon't compute final result.)super__init__	Exception)r-   argsr  	__class__s      r.   r  zbTestPivotTable.test_pivot_number_of_levels_larger_than_int32_warns.<locals>.MockUnstacker.__init__`  s!     $1&1 =>>r0   c                      y rY  r   r,   s    r.   _make_selectorsziTestPivotTable.test_pivot_number_of_levels_larger_than_int32_warns.<locals>.MockUnstacker._make_selectorse  s    r0   )returnN)__name__
__module____qualname__r  r  __classcell__)r  s   @r.   MockUnstackerr  _  s    ?
r0   r  
_Unstackeri   r   )ind1ind2r  z$The following operation may generatern  r  r  r  r  r(  )reshape_libr  contextsetattrr
   r(   r   r8   assert_produces_warningrq  rr  r  r   )r-   performance_warningmonkeypatchr  rv   rV   rt  s          r.   3test_pivot_number_of_levels_larger_than_int32_warnszBTestPivotTable.test_pivot_number_of_levels_larger_than_int32_warnsY  s    	K22 	   " 	aIIk<?5)299U3CaPB 9C++,?sK ]]94QR NN$fWg # 	 	  	 	s<   A&C3C',CC'
C3C$ C''C0	,C33C<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  r6   r6   r    )r   r"  r"  )fruitsizetastec                      y)Nr6   r   r   s    r.   ret_onez?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_one  s    r0   c                     t        |       S rY  r  r   s    r.   ret_sumz?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_sum  s    q6Mr0   c                 "    t         j                  S rY  )r(   r   r   s    r.   ret_nonez@TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_none  s    66Mr0   r  r4   rQ   rp   rI   r6   r  r"  )r  r  r  r  r  rq   r  r  r   r4   r  )	r
   r   r(   r   r   from_productrp   r8   r9   )
r-   rp   rV   r  r  r  rW   r/   r   rC   s
             r.   test_pivot_table_aggfunc_dropnaz.TestPivotTable.test_pivot_table_aggfunc_dropnau  s    4!"
			 '8W)Ef
 Arvvrvvq!,r1bffbffa.KL%%/'71CD/
 T&'):CHI6H
fh/r0   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   r   r   rI   r    r6   )r"   r_   r`   r"   r7   r  r   r   r   r   r_   r`   r   r4   r  )r
   r(   r   r   r   rp   r8   r9   )r-   rp   rV   rW   r/   r   rC   s          r.   &test_pivot_table_aggfunc_scalar_dropnaz5TestPivotTable.test_pivot_table_aggfunc_scalar_dropna  s    'q"&&!nArvvrvvCVW
 RfVLbff266{+UEN-T#sSAI6H
fh/r0   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)r    r    rI   rI   r    )rK   r"  r   r  r   )prb  rb  r  rb  )NNNNN)r"   idr$   r%   r"   r%   r  )r3   r4   r2   rQ   r   r   r   r7  r   )r
   r   r(   r  r   r8   r9   )r-   r   rV   rW   exp_colsrC   s         r.   test_pivot_table_empty_aggfuncz-TestPivotTable.test_pivot_table_empty_aggfunc  sv     $%.3	
 s4'   
 #&57#ExX
fh/r0   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 rY  )r(   r7   )arrs    r.   r?   z=TestPivotTable.test_pivot_table_no_column_raises.<locals>.agg  s    773<r0   r   rk  )r   r  r.  (   )rH  rI  Z
notpresentrn  rH  rI  )rQ   )r
   rq  rr  r}  r   )r-   r?   rV   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  r%   r&   r"   r$   r7   )rH  rg  r7   r  )r2   r3   rQ   ))r%   r7   r&   rg  )r&   r7   r&   rH  ))r   r  )r   r  )r   r  )r   r  rq   )r        "@g      @r   )r  r  g      !@r   )r   r   r   r   )g["8@r   g.UUU@r   r  r  r  )
r
   r   r   rr   r(   r  rU   r   r8   r9   )r-   rV   rA   rd   r3   valsrC   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.r0   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d3rZ   )   r  "   )2018r  2019)r[   r   numr  r[   r   r  r  rP   F)r3   r4   r2   rQ   sortr  r  r  r  r  r   rq   r  	r
   r   r(   r   r   r   r   r8   r9   rw  s       r.   test_pivot_table_sort_falsez*TestPivotTable.test_pivot_table_sort_false  s    '&#0	
 ,ueRW   
 "&&\B<"&&"666*8((#_5c5\
 	fh/r0   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 )Nr"   r6   r    r   r!   Int64r   )r[   r\   salesr\   r[   TrP   r  r  rW  r   r  r"   r  r   rq   r3   r4   r   )r
   r   r   r   r   rr   r8   r9   rw  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/r0   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)r3   r2   r  g     e@g     G@g     f@g     @@)r
  r  )r  r	  rq   r  )r
   r   r   rr   r8   r9   rw  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/r0   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r[   r_   r6   r[   r`   r    r\   r`   rI   r\   ra   rJ   )r   r  r.  r   r  r.  rP   r   Tr3   r4   r2   rQ   rR   r   r6   r    r   rI   r   rI   rJ   r   r6   rK   rJ   r   r_   r`   ra   r   r[   r\   r   )r
   r4   r   r3   r=   r8   r9   rw  s       r.   1test_pivot_table_with_margins_and_numeric_columnsz@TestPivotTable.test_pivot_table_with_margins_and_numeric_columns5	  s    }m]ST!
bUqRV   
 lL-HI1* " 
fh/r0   zdtype,expected_dtype)r  Float64)r   r   c                     t        ddt        ddg|      d      }|j                  ddd	d
|      }t        dggt        dgd      t        dgd      |      }t	        j
                  ||       y )Nr[   r\   r  r  r   )r_   r`   r  r_   r`   r  r7   )r3   r4   r2   rQ   rp   r.  r   r  )r
   r   r   r   r8   r9   )r-   rp   r   expected_dtyperV   rW   rC   s          r.   test_pivot_ea_dtype_dropnaz)TestPivotTable.test_pivot_ea_dtype_dropnaF	  s~     Ss62r(%3PQRs5&   
 TFC(3%c* 	
 	fh/r0   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)Nr"   r6   r    z
2019-12-31g      $@r!   )r[   r\   r   r  r\   r   r[   TrP   r  r  g      5@rW  r   r  r7  r  r  rq   r   )r
   r   r%  r8   r  r   r   r   r   rh  rr   r9   rw  s       r.   !test_pivot_table_datetime_warningz0TestPivotTable.test_pivot_table_datetime_warningX	  s   V\2	
 ''- 	^^FmS$ $ F	 D\D$<$6((-c2l3R\\,5OQST$#	 **!124+
  	fh/)	 	s   C??Dc                 H   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            }t        j                  ||       y )Nr  r  r  r  r  )r"   r#   r$   r%   r&   )col5)col6r"  r   sevenr%   r"   r#   r)  rP   r
  r   r   r   r   r~   r  r  r   )r   r   r   r   r   r   r    rq   r  r  rw  s       r.   )test_pivot_table_with_mixed_nested_tuplesz8TestPivotTable.test_pivot_table_with_mixed_nested_tuplesx	  s    TT
 10


M13
h s3*|ne
 3Z#sc3Z"&&#?7G,<@((-u~/AB3PS*
 	fh/r0   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   nuniquer]   )NNr\   rq   )r   r   r~   r[   r   r   r\   r(  )r
   r   r   r   r(   fullr   fill_diagonalr   r   r8   r9   )r-   testr   	columnvalnparrrC   rW   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
c           	         d gt        d      g t        d      d t        d      d}t        |      }|j                  ddd|      }g t        d      d }t        j                  }|d|||g||d	||g|||d
|g||||dgd||||gg}t        |t        |d      t        |d            }|r|j                  g dg df   }t        j                  ||       y )NrJ   rK   )r+  r   valr5  r+  r   )r2   r3   r4   rp   r~   r   r   r   r   rf  rX  r   rb   )r   r   )	r   r
   r   r(   r   r   r&  r8   r9   )	r-   rp   r/   rV   rW   e_axisr   e_datarC   s	            r.   /test_pivot_table_index_and_column_keys_with_nanz>TestPivotTable.test_pivot_table_index_and_column_keys_with_nan	  s   (uQx(1B581BT1B5QR8Tt_uE5QWX"58"T"ff#sC%#sC%#sC%#sC%#sC%
 V%0vE2

 ||Iy$89H
6:r0   z'index, columns, e_data, e_index, e_colsCategoryValuer~   rf  r   r  r  2   zvalues-and-columnszvalues-and-index)idsc                     g dg dd}t        |      }|j                  ||dd      }t        |||      }	t        j                  ||	       y )N)r"   r#   r"   r#   r;  )r9  r:  r:  r  r(  rX  r  )
r-   r3   r4   r7  e_indexe_colsr/   rV   rW   rC   s
             r.   %test_pivot_table_values_as_two_paramsz4TestPivotTable.test_pivot_table_values_as_two_params	  sU    @ 1;KLt_'   
 &H
fh/r0   c                 ^   t        g dg dg dd      }|j                  ddddd	d
      }t        ddt        j                  ddt        j                  t        j                  ddddddddi      }d|j                  _        d|j                  _        t        j                  ||d	       y )Nrb   )r[   r\   r\   )r_   NN)r   g1g2rC  rD  r   r  FT)r3   r4   r2   rQ   rp   r   r_   r~   r  r   r   r   )check_dtype)	r
   r   r(   r   r3   r=   r4   r8   r9   rw  s       r.   +test_pivot_table_margins_include_nan_groupsz:TestPivotTable.test_pivot_table_margins_include_nan_groups
  s    %'
    
 3RVVC8bff3s;Ss37
 # $
fhEBr0   )NNr   )jr  r  r  rq  fixturer/   rD   rX   ri   rw   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r  r  r  r   r,  r<  rL  rS  rY  rT   r(   r  r   r   ri  rl  ru  xfailr{  r~  r  r  r  r   rr   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r,  r1  rE  rJ  rT  rV  ra  rk  rr  rt  rx  r  r  r  r  r  r  r  r  rP   r7   rH  rg  r  slowr  r  r  r  r  r  r  r  r  r  r#  r%  r+  r3  r8  r   rA  rF  r   r0   r.   r   r       s]   ^^.
 .
`/806
&#/J0 0@0>08 [[a!q)E!HeAqk+BC001@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 [[UT288VU$CD[[Xe}50 6 E08 [[ENBHHeU^$E5>"5%.!		
 [[Xe}5 0 6 0D2 [[S   [[Xe}5$0 6$0L [[Xe}5P 6P, =:B2/4 [[4 %';<2=	 c
), '
&& *
	
<$0=<$0L000& [[V%MN0 O02@*/$17f08A7A [[]UE3sCj,QR# S#JSj}2~Y0vY0v0&0 C&/<// 0$!0F02*0X08	/<0| [[Xa2B!RSDT'UV0 W0* [[2Ry3(!",=Ra?PQ00: [[BFFORWWBFFOV_rvvrww/0U^bffbff-.V_rvvrww/0	

0
0 [[ 6!0F0" [[Yu60 70"@2/h0,0"0,0" [[!57K L000@@0D#0J;0 [[1 "&&#rvv.VVS"&&#. C:J7+':	 "&&MVVSM"&&MVVSM	 +':C:J7	
0 "#565  8
098
0Cr0   r   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                   e       d	      d
        Zd Zd Zd Zd Zd Zd Ze
j                  j+                  dddg      d        Zd Zd Ze
j                  j3                  d      d        Ze
j                  j+                  dg d      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r"   r#   r$   r$   r#   r"   OnerQ  rQ  TworR  rR  r~   r   r   r   r   r~   r   r3   r4   r2   r~   r   r   r   rQ  rR  r   Nr4   )r
   r  r3   r=   r4   r8   r9   r;   )r-   r/   r  r  rC   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9r0   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   r   r   r   r   )r~   r   r   r   r   rZ   zduplicate entriesrn  r[   r\   r]   r   )r
   rq  rr  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 )
NrZ   r   r[   r\   r]   r   r   Fr  )r
   r  r8   r9   rw  s       r.   test_pivot_emptyzTestPivot.test_pivot_emptyg
  s>    /S=2r2
fhEBr0   c                     t        ddg|      }|j                  ddd      }t        dd	gd|
      }t        j                  |j
                  |       y )N)r"   r  A1)r#   r  B2)r/   r   r6   r   r    r   r"   r#   r5  )r
   r  r   r8   rs   r4   )r-   any_string_dtyperV   rW   r   s        r.   test_pivot_integer_bugz TestPivot.test_pivot_integer_bugm
  sW    "$45=M
 1Q7 #s!;KL
fnn.>?r0   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 )NrO  rP  rS  r   r3   r4   r2   r4   r2   r~   r   r   r   rT  r   r   )r2   rQ  )r2   rR  rq   Fr  rU  r   )r
   rI  r  r3   r=   r4   r8   r9   r   rr   r;   rO  )r-   r/   r  rW   rC   s        r.   test_pivot_index_nonezTestPivot.test_pivot_index_nonev
  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/r0   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)r6   r6   r6   r    r    r    )r6   r6   r    r6   r6   r    )r6   r    r6   r    r6   r    r`  ry  )lev1lev2lev3lev4r2   rd  re  rf  r   )r~   r   r   r~   r   r   )r   r   r   r   r   r   r   )r6   r    r6   r    rq   )rg  rg  r2   r2   )	r
   r  r(   r  r   r   r   r8   r9   )r-   rV   r3   r4   rW   rC   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("""r0   c                     t        dgdd      }t        j                  t        d      5  |j	                          d d d        y # 1 sw Y   y xY w)Nr6   r  z(missing 1 required keyword-only argumentrn  rp  )r-   rV   s     r.   test_pivot_columns_not_givenz&TestPivot.test_pivot_columns_not_given
  s@    aSq)*]]9,VW 	HHJ	 	 	s   AAz&TODO(infer_string) None is cast to NaNrv  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 )Nr6   r    rI   Nr\   r]   r   ))r\   r6   r]   r6   r\   r  rm  r   r   r]   r4   r3   r2   )r
   r  r8   r9   r   rw  s       r.   test_pivot_columns_is_nonez$TestPivot.test_pivot_columns_is_none
  s    
 qc23$'q9:
fh/$c2h]%#2FG
fh/$c#>aV5!3+?@
fh/r0   c                    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            }|rt        j                  |j                  _
        t	        j
                  ||       y )Nr6   r    rI   rl  r\   r  )r]   r    r   r]   rn  r   r   )r
   r  r4   r;   r8   r9   r   r(   r   r3   r=   )r-   r  rV   rW   rC   s        r.   test_pivot_index_is_nonez"TestPivot.test_pivot_index_is_none
  s    qc23#T2h]1#6"&
fh/#T#>Qqc5!33GH"$&&HNN
fh/r0   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 )Nr6   r    rI   rl  r\   r]   rn  r   r   ra  r   )r
   r  r   r8   r9   rw  s       r.   test_pivot_values_is_nonez#TestPivot.test_pivot_values_is_none
  s    qc23#S>UA3S)5!33G
 	fh/#d3Qqc5!33GH
fh/r0   c                     t        dgddd      }|j                  d      }|j                  ddd	
       t        j                  ||       y )Nr[   r   r6   )r   r   r  T)deepr   r   r  r   )r
   r  r  r8   r9   )r-   rV   rC   s      r.   "test_pivot_not_changing_index_namez,TestPivot.test_pivot_not_changing_index_name
  sG    uQ;<777%
ueG<
b(+r0   c                     t        g g d      }|j                  dddd      }t        g dd	      }t        j                  |j
                  |       y )
N)r[   r\   r  r   r[   r\   r  r  r(  rh  r7  )r
   r   r   r8   rs   r4   r-   rV   r  rC   s       r.   .test_pivot_table_empty_dataframe_correct_indexz8TestPivot.test_pivot_table_empty_dataframe_correct_index
  sG    r#67S#gwW8#6
emmX6r0   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)Nr_   z
2023-01-01r6   )r[   date_strrl   r`   z
2023-01-02r    ra   z
2023-01-03rI   r{  r   Fr[   rl   rP   T)r3   r2   rQ   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  rq   )r
   r   to_datetimer8   r  r   r   rr   r   strptimers   r3   rx  s       r.   0test_pivot_table_handles_explicit_datetime_typesz:TestPivot.test_pivot_table_handles_explicit_datetime_types  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   r6   r    rP   Tr  r  r  r  r  r   r  r  rv  rw  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/r0   rv   r6   r   c                    t        j                  |      }t        j                  |gdz        }t        j                  ||z  dz        j	                  ||z  d      }t        ||t        j                  d            }|j                         }|j                  d      }d|j                  d<   t        j                  ||       y )Nr    r#  F)r  r   )r   r   )r(   r   r   r  r   r
   r  r@   r  r8   r9   )r-   rv   r   r3   r2   rV   df_origrW   s           r.   test_unstack_copyzTestPivot.test_unstack_copy0  s     1''151q53;'//As;vubiin5'')'D
b'*r0   c                     t        t        g t        j                  d            t        g t              t        g t              d      }|j                  ddd      }|j                  sJ y )	NUTCr?  r   )	timestamprS   r  rS   r  r  r   )r
   r   r   DatetimeTZDtyper  r   r  )r-   rV   
df_pivoteds      r.   test_pivot_empty_with_datetimez(TestPivot.test_pivot_empty_with_datetime<  sg    #Bb.@.@E.JK"2S1#.
 ^^gk $ 

 r0   c           
          t        g dg dg dg dd      }|j                  d ddgdd	d
      }t        g dgdgt        ddgg dgg dg dgddg            }t        j                  ||       y )Nr  )rI   rI   rJ   )rK   rK   r"  rG  )r_   r`   ra   rc  r`   ra   rc  Tr  )r3   r4   r2   r   rQ   )r    r    r6   r6   rI   rJ   )rK   r"  r   r   )r   r    r6   r    rg  r   )r
   r   r   r8   r9   rw  s       r.   "test_pivot_margins_with_none_indexz,TestPivot.test_pivot_margins_with_none_indexJ  s    	
 #J   
 N%A.#\2Cj
 	fh/r0   z0ignore:Passing a BlockManager:DeprecationWarningc           	      P   t        j                  d      }t        g dg dd      j                  t	        |j                  |j                         |j                                     dd      }|j                  dgdg      }t        j                  g d	g dgd
      }t        dt        j                  t        j                  gt        j                  dt        j                  gt        j                  t        j                  dgg|      }t        j                  ||dd       y )Npyarrowr   rb   )string_columnnumber_columnzfloat[pyarrow]r  r  ra  )r  r  r  )Nr  rq   r~   r   r   r   F)rE  check_column_type)rq  importorskipr
   rU   r   
dictionaryr   stringr  r   r   r(   r   r8   r9   )r-   parV   multi_indexdf_expecteds        r.   #test_pivot_with_pyarrow_categoricalz-TestPivot.test_pivot_with_pyarrow_categoricalf  s       +-	J

&!+BMM"((*biik,R!S!1
 	 XX/8IXJ ,,@/R)
  266266"RVVS"&&$9BFFBFFC;PQ
 	%	
r0   r   )r%   rN  QrI  c                    t        j                  |      }t        g g g d      }|j                  d|i      }|j	                  ddd      }t        g dd      }t        g dd      }t        |||      }t        j                  ||       y )	Nr   r   r2   r3   r4   r   r5  r  )r   PeriodDtyper
   rU   r  r   r8   r9   )r-   r   r   rV   rW   r   r   rC   s           r.   'test_pivot_empty_dataframe_period_dtypez1TestPivot.test_pivot_empty_dataframe_period_dtype  s     D)bABYY%()8LryA )9E *:%
 	fh/r0   N)r  r  r  rV  rX  rZ  r_  rb  rh  rj  rq  rH  rJ  r   ro  rq  rs  rv  ry  r~  r  rI  r  r  r  filterwarningsr  r  r   r0   r.   rM  rM  >
  s    ::	;C@"0H$#L [[%M  0000,7560 [[S1b'*	+ +	+ 08 [[ RS
 T
6 [[V%9:0 ;0r0   rM  )"r   r   r   	itertoolsr   r  numpyr(   rq  pandas._configr   pandasr   r   r	   r
   r   r   r   r   r   r   pandas._testing_testingr8   pandas.api.typesr   pandas.core.reshaper   r  pandas.core.reshape.pivotr   r   rM  r   r0   r.   <module>r     s\    
  	   - 
 
 
  - 6 1[(C [(C|PS0 S0r0   