
    A>i-                        S SK JrJ r Jr  S SKJr  S SKrS SKrS SKrS SK	J
r
  S SKrS SKJrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJr   " S	 S
5      r  " S S5      r!g)    )datedatetime	timedelta)productN)using_string_dtype)	
ArrowDtypeCategorical	DataFrameGrouperIndex
MultiIndexSeriesconcat
date_range)CategoricalDtype)reshapepivot_tablec                   T   \ rS rSr\R
                  S 5       rS rS rS r	S r
S rS rS	 rS
 r\R                  R!                  SS/S-  S/S-  4\" S5      \" SS5      4/5      S 5       rS rS rS rS rS r\R                  R!                  SSSS/4S/ SQ4S/ SQ4/5      S 5       rS rS rS r\R                  R!                  S S!S"/5      S# 5       r\R                  R!                  S S!S"/5      S$ 5       r\R                  R!                  S S!S"/5      S% 5       rS& r\R                  R!                  S S!S"/5      S' 5       r S( r!\R                  R!                  S)\"\#RH                  \%\&/5      \R                  R!                  S S!S"/5      S* 5       5       r'\R                  R!                  S+S,S-/\#RH                  " S,S-/5      \%" S,S-/5      \&" S,S-/5      /5      \R                  R!                  S S!S"/5      S. 5       5       r(S/ r)\R                  RU                  S0S19\R                  R!                  S S!S"/5      S2 5       5       r+\R                  R!                  S S!S"/5      S3 5       r,   SS5 jr-S6 r.S7 r/\R                  R!                  S8S9S:/ S;Q/ S<Q/\&" / S=QS9S>94S9S?/S@/ SAQ/ SBQ/\0Rb                  " / SCQS9S?/SD94/5      SE 5       r2SF r3SG r4\R                  R!                  SH/ SIQ5      SJ 5       r5SK r6SL r7SM r8SN r9SO r:SP r;SQ r<SR r=SS r>\R                  R!                  STSUSVSWS4SXSY//5      SZ 5       r?S[ r@S\ rAS] rBS^ rCS_ rDS` rESa rFSb rGSc rHSd rISe rJSf rKSg rLSh rMSi rNSj rOSk rP\R                  R!                  SlSXSm0SmSSn.SSmSo./5      Sp 5       rQ\R                  R!                  Sl0 SYSq0SXS0SSqSn.SqSSo./5      Sr 5       rR\R                  R!                  SsS@\#R                  4S:\#R                  4St\#R                  4S@S:/\#R                  \#R                  /4S@St/\#R                  \#R                  /4SuS:/\#R                  \#R                  /4/5      Sv 5       rW\R                  R                  Sw 5       rYSx rZSy r[\R                  R!                  SzS!S"/5      S{ 5       r\S| r]S} r^S~ r_S r`S raS rb\R                  R!                  SSS/5      S 5       rcS rdS reS rfS rg\R                  R!                  SSSS\#R                  S\#R                  /\#R                  S\#R                  S//\&" S9S?/SS9\&" / SQSS94SSS\#R                  /\#R                  S/S\#R                  /\#R                  S//\&" / SQSS9\&" S9S?/SS94/SS/S9S 5       riS rjSrkg4)TestPivotTable    c           
      :   [        / SQ/ SQ/ SQ[        R                  R                  S5      R	                  S5      [        R                  R                  S5      R	                  S5      [        R                  R                  S5      R	                  S5      S.5      $ )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/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/reshape/test_pivot.pydataTestPivotTable.data!   s}     YY**1-==bAYY**1-==bAYY**1-==bAU+-
 -	
    c                 `   SS/nSn[        USX4US9nUR                  SX4US9n[        R                  " XV5        [        USX1S9  [        U5      S:  a&  UR                  R
                  [        U5      :X  d   eOUR                  R                  US   :X  d   e[        U5      S:  a  UR                  R
                  U:X  d   eOUR                  R                  US   :X  d   eUR                  / UQUP5      S   R                  S	5      R                  5       n[        R                  " XW5        g )
Nr#   r$   r%   r&   )valuesindexcolumnsobserved)r4   r5   r7      r   mean)r   tmassert_frame_equallenr5   namestuplenamer6   groupbyaggunstack)r.   r7   r0   r5   r6   tabletable2expecteds           r/   test_pivot_tableTestPivotTable.test_pivot_tableR   s"   c
EX
 !!ex " 
 	e, 	DEEu:>;;$$e444;;##uQx///w<!==&&'111==%%333<< 1% 1 1237;;FCKKM
e.r2   c           	         [        [        S5      [        S5      / SQS.5      nUR                  SSSSS	S
9nUR                  R	                  S5      Ul        UR
                  R	                  S5      Ul        UR                  R	                  S5      Ul        UR                  R	                  S5      Ul        UR                  SSSSS	US9n[        R                  " XC5        g )Nabcdefghijr8   r!            col1col2col3rP   rR   rQ   sumr   )r5   r4   r6   aggfunc
fill_valuecategory)r5   r4   r6   rT   rU   r7   )
r
   listr   r5   astyper6   rP   rQ   r:   r;   )r.   r7   dfrE   results        r/   +test_pivot_table_categorical_observed_equal:TestPivotTable.test_pivot_table_categorical_observed_equaln   s    ']DM?S
 >>ST " 
 "..z:#++22:>''..,''..,   
 	f/r2   c                 6   [        / SQ/ SQ/ SQS.5      nUR                  SSS9nUR                  SSS9R                  n[        R                  " X#5        UR                  SS	S
0S9nUR                  SS	S
0S9R                  n[        R                  " X#5        g )Nabcxyzr8   r!   rL   )rowscolsr4   rh   rS   )r6   rT   r5   rT   r4   r9   )r
   r   Tr:   r;   )r.   rY   rsxps       r/   test_pivot_table_nocols&TestPivotTable.test_pivot_table_nocols   s    $oS
 ^^FE^:^^&%^8::
b%^^FXv4F^G^^&8V2D^EGG
b%r2   c                 ^   [        SSSSS.SSSSS.S	S
SSS.SSSSS.SSSSS.S.5      nUR                  SSSS/SS9nUR                  SSS/SSS9n[        R                  " / SQSS/S9n[        R
                  " UR                  U5        [        R
                  " UR                  U5        g )Ni`  i iP  i0u  )r   r8   r!   rL   r#   r$   r%   i[ i] i\ i^ r_   r`   ra   di i  i@B )amountcustomermonthr   quantityrt   rs   rr   r   F)dropna))r#   r_   )r#   r`   )r#   ra   )r#   rp   )r$   r_   )r$   r`   )r$   ra   )r$   rp   )r%   r_   )r%   r`   )r%   ra   )r%   rp   r=   )r
   r   r   from_tuplesr:   assert_index_equalr6   r5   )r.   rY   pv_colpv_indms        r/   test_pivot_table_dropna&TestPivotTable.test_pivot_table_dropna   s    #5UC #<#6fE"sss; 'Fw7K
 *i!8   
 Y/   
 "" y)
" 	fnna0
fllA.r2   c                     [        / SQ/ SQSS9n[        / SQ/ SQSS9n[        X/ SQS.5      n[        US	S
S/SSS9n[        R                  " X/S
S/S9n[        S	/ SQ0US9n[
        R                  " XF5        g )Nr_   r_   r`   r`   )r_   r`   re   T
categoriesordered)ra   rp   ra   rp   )ra   rp   rd   r8   r!   rL   rM   )r#   r$   r4   r4   r#   r$   F)r4   r5   ru   r7   rv   )      ?       @      @      @r5   )r	   r
   r   r   from_arraysr:   r;   )r.   cat1cat2rY   rZ   	exp_indexrE   s          r/   test_pivot_table_categorical+TestPivotTable.test_pivot_table_categorical   s     _d
  _d
 TEFxSz$
 **D<SzJ	h(<=YO
f/r2   c                    / SQn[        / SQ/ SQ[        S5      S.5      nUS   R                  [        USS95      US'   UR	                  S	SS
USS9n[        / SQSS9nUR                  [        USS95      n[        / SQS	S9n[        / SQ/ SQ/ SQ/UUS9nU(       d'  UR                  [        U5      S9R                  S5      n[        R                  " XG5        g )Nr_   r`   ra   rp   )	r_   r_   r_   r`   r`   r`   ra   ra   ra   )	r8   r!   rL   r8   r!   rL   r8   r!   rL   	   r#   r$   r%   r#   Fr   r$   r%   )r5   r6   r4   ru   r7   r^   r?   rf   )        r         @)r   r         @)r         @       @r5   r6   r6   float)
r
   rangerX   r   r   r   reindexr	   r:   r;   )r.   ru   r   rY   rZ   expected_columnsexpected_indexrE   s           r/   $test_pivot_table_dropna_categoricals3TestPivotTable.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
f/r2   c                 4   [        [        [        R                  SSSS/SS/SS9/ SQS.5      nUR	                  SSUS	S
9nU(       a	  SS/nSS/nO/ SQn/ SQn[        SU0[        [        R                  " USS/SS9SS9S9n[        R                  " X65        g )NlowhighTr   )r   r   r   r   r   r#   r$   r#   r$   Fr5   r4   ru   r7   r   r   r   r8   r   r   r   )r   r8   r   r   )	r
   r	   r)   nanr   r   
from_codesr:   r;   )r.   ru   rY   rZ   r4   codesrE   s          r/   %test_pivot_with_non_observable_dropna4TestPivotTable.test_pivot_with_non_observable_dropna   s     VVUFE6: %v 
 /	
 c#fuU3ZFFE %FE&M&&u%RVW
 	f/r2   c                 <   [        [        / SQ/ SQSS9[        S5      S.5      nUR                  SSUS	S
9n[        S/ SQ0[	        [        R
                  " / SQ/ SQSS9SS9S9nU(       d  US   R                  [        5      US'   [        R                  " X45        g )N)leftr   r   r   r   )r   r   r   Tr   rN   r   r#   r$   Fr   r   r   r8   r!   r   r   )
r
   r	   r   r   r   r   rX   r   r:   r;   )r.   ru   rY   rZ   rE   s        r/   /test_pivot_with_non_observable_dropna_multi_cat>TestPivotTable.test_pivot_with_non_observable_dropna_multi_cat	  s     :6 
 1X	
 c#fuU/"&&*A4 	
 $SM007HSM
f/r2   
left_rightr   rM   r8   rL   c                 F   Uu  pE[        [        R                  R                  XEU5      5      n[	        USS.5      nUR                  SSUSS9n[	        SS0[        UR                  5       SS9S	9n	U(       d  U	R                  [        5      n	[        R                  " X5        g )
Nr8   r   r#   r$   Fr   r   r   r   )r	   pdIntervalIndexr   r
   r   r   uniquerX   r   r:   r;   )
r.   r   ru   closedr   rightinterval_valuesrY   rZ   rE   s
             r/   test_pivot_with_interval_index-TestPivotTable.test_pivot_with_interval_index%  s    
 !%b&6&6&B&B4PV&WX_156c#fuU#JeO$:$:$<3G
 u-H
f/r2   c           
         [         R                  R                  / SQ/ SQ5      n[        [        R
                  " SSS[        R                  S9/ SQ[        USS	9R                  S
S9S.5      n[        USSSSSS
S9nUS   n[        / SQ[        [         R                  " SS5      [         R                  " SS5      S/SS9S[        R                  S9n[        R                  " XE5        g )Nr   r   r8   r8   r8   r8   r!   r!   rM   r   r   dtyper_   r`   r_   r`   Tr   F)	ascendingr   r%   r$   r#   rS   )r5   r6   r4   rT   marginsr7   All)rL      
   r8   r!   r   )r5   r?   r   )r   r   r   r
   r)   arangeintpr	   sort_valuesr   r   r   Intervalr:   assert_series_equal)r.   ordered_catrY   	pivot_tabrZ   rE   s         r/   &test_pivot_with_interval_index_margins5TestPivotTable.test_pivot_with_interval_index_margins6  s    &&22<NYYq!Rrww7) d;GG# H 
  
	 5!Q*BKK1,=uECP''	
 	v0r2   c                     UR                  SUR                  UR                  S9nUR                  SSSS9n[        R                  " X#5        g )Nr&   r   r#   r%   )r   r#   r%   r:   r;   r.   r0   rZ   rE   s       r/   test_pass_arrayTestPivotTable.test_pass_arrayV  sF    !!#TVVTVV!D##CsC#@
f/r2   c                     UR                  SS UR                  S9nUR                  SUR                  S-  SS9n[        R                  " X#5        g )Nr&   c                     U S-  $ )NrN    rc   s    r/   <lambda>3TestPivotTable.test_pass_function.<locals>.<lambda>\  s    qAvr2   r   rN   r%   )r   r%   r5   r:   r;   r   s       r/   test_pass_function!TestPivotTable.test_pass_function[  sK    !!#-=tvv!N##CtzzQ#L
f/r2   c                     SS/nSn[        XUS9nUR                  / UQUP5      R                  S5      R                  5       n[        R
                  " XE5        g )Nr#   r$   r%   r   r9   )r   r@   rA   rB   r:   r;   )r.   r0   r5   r6   rC   rE   s         r/   test_pivot_table_multiple(TestPivotTable.test_pivot_table_multiple`  sW    c
Dw?<< 1% 1 1266v>FFH
e.r2   c           	      @   [        / SQ/ SQ/ SQS.5      nUR                  S   S:X  d   e[        USS/S/S	S
S9nUR                  n[        [        R
                  " S5      /S-  [        [        S5      SS9S9n[        R                  " X45        [        / SQ/ SQ/ SQS.5      nUR                  S   S:X  d   e[        USS/S/S	SS9nUR                  n[        [        R
                  " S5      /S-  [        [        S5      SS9S9n[        R                  " X45        g )N)catbatr   r   r   r   )r_   vir   int64r_   r   r   rS   )r4   r5   r6   rU   rT   r!   abr   r   )      ?      @      @      @float64r9   )
r
   dtypesr   r   r)   r   r   rW   r:   r   )r.   fre   rZ   rE   s        r/   test_pivot_dtypes TestPivotTable.test_pivot_dtypesg  s   1!)
 xx}'''c#!U
 288G,-1tDzPS9TU
v0 1))
 xx}	)))c#!V
 288I./!35dRU;VW
v0r2   zcolumns,valuesbool1float1float2)r   r   r   bool2c                 D   [         R                  " S[         R                  S9n[        X3S-   US:*  US:*  S.5      nUR	                  5       R                  SXS9n[        UR                  5      nU Vs0 s H  ow[         R                  " S	5      _M     nnXh:X  d   eg s  snf )
NrN   r   r   r!   rL   )r   r   r   r   r5   r5   r6   r4   r   )	r)   r   r   r
   reset_indexr   dictr   r   )	r.   r6   r4   r   rY   df_resrZ   colrE   s	            r/   test_pivot_preserve_dtypes)TestPivotTable.test_pivot_preserve_dtypes  s     IIarzz*Ga1fqAvN
 !--7 . 
 fmm$8>?),,?!!! @s   3 Bc           
         [         R                  " / SQ5      n[        S/ SQ0US9nUR                  UR                  R
                  UR                  R                  S9n[        R                  " SS/5      nUR                  UR                  S   R                  [        R                  5      SS	9n[        S
S/S[        R                  //[        SS/[        R                  S9US9n[         R"                  " X55        [        / SQ[%        SSSSS9S.US9nUR                  UR                  R
                  ['        SSS9S9n[        R(                  " S/[         R                  " S/SS9/S S/S9n[        SS/[        SS/[        R                  S9US9n[         R"                  " X55        UR                  ['        SS9['        SSS9S9n[        S/[         R                  " S/SS9US9n[         R"                  " X55        g ) N)
2011-01-01z
2011-02-01
2011-01-02r   r   r#   rK   r   r   )r#   r8   )r#   r!   r8   )levelr   r   r   r!   r   r   r&   rN   ns)freqperiodsunit)r#   dtr  ME)keyr  z
2011-01-31zM8[ns]rv         
@YEr  r   z
2011-12-31)r   DatetimeIndexr
   r   r5   rs   dayr   rw   
set_levelslevelsrX   r)   int32r   r   r:   r;   r   r   r   )r.   idxrY   resexp_columnsexps         r/   test_pivot_no_values#TestPivotTable.test_pivot_no_values  s   R
 _-S9nn288>>288<<nH ,,h-AB!,,q!((2! - 
 3Z#rvv'Abhh/

 	c'$ CN 
 nn288>>7tRV;WnX ,,UB$$l^8DE,
 3KuaV288<k
 	c'nnt$g$T.J  
 E""L>=

 	c'r2   c                     [        USS/SSS/SS9n[        UR                  S/S	S
9SSS/SS9n[        R                  " X#5        g )Nr&   r'   r#   r$   r%   r   )r4   r5   r6   rU   r(   r8   axis)r5   r6   rU   )r   dropr:   r;   r   s       r/   test_pivot_multi_values&TestPivotTable.test_pivot_multi_values  sX    #s3c
q
 IIse!I$C#sPQ
 	f/r2   c                   ^ U4S jnU" SS/5      nU" S5      nU" S5      n[        XE/SS/SS9n[        R                  " X65        U4S jnU" SS/5      nU" S5      nU" S5      n[        XE/SS/SS9n[        R                  " X65        g )Nc                 &   > [        TSS/SS/SU S9$ )Nr&   r'   r#   r$   r%   r4   r5   r6   rT   r   funcr0   s    r/   r   ;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>  s    #sC:sD
r2   r9   stdr8   )keysr  c           	      (   > [        TSS/SS/SU SS9$ )Nr&   r'   r#   r$   r%   T)r4   r5   r6   rT   r   r   r  s    r/   r   r!    s$    :*
r2   )r   r:   r;   )r.   r0   r   rZ   meansstdsrE   s    `     r/   test_pivot_multi_functions)TestPivotTable.test_pivot_multi_functions  s    
 FE?#&	x5-vuoAF
f/
 FE?#&	x5-vuoAF
f/r2   methodTFc           	         [         R                  n[        SSUS// SQ/ SQS.5      nU(       a  UR                  SSS	S
9nO[        R                  " USSS	S
9n[        X"SU/SX"U/USX"/X"US//[        USSS/SS9[        / SQSS9S9n[        R                  " XE5        [        R                  " UR                  SSS	S
9UR                  5        g )NR1R2R4)C1C2C3C4)r            r^   r_   r`   ra   r   r3  r   r2  r4  r   r   )	r)   r   r
   pivotr   r   r:   r;   rj   )r.   r)  r   rY   rZ   rE   s         r/   test_pivot_index_with_nan(TestPivotTable.test_pivot_index_with_nan  s     ffD#t,-%
 XXCSXAFXXbSEF2s#Ss#b##3#	 dD$/c:2=	
 	f/
bhhS#chJHJJWr2   c                 .   [        [        SSSS9S[        R                  " S5      -   S.5      nUS   [        R
                  " S5      -
  US	'   [        R                  =UR                  S
'   UR                  S'   [        R                  =UR                  S'   UR                  S'   U(       a  UR                  SS	SS9nO[        R                  " USS	SS9nUR                  5       R                  R                  5       [        U5      :X  d   eUR                  5        H%  u  pEUR                  US   US	   4   US   :X  a  M%   e   U(       a  UR                  S	SSS9nO[        R                  " US	SSS9n[        R                  " XcR                   5        g )Nz
2014-02-01   r&   )r  r  d   )r_   ra   r_   z
2014-02-02r`   )r8   r_   )rL   r_   r8   r`   )rM   r`   ra   r   )r
   r   r)   r   r   	Timestampr   locr5  notnar4   rS   r<   iterrowsr:   r;   rj   )r.   r)  rY   pv_rowrZ   s          r/   test_pivot_index_with_nan_dates.TestPivotTable.test_pivot_index_with_nan_dates  sS    acB299Q<'
 S'BLL663*,&&0v*,&&0vS=B"CSABxxz  $$&#b'111kkmFA66#c(CH,-S999 $ XXCSXAFXXbSEF
fdd+r2   c                    [        [        R                  " [        SSSSS5      [        SSSSS5      [        SSSSS5      [        SSSSS5      /SU S3S9[        R                  " [        S	SSSS5      [        S	SSSS5      [        S	SSSS5      [        S	SSSS5      /SU S
3S9[        R
                  " SSS9[        R
                  " SSS9S.5      n[        / SQ5      n[        R                  " SS/S-  SSU S
3S9n[        R                  " XE/5      n[        R                  " SS/SSU S3S9n[        / SQ/ SQ/UUS9nU(       a  UR                  SSS9n	O[        R                  " USSS9n	[        R                  " X5        [        SS/SS//UUS S S9nU(       a  UR                  SSSS9n	O[        R                  " USSSS9n	[        R                  " X5        g )N  r8   r   r   r!   zM8[z, US/Pacific]r     z, Asia/Tokyo]rM   r   )dt1dt2data1data2rJ  rJ  rK  rK  z2014/01/01 09:00z2014/01/02 09:00rI  r?   r   z2013/01/01 09:00z2013/01/02 09:00rH  r   r!   r   r!   r8   rL   r8   rL   r   rL   rJ  r   )r
   r   r  r   r)   r   r   r   r   r5  r:   r;   )
r.   r)  r  rY   exp_col1exp_col2exp_colexp_idxrE   r@  s
             r/   test_pivot_with_tz!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]+

 ((()=>""!34v]+

 <(
 u5B"E59B
b+VaVRaL
 uWEB"E5IB
b+r2   c                    [        S[        R                  " SSS9S.S[        R                  " SSS9S.S[        R                  " SSS9S.S[        R                  " SSS9S.S[        R                  " S	SS9S./5      nUR                  S
5      R	                  5       nUR
                  R                  S 5      n[        UR                  S
5      R	                  5       S
S/U/SS9n[        [        R                  " SSS9[        R                  " SSS9//[        S/SS9[        R                  " [        R                  " SSS9[        R                  " SSS9/S
S9S9n[        R                  " X45        g )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-0700r[  c                 $    U R                  SSSS9$ )Nr   )hourminutesecond)replacer   s    r/   r   8TestPivotTable.test_pivot_tz_in_values.<locals>.<lambda>  s    199!Aa9#Hr2   rZ  minr  r   z2016-08-12 00:00:00z2016-08-25 00:00:00r   )r
   r   r<  	set_indexr   r[  mapr   r   r  r:   r;   )r.   rY   minsrZ   rE   s        r/   test_pivot_tz_in_values&TestPivotTable.test_pivot_tz_in_valuesi  ss     ,,'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 
  	f/r2   c           
      *   [        [        R                  " SS5      [        R                  " SS5      [        R                  " SS5      [        R                  " SS5      /[        R                  " SS5      [        R                  " SS5      [        R                  " SS5      [        R                  " SS5      /[        R                  " SSS	9[        R                  " SSS	9S
.5      n[        / SQ5      n[        R                  " SS/S-  SSS9n[        R                  " X4/5      n[        / SQ/ SQ/[        R                  " SS/SSS9US9nU(       a  UR                  SSS9nO[        R                  " USSS9n[        R                  " Xv5        [        SS/SS//[        R                  " SS/SSS9[        R                  " SS/SSS9S9nU(       a  UR                  SSSS9nO[        R                  " USSSS9n[        R                  " Xv5        g )Nz
2013-01-01r&   z
2013-01-02z2013-01Mz2013-02rM   r   r   )p1p2rJ  rK  rL  r!   rk  )r?   r  rN  rO  rj  r   r   r8   rL   rJ  r   )r
   r   Periodr)   r   r   PeriodIndexr   r   r5  r:   r;   )r.   r)  rY   rP  rQ  rR  rE   r@  s           r/   test_pivot_periods!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((()=><(..,!=DsS

 d3B"D$7B
b+VaV..,!=DsSNNIy#93O

 d7CB"D$wGB
b+r2   c           
         [        / SQ[        R                  " S5      [        R                  " S5      [        R                  " S5      [        R                  " S5      /SS.5      n[        S[        / SQSS9[        [        R                  " S5      [        R                  " S5      S	/S
S9S9nUR	                  SS
SSS9n[
        R                  " X#5        g )Nr   2019Q12019Q2r   )r_   r`   rc   r8   r!   r   r_   r   r   r`   r0   r5   r6   rc   T)r5   r6   r4   r   )r
   r   rl  r   r   r:   r;   )r.   rY   rE   rZ   s       r/   test_pivot_periods_with_margins.TestPivotTable.test_pivot_periods_with_margins  s    !IIh'IIh'IIh'IIh'	 	
 C0299X.		(0CUKRUV
 c3sDQ
h/r2   boxc                 x   U" SS/5      n[        / SQ/ SQ/ SQ/ SQS.5      nU(       a  UR                  SS	US
9nO[        R                  " USS	US
9n/ SQ/ SQ/n[        SS/SS9n[	        SS// SQ// SQ/ SQ/S S	/S9n[        XgUS9n	U	S   R                  [        5      U	S'   [        R                  " XY5        g )Nbazzoor   r   r   r   r   r   r#   r$   r%   r#   r$   r%   r8   r!   rL   rM   rN   r9  rc   rd   re   qwtr   r   ry  rz  r   r   r   )r8   r!   rL   rc   rd   re   )rM   rN   r9  r  r  r  r   r   r0   r?   r   )r   r   r   r8   r8   r8   )r   r8   r!   r   r8   r!   r  r   r=   rt  )	r
   r5  r   r   r   rX   objectr:   r;   )
r.   rw  r)  r4   rY   rZ   r0   r5   r6   rE   s
             r/    test_pivot_with_list_like_values/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:-

 $WE"5/008
f/r2   r4   r   ry  c           	         [        / SQ/ SQ/ SQ/ SQS.5      nU(       a  UR                  SSUS9nO[        R                  " USSUS9n[        R                  S	[        R                  S
/[        R                  S[        R                  S/[        R                  S[        R                  S/S	[        R                  S[        R                  /S[        R                  S[        R                  /S[        R                  S[        R                  //n[        / SQSS9n[        SS/SS/// SQ/ SQ/S S/S9n[        XVUS9nUS   R                  [        5      US'   [        R                  " XH5        g )Nr{  r|  r}  r~  r  rz  r   r   r#   rM   r%   r9  r$   rN   r8   r!   rL   )r  r  r  rc   rd   re   r  r   ry  r   r   r   r   r8   r   r8   r  rt  )r
   r5  r   r)   r   r   r   rX   r  r:   r;   )	r.   r4   r)  rY   rZ   r0   r5   r6   rE   s	            r/   %test_pivot_with_list_like_values_nans4TestPivotTable.test_pivot_with_list_like_values_nans  s9    A5)5	
 XXE5XHFXXbuVLF VVS"&&!$VVS"&&!$VVS"&&!$"&&!RVV$"&&!RVV$"&&!RVV$
 9FENUEN3.-

 $WE"5/008
f/r2   c                     [        / SQ/ SQ/ SQS.5      nSn[        R                  " [        US9   UR	                  SSS9  S S S 5        g ! , (       d  f       g = f)	Nr^   rf   rO   z=pivot\(\) missing 1 required keyword-only argument: 'columns'matchrP   rR   )r5   r4   r
   pytestraises	TypeErrorr5  )r.   rY   msgs      r/   #test_pivot_columns_none_raise_error2TestPivotTable.test_pivot_columns_none_raise_error0  sB    IVWN]]9C0HH6&H1 100s   A
AzBMultiIndexed unstack with tuple names fails with KeyError GH#19966reasonc                 z   [        / SQS9n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[        S	S
/SS/// SQ/ SQ/S9n[        X2USS9nU(       a  UR                  SSSS9nO[        R                  " USSSS9n[        SS/SS/S9[        SS/SS/S9[        SS/SS/S9S.n[        U5      n[        R                  " Xg5        g ) Nr   r8   r!   rL   rM   rN   )r0   )r   r#   r8   rc   )r   r$   r!   rd   )r   r%   rL   re   )r   r#   rM   r  )r   r$   rN   r  )r   r%   r9  r  r   ry  firstr_  r   r  )r  r   r  )r0   r5   r6   r   )r   r  )r   r_  )ry  r  r   r8   rM   r   r   r   r!   rN   rL   r9  r   )r   r   r
   r5  r   r   r:   r;   )r.   r)  r5   r0   r6   rY   rZ   rE   s           r/   test_pivot_with_multiindex)TestPivotTable.test_pivot_with_multiindex7  s     -.      
 ENWh$78.
 DwhOXX&)'  F XX&)'	F Auen5Auen5Auen5

 T?
f/r2   c                     [        / SQ/ SQ/ SQ/ SQS.5      n[        R                  " [        SS9   U(       a  UR	                  SS	S
S9  O[
        R                  " USS	S
S9  S S S 5        g ! , (       d  f       g = f)Nr{  r|  r}  r~  r  z^\('bar', 'baz'\)$r  rz  r   )r   ry  r   )r
   r  r  KeyErrorr5  r   )r.   r)  rY   s      r/   test_pivot_with_tuple_of_values.TestPivotTable.test_pivot_with_tuple_of_valuesa  sd     A5)5	
 ]]8+@AueNK5%O BAAs   1A,,
A:Nc                 6   Uc  SS/nUc  S/nUR                   UR                  S S U4   nUR                  U5      U   R                  5       n[        R
                  " XxSS9  UR                  U:X  d   eUR                  5       nUR                   US4   R                  S S n	UR                  U5      U   R                  5       n
[        R
                  " XSS9  U	R                  US4:X  d   eUR                   US4U4   nX2   R                  5       nX:X  d   eg )Nr#   r$   r%   r   Fcheck_names )	r=  r5   r@   r9   r:   r   r?   
sort_indexiloc)r.   rZ   
values_colr0   r5   r6   margins_colcol_marginsexpected_col_marginsindex_marginsexpected_ix_marginsgrand_total_marginsexpected_total_marginss                r/   _check_outputTestPivotTable._check_outputs  s(    =#JE?eGjjcr!2K!?@#||E2:>CCE
{eT;...""$

K#45::3B?"ll73J?DDF
}uU!!k2%6666$jj+r):K)GH!%!1!6!6!8"<<<r2   c           	      4   UR                  SSS/SSSS9nU R                  USU5        UR                  SSS/SSSSS	9nU R                  USUSS
9  UR                  SS/SSSS9nUR                  R                  S    H  nU R                  X4   XA5        M     g )Nr&   r#   r$   r%   Tr9   )r4   r5   r6   r   rT   Totals)r4   r5   r6   r   rT   margins_name)r  r5   r6   r   rT   r   )r   r  r6   r  )r.   r0   rZ   rC   	value_cols        r/   test_marginsTestPivotTable.test_margins  s    !!sCj#tV " 
 	63- !!*! " 
 	63(C   *c4 ! 
 --a0Iu/A 1r2   c                    UR                    Vs/ s H  o3S-  PM	     snUl         [        R                  " S5      nU(       a  Sn[        R                  " [
        US9   UR                  SS/SSS	9  S S S 5        UR                  S
S9R                  SS/SSS	9nUR                    H,  nUR                  SU4   nXqU   R                  5       :X  a  M,   e   [        R                  " [
        US9   UR                  SS/SSS	9  S S S 5        UR                  S
S9R                  SS/SSS	9nS H,  nUR                  SU4   nXqU   R                  5       :X  a  M,   e   g s  snf ! , (       d  f       N= f! , (       d  f       Nw= f)Nr!   &agg function failed [how->mean,dtype->-dtype 'str' does not support operation 'mean'r  AABBTr9   )r5   r   rT   CCr   r   r  )DDEEFF)
r6   reescaper  r  r  r   r  r=  r9   )	r.   r0   using_infer_stringkr  rC   r  totalsitems	            r/   test_no_colTestPivotTable.test_no_col  sp    (,||4|!A|4ii@AAC]]9C0D$<vN 1		$	'33,f 4 
 IYY{I56F)_113333 ' ]]9C0D$<vN 1		$	'33,f 4 
 'DYY{D01F$Z__.... '% 5 10 10s   EE".E3"
E03
Fz*columns, aggfunc, values, expected_columnsr#   r9   )      @r  皙@r  )r   r   皙@r  )r   r   r   r   r   r$   rS   )r         rN   r9  r"   )      r   r"   r"   r  ))r   r   )r   r   )r   r   )r   r   )r   r   )r   r   rv   c                    [        / SQ/ SQ/ SQ/ SQ/ SQS.5      nUS:w  aR  [        R                  " S5      nU(       a  S	n[        R                  " [
        US
9   UR                  USUS9  S S S 5        SU;  a  UR                  SS9nUR                  SS9R                  USUS9n[        U[        SS/5      US9n	[        R                  " X5        g ! , (       d  f       Nn= f)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  	r8   r!   r!   rL   rL   rM   rN   r9  r   	r!   rM   rN   rN   r9  r9     r   r   r#   r$   r%   r&   r'   rS   r  r  r  T)r6   r   rT   r$   r   r%   r&   r'   r   )r
   r  r  r  r  r  r   r  r   r:   r;   )
r.   r6   rT   r4   r   r  rY   r  rZ   rE   s
             r/   %test_margin_with_only_columns_defined4TestPivotTable.test_margin_with_only_columns_defined  s    D TT
 10
& e))DEC!Ey4wgN 5g%B%11T7 2 
 V5#s+<FVW
f/ 54s   C
C"c           	         UR                  5       n[        R                  " [        U5      S-  5      R	                  [        U5      S5      R                  S5      U/ SQ'   / [        [        SS/SS/5      5      QSPn[        R                  " US	S
9n[        / SQ/ SQS.US9R                  SSS9nUS   US   -   US'   UR                  SSS/SSSSS9n[        R                  " XV5        g )NrL   i8)r&   r'   r(   r   r   r   r   r  r   rv   )      rL   r   -   )!   r   $   3   x   r   r    r   r%   r8   r  r   r    r   r&   r#   r$   TrS   r   r4   r5   r6   r   rT   rU   )copyr)   r   r<   r   rX   rW   r   r   rw   r
   rename_axisr   r:   r;   )r.   r0   rY   mi_valmirE   rZ   s          r/   test_margins_dtype!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/r2   c           	      "   / [        [        SS/SS/5      5      QSPn[        R                  " USS9n[	        / SQ/ S	QS
.US9R                  SSS9nUS   US   -   US'   UR                  SSS/SS[        SS9n[        R                  " XE5        g )Nr   r   r   r   r  r   rv   )r8   r8   r!   r8   rN   )r!   r   r!   r!   r9  r  r   r%   r8   r  r   r    r   r&   r#   r$   Tr   r  )
rW   r   r   rw   r
   r  r   r<   r:   r;   )r.   r0   r  r  rE   rZ   s         r/   test_margins_dtype_len%TestPivotTable.test_margins_dtype_len  s    N4?@N+N##F*=$?r

+c+
" 	 #6*Xg->>!!* " 
 	h/r2   rh   ))r8   r!   r_   r`   r;  )r_   r8   c           	          [        US   / SQUS   / SQS/ SQ05      nUR                  SUS9n[        / SQ/[        R                  " / SQUS	9[	        S/US
:X  a  SOSS9S9n[
        R                  " X45        g )Nr   rf   r8   r   )rM   rN   r9  )r4   r6   )r   r   r   ))r8   r8   )r!   r!   )rL   rL   rv   r  strr  r   r6   r5   )r
   r   r   rw   r   r:   r;   )r.   rh   df2rZ   rE   s        r/    test_pivot_table_multiindex_only/TestPivotTable.test_pivot_table_multiindex_only2  s{     a)T!WiiPQT:**+C4Pdj.@UhO
 	f/r2   c                 j   [        SSSS9n[        [        R                  R	                  S5      R                  S5      [        R                  R	                  S5      R                  S5      US.5      nUR                  SS/S	S
9nUR                  R                  S   R                  U5      (       d   eg )Nz
2016-01-01rL   zEurope/Amsterdam)r  rY  r!   r   r$   r%   F)r5   ru   r8   )
r   r
   r)   r*   r+   r,   r   r5   r  equals)r.   dtirY   rZ   s       r/   test_pivot_table_retains_tz*TestPivotTable.test_pivot_table_retains_tz@  s    q5GHYY**1-==a@YY**1-==a@
 sCj? ||""1%,,S1111r2   c                 l   [         R                  n[        [        SS// SQSS/[	        S5       Vs/ s H  o![        U5      -   PM     snS/5      5      n[        U5      nUR                  S/ S	QS
/S9nUR                  [        S9nUR                  S/ SQS/S9n[        R                  " XWSS9  g s  snf )Nr   r   r   x1x2r4  r   rM   )r   r8   rL   r!   )r4   r5   r6   r   4)0132Fr  )r   rb  rW   r   r   r   r
   r   renamer  r:   r;   )r.   rp   r   r0   rY   rC   r  rD   s           r/   test_pivot_integer_columns)TestPivotTable.test_pivot_integer_columnsN  s     HHt+0959aYq\!95
 t_ay1#Fiii$?SER
e? 6s   B1c                    [        / SQS-  / SQS-  S/S-  S/S-  -   S-  [        R                  R                  S5      R	                  S5      S.5      nUR                  S	S
SS/S9nUR                  / SQ5      S	   R                  5       nUR                  S5      R                  S5      R                  SSS9n[        R                  " X$5        g )N)r_   r_   r_   r_   r`   r`   r`   r`   r!   )r   r   r   r   r8   r8   r8   r8   r   rM   r      )r_   r`   ra   valuer
  r_   r`   ra   r   r^   r8   all)r  how)r
   r)   r*   r+   r,   r   r@   r9   rB   ru   r:   r;   )r.   r0   rC   groupedrE   s        r/   test_pivot_no_level_overlap*TestPivotTable.test_pivot_no_level_overlapc  s     =A-1gkUGaK/14..q1AA"E	
   c3Z H,,/8==???3'//4;;;N
e.r2   c           
         Sn[         R                  " S[        4S[        4S[        4S[        4S[        4S[        4S[        4/5      n[         R
                  " / S	QS[        4S[        4/S
9n[         R                  " XS
9n[         R                  R                  S5      R                  S[        U5      U5      nUS   U   US'   US   U   US'   [        [        SSS5      [        SSS5      5      nU[         R                  R                  S5      R                  S[        U5      U5         nUR                  US'   UR                  US'   UR                  US'   [         R                  R                  S5      R!                  SSU5      US'   [#        U5      nUR%                  SSS// SQSS9n	U	R&                  R(                  (       d   eg )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  r8   i  r     r   r   )r   r  r  r9   r5   r6   rT   )r)   r   r  intr   arrayemptyr*   r+   integersr<   r   r   yearrs   r  	lognormalr
   r   r6   is_monotonic_increasing)
r.   nr   productsitemsiproductdrdatesrY   pivoteds
             r/   test_pivot_columns_lexsorted+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6r2   c                     S/S/S.nUR                  SS/5      R                  U5      R                  S5      nUR                  SSUS9n[        R
                  " XC5        g )Nr"  rS   r&   r'   r#   r$   r!  )r@   rA   rB   r   r:   r;   )r.   r0   r   rE   rZ   s        r/   test_pivot_complex_aggfunc)TestPivotTable.test_pivot_complex_aggfunc  s]    '(<<c
+//2::3?!!S!!D
f/r2   c                     USS/   R                  SS/[        SS9nUR                  5       n[        US S 5      US   :X  d   eg )Nr#   r$   T)r5   rT   r   r   )r   r<   tolistrS   )r.   r0   rZ   result_lists       r/   test_margins_no_values_no_cols-TestPivotTable.test_margins_no_values_no_cols  sV    sCj!--*c4 . 
 mmo;s#$B777r2   c                     U/ SQ   R                  SS/S[        SS9nUR                  R                  5       / SQ:X  d   eg )Nr   r#   r$   r%   Tr5   r6   rT   r   r   r   r   r         &@r   r<   r   r7  r.   r0   rZ   s      r/   test_margins_no_values_two_rows.TestPivotTable.test_margins_no_values_two_rows  sI     o&22*c3 3 
 zz  "&@@@@r2   c                 ~    USS/   R                  SS[        SS9nUR                  R                  5       / SQ:X  d   eg )Nr#   r$   Tr<  )r   r   r>  r?  r@  s      r/   &test_margins_no_values_one_row_one_col5TestPivotTable.test_margins_no_values_one_row_one_col  sI     sCj!--sC . 
 zz  "&6666r2   c                     / SQUS'   U/ SQ   R                  SS/SS/[        SS9nUR                  R                  5       / S	Q:X  d   eg )
N)r_   r`   ra   rp   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_cols6TestPivotTable.test_margins_no_values_two_row_two_cols  sX     LS	*+77*sCj#t 8 
 zz  "&@@@@r2   margin_namer   r   i  r_   r`   c           
         SU S3n[         R                  " [        US9   [        USSS/S/SUS	9  S S S 5        [         R                  " [        US9   [        USS/SS/SUS	9  S S S 5        [         R                  " [        US9   [        USS/S/SUS	9  S S S 5        g ! , (       d  f       Nt= f! , (       d  f       NR= f! , (       d  f       g = f)
NzConflicting name "z3" in margins|margins_name argument must be a stringr  r&   r#   r$   r%   T)r4   r5   r6   r   r  )r  r  
ValueErrorr   )r.   rN  r0   r  s       r/   -test_pivot_table_with_margins_set_margin_name<TestPivotTable.test_pivot_table_with_margins_set_margin_name  s     ! .5 5 	 ]]:S1Cj( 2 ]]:S1ec
( 2 ]]:S1e( 21) 21 21 21s#   B B1C 
B.1
B?
Cc                 	   [        SR                  5       SR                  5       / SQ[        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      [        SSS5      /S	.5      R                  S
5      n[        [        R
                  " / SQSS9R                  SS5      [        R                  " [        SSS5      /SS9SR                  5       S9nS
UR                  l
        SUR                  l
        [        U[        SS9SSSS9n[        R                  " X25        [        US[        SS9SSS9n[        R                  " X2R                   5        [        [        R
                  " S[        R"                  SSS[        R"                  /5      R                  SS5      [        R                  " [        SSS5      [        SSS5      /SS9SR                  5       S9nS
UR                  l
        SUR                  l
        [        U[        SS9SSSS9n[        R                  " X25        [        US[        SS9SSS9n[        R                  " X2R                   5        UR%                  5       n[        U[        SS
S9SSSS9n[        R                  " X25        [        US[        SS
S9SSS9n[        R                  " X2R                   5        Sn[&        R(                  " [*        US9   [        U[        SSS9SSSS9  S S S 5        [&        R(                  " [*        US9   [        US[        SSS9SSS9  S S S 5        UR                  S
5      n[        U[        SS
S 9SSSS9n[        R                  " X25        [        US[        SS
S 9SSS9n[        R                  " X2R                   5        S!n[&        R(                  " [,        US9   [        U[        SSS 9SSSS9  S S S 5        [&        R(                  " [,        US9   [        US[        SSS 9SSS9  S S S 5        g ! , (       d  f       GN(= f! , (       d  f       GN= f! , (       d  f       Nj= f! , (       d  f       g = f)"NA A A A A A A B$Carl Mark Carl Carl Joe Joe Joe Carlr8   rL   rN   r8   r  r8   r   rL   rF  r8   r   r!   r  )BranchBuyerr  DaterY  )r   r  rL   r   r   rL   r   r	  r
  zCarl Joe Markr   rX  r  rS   r5   r6   r4   rT   r   r  r   6MSr  r  z#'The grouper name foo is not found'r  r   )r  r   zThe level foo is not valid)r
   splitr   rc  r)   r#  r   r   r  r5   r?   r6   r   r   r:   r;   rj   r   r   r  r  r  rP  )r.   rY   rE   rZ   r  s        r/   test_pivot_timegrouper%TestPivotTable.test_pivot_timegrouper  s7   +113?EEG4T1a(T1a(T2q)T2q)T2q)T2q)T2q)T2q)		
  )F
! 	$ HH[088A>""HT2r$:#;$G#))+

 % 't$
 	f/&
 	fjj1HHaAr26623;;AqA""$1%xa';<5 $))+
 % 'u%
 	f/'
 	fjj1 ^^u&1
 	f/F3
 	fjj13]]83/5e4! 0 ]]83/U6! 0 \\&!uF3
 	f/f5
 	fjj1*]]:S156! 2 ]]:S1U%8! 21] 0/ 0/< 21 21s0   QQ1Q+(Q<
Q
Q(+
Q9<
R
c                 v	   [        SR                  5       SR                  5       / SQ[        SSSSS5      [        SS	SSS
5      [        SSSSS5      [        SSSSS5      [        SSSSS5      [        SSSSS5      [        SSSSS5      [        SSS
SS5      /[        SSSSS5      [        SSSSS
5      [        SS	S
SS5      [        SSSSS5      [        SSSSS5      [        SS	S
SS5      [        SSSSS5      [        SSSSS5      /S.5      n[        U[	        SSS9[	        SSS9SSS9n[        [
        R                  " [
        R                  S[
        R                  [
        R                  S[
        R                  SS	[
        R                  S	[
        R                  [
        R                  [
        R                  [
        R                  S[
        R                  /5      R                  SS5      [        R                  " [        SS	S5      [        SSS5      [        SSS5      [        SSS5      /SS9[        R                  " [        SS	S5      [        SSS5      [        SSS5      [        SSS5      /SS9S 9nSUR                  l        SUR                  l        [        R                  " X#5        [        U[	        SSS9[	        SSS9SSS9n[        R                  " X#R                   5        [        SS	S5      [        SSS5      4[        SSS5      [        SS	S5      4[        SSS5      [        SSS5      4[        SSS5      [        SSS5      4[        SSS5      [        SSS5      4[        SSS5      [        SSS5      4/n["        R$                  " USS/S!9n[        [
        R                  " S[
        R                  S[
        R                  S[
        R                  S	[
        R                  S	[
        R                  [
        R                  S/5      R                  SS5      US"S#/S 9nS$UR                  l        [        U[	        SSS9[	        SSS9/S$/SSS9n[        R                  " X#5        [        US$/[	        SSS9[	        SSS9/SSS9n[        R                  " X#R                   5        g )%NrT  rU  rV  rF  r"   r8   r  r   r   rN   r   r4  r!   r  r  rM   r2  r      )rW  rX  r  rY  PayDayr  rY  r\  rb  r  rS   rZ  rL   r9  r   r
  r   rv   r#   r$   rW  )r
   r]  r   r   r   r)   r#  r   r   r   r  r5   r?   r6   r:   r;   rj   r   rw   )r.   rY   rZ   rE   tuplesr  s         r/   test_pivot_timegrouper_double,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 % (
f/t262
 	fjj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
 	f/*$F3W$H5UV
 	fjj1r2   c           
      D   [         R                  " / SQSSS9n[         R                  " / SQSS9n[        / SQUU[        R                  " S	S
S9SS/S-  S.5      nUS S n[        SS/5      n[        SS/SS9n[        R                  " XV/5      n[        SS/SS/SS//XGS9n[        US/S/S/S9n	[        R                  " X5        [        / SQ5      n[        / SQS-  5      n[         R                  " SS/S -  SS!S9n
[        R                  " XVU
/5      n[        [        R                  " / S"Q/ S#Q/ S$Q/S
S9UUS S  S9n[        [        R                  " / S%Q/ S&Q/ S'Q/5      UUS S  S9n[        X/SS(9n[        US/S!/SS)/S*S+/S,9n	[        R                  " X5        g )-N2011-07-19 07:00:002011-07-19 08:00:002011-07-19 09:00:00rh  ri  rj  zM8[ns, US/Pacific]rH  r   r?   2013-01-01 15:00:00rm  rm  2013-02-01 15:00:00rn  rn  zM8[ns, Asia/Tokyo]r   r_   r_   r_   r`   r`   r`   r9  r   r8   r!   rL   labelrH  rI  value1value2rr  r_   r`   rq  r   r   r   r   r   r   r   r   r   )rS   rS   rS   rS   r9   r9   r9   r9   )rr  rr  rs  rs  rm  rn  rM   rI  )r   rL   r8   r!   )r8   rM   r!   r8   )r!   rN   r8   r!   )r   r   r   r   )r   r   r   r   )r   r   r   r   r  rs  rS   r9   rZ  )r   r  r
   r)   r   r   r   r   r   r:   r;   r#  r   )r.   dates1dates2rY   rS  rP  rQ  rR  rE   rZ   exp_col3	expected1	expected2s                r/   test_pivot_datetime_tz%TestPivotTable.test_pivot_datetime_tz
  s   !! '
 !! '

 7))AW5a&1*
 !*(H-.#s'2((()=>3Z#sc3Z0
 Rw	8*U
f/UVAAEF##"$9:Q>&

 (((h)GHHH ! 	  BQK
	" HH((( ABK

	 90q9'Gh'FO
 	f/r2   c                    [         R                  " / SQ5      n[         R                  " / SQ5      n[        / SQUU[        R                  " SSS9SS/S	-  S
.5      n[        USUS   R                  R                  SS9n[        SS/SS9n[        SS/SS/SS/S.U[        / SQ[        R                  SS9S9n[        R                  " XF5        [        X3S   R                  R                  US   R                  R                  SS9n[        SS/SS/SS/S.[        SS/[        R                  SS9[        / SQ[        R                  SS9S9n[        R                  " XF5        [        UUS   R                  R                  R                  US   R                  R                  US   R                  R                  /SS9n[        R                   " [        R"                  " / SQ[        R                  S9[        R"                  " SS/S	-  [        R                  S9/SS/S9n[        [        R"                  " / SQ/5      [        S/[        R                  S9US9n[        R                  " XF5        [        U[        R"                  " / S Q5      US   R                  R                  US   R                  R                  /SS9n[        [        R"                  " S!S	S[        R$                  S[        R$                  /[        R$                  [        R$                  [        R$                  S"[        R$                  S#//5      S$S%/US9n[        R                  " XF5        g )&Nrg  rl  ro  r9  r   r   r8   r!   rL   rp  rq  rH  rr  r   r_   r`   r   r   r   r   r   r   r   r   r  r   rk  r   rI  )r   r   r  r  r   r   rv   )r   r   r   r   r   r   rF  )Xr}  r}  r}  Yr~  r   rM   rN   r}  r~  )r   r  r
   r)   r   r   r  r]  r   r  r:   r;   rs   r&  r4   r   r   r#  r   )r.   rt  ru  rY   rZ   rS  rE   rR  s           r/   test_pivot_dtaccessor$TestPivotTable.test_pivot_dtaccessore  s   !!	
 !!	
 7))AW5a&1*
 gr%y||'8'8
 c
1c
SzsCj9)288%@

 	f/ill(("U),,2C2CH
 c
SzsCj9AbhhU;)288%@

 	f/U),,##**Y\\&&5	(:(:;	
 ((+288<!Q!2884 %.
 HH456bhh/

 	f/((9:Y\\&&5	(:(:;	
 HHQ2661bff-266ST/UV *
 	f/r2   c                    [        SSSS9n[        [        R                  " [	        U5      5      US9n[        [        U5      UR                  R                  UR                  R                  S9nUR                  R                  S5      Ul
        [        R                  " UR                  R                  5      n0 nUR                  R                  R                  5       R                   H7  nUR                  R                  U:H  n[        UR                  U   XG   S9XV'   M9     [        U[        S9R                   nUR                  R#                  [        R$                  5      Ul        [&        R(                  " X55        g )	N1/1/2000
12/31/2004r&   r
  r   r   r   r   )r   r   r)   r   r<   r   r
   r5   r&  	dayofyearr6   	droplevelasarrayr   r4   r   rj   rX   r  r:   r;   )r.   rngr[  rZ   doyrE   rd   masks           r/   
test_dailyTestPivotTable.test_daily  s   \<BIIc#h's3bM8J8J
  11!4jj++,%%'..A88==A%D 4	BHK / XU355!..rxx8
f/r2   c                    [        SSSS9n[        [        R                  " [	        U5      5      US9n[        [        U5      UR                  R                  UR                  R                  S9nUR                  R                  S5      Ul
        [        R                  " UR                  R                  5      n0 nUR                  R                  R                  5       R                   H7  nUR                  R                  U:H  n[        UR                  U   XG   S9XV'   M9     [        U[        S9R                   nUR                  R#                  [        R$                  5      Ul        [&        R(                  " X55        g )	Nr  r  r  r
  r   r   r   r   )r   r   r)   r   r<   r   r
   r5   r&  rs   r6   r  r  r   r4   r   rj   rX   r  r:   r;   )r.   r  r[  rZ   rs   rE   rd   r  s           r/   test_monthlyTestPivotTable.test_monthly  s   \=BIIc#h's3Yr]"((--X11!4

288>>*%%'..A88==A%D 4DHK / XU355!..rxx8
f/r2   c                    SSS.n[        US/[        UR                  5       5      US9n[        US/UR                  5       US9n[        R                  " XC5        S U 5       n[        US/XRS9n[        R                  " Xc5        g )NrS   r9   r3  r#   )r5   r4   rT   c              3   $   #    U  H  ov   M     g 7fNr   ).0r
  s     r/   	<genexpr>GTestPivotTable.test_pivot_table_with_iterator_values.<locals>.<genexpr>  s     2TE%Ts   )r   rW   r#  r:   r;   )r.   r0   aggspivot_values_listpivot_values_keysagg_values_genpivot_values_gens          r/   %test_pivot_table_with_iterator_values4TestPivotTable.test_pivot_table_with_iterator_values  s    ('d499;&7
 (diik4
 	/C2T2&n
 	.Br2   c                    Sn[        / SQ/ SQ/ SQS.5      nUR                  SSSUS	S
/S9n[        SSU/SS9nSSS	SU4SSS
SU4/n[        R                  " U/ SQS9n[        UR
                  XFS9n[        R                  " X75        g )NWeekly)baconcheeser  r  )r   r   g	@gffffff
@)r  r  rj   rj   )r  costr  r  r  Tr9   max)r5   r6   r   r  rT   r  r  r   )r9   r  r  )r9   r  rj   r  )r  r  r  )r  r  rj   )NNr  rv   r   )r
   r   r   r   rw   r4   r:   r;   )r.   r  costsrC   ixtupsrh   rE   s           r/   /test_pivot_table_margins_name_with_aggfunc_list>TestPivotTable.test_pivot_table_margins_name_with_aggfunc_list  s    >,-
 !!%UO " 
 GX|46B"!V\*! FL)
 %%d2EFU\\B
e.r2   c                 d   [        [        R                  " S5      [        R                  " S5      S-  [        R                  " S5      S-  S.5      n[        / SQ/ SQ/ SQ/5      n[        / SQS	S
9Ul        [        / SQSS
9Ul        UR                  SS	SUSS9n[        R                  " XC5        g )Nr  rM   r!   rb   r   r   r   rN   r9  r  rL   rM   r   r   r8   r   rd   r   re   rc   T)ru   r   )	r
   r)   r   r   r5   r6   r   r:   r;   r.   r7   rY   rE   rC   s        r/   test_categorical_margins'TestPivotTable.test_categorical_margins  s    ))A,RYYq\Q%6RYYq\A=MN
 o{KHI}37 S9sCXtL
e.r2   c           	         [        [        R                  " S5      [        R                  " S5      S-  [        R                  " S5      S-  S.5      n[        / SQ/ SQ/ SQ/5      n[        / SQS	S
9Ul        [        / SQSS
9Ul        UR                  R                  S5      Ul        UR                  R                  S5      Ul        UR                  SS	SUSSS9n[        R                  " XC5        g )Nr  rM   r!   rb   r  r  r  r  rd   r   re   rV   rc   TF)ru   r   r7   )r
   r)   r   r   r5   r6   rd   rX   re   r   r:   r;   r  s        r/   !test_categorical_margins_category0TestPivotTable.test_categorical_margins_category!  s    ))A,RYYq\Q%6RYYq\A=MN
 o{KHI}37 S9tt{{:&tt{{:&c(D5  
 	e.r2   c                     [        / SQ/ SQ/ SQ/ SQS.5      n[        USSS9n[        / S	Q/ S
Q/ SQS.[        / SQSS9S9n[        R                  " X#5        g )N)r!   rM   r9  r  )r8   rM   rN   r  )r8   rL   rM   r9  )r}  r}  r~  r~  rK  r&   T)r5   r   )r   r   rN   )r   g      @r   )r   r   r   r   )r}  r~  r   r   r   r
   r   r   r:   r;   r.   rY   rZ   rE   s       r/   test_margins_casted_to_float+TestPivotTable.test_margins_casted_to_float1  s\    !!!)	
 RsD9oOL)4
 	f/r2   c           	      |   [         R                  SSS[         R                  /n[         R                  SS[         R                  S/n[        [        USS/US9[        USS/US9[	        SS5      S.5      nUR                  S	S
SUS9n[        R                  " SS/US
S9n[        S[         R                  /[         R                  S//US9n[        [        SS/SS/US9S	S9Ul	        [        R                  " Xh5        UR                  S
SUS9n[        SS//U[        S/5      S9n[        R                  " Xh5        g )Nr   r   r#   r$   r   r8   r9  )InColValr  r  r  )r5   r6   r4   r7   )r   r?   r   r   )r0   r6   r   )r6   r4   r7   r   )r0   r6   r5   )r)   r   r
   r	   r   r   r   CategoricalIndexr   r5   r:   r;   )	r.   r7   r   r  r   rY   rZ   expected_colsrE   s	            r/   test_pivot_with_categorical*TestPivotTable.test_pivot_with_categoricalC  s9   vvufeRVV4vvsC-!#5&/7S"3C:wOQ{
 eh   
 ++S#JeTC=2663-"@-XUFOWU

 	f/ ehO*}E5'N
 	f/r2   c           	      j   [        / SQ/ SQ/ SQS.5      nUS   R                  S5      US'   UR                  SSSUS	S
S9n[        R                  " / SQ/ SQS
SS9n[        SS/SS9n[        R                  " SS/SS/SS//[        R                  S9n[        XdUS9n[        R                  " X75        g )N)r#   r$   r%   r%   r   r   )r.  r/  Vr.  rV   r  r/  countF)r5   r6   ru   rT   r7   r   r   r   r?   r_   r`   r   r8   r   r!   r   r   )r
   rX   r   r   r  r   r)   r#  r   r:   r;   )r.   r7   rY   rZ   r   r   expected_datarE   s           r/   test_categorical_aggfunc'TestPivotTable.test_categorical_aggfuncf  s    '/C,W
 d8??:.4   
 ,,T
 !#s$71a&1a&1a&!9J9I
 	f/r2   c                    [        / SQ/ SQ/ SQS.5      n/ SQnUS   R                  S5      R                  R                  U5      US'   UR	                  SSS	US
S9n[        SS/S	SS9n[        R                  " X3SSS9nSS//SS//S-  -   n[        XvUS9nU(       a  UR                  S/   n[        R                  " XH5        g )N)r:  r     )Januaryr  r  )rF  rG  rF  )Salesr  r  )r  FebruaryMarchAprilMayJuneJulyAugust	SeptemberOctoberNovemberDecemberr  rV   r  r  rS   )r4   r5   r6   r7   rT   rF  rG  r   rM  Fr  i@  r  r   r"   r   r  )r
   rX   r   set_categoriesr   r   r   r  r=  r:   r;   )	r.   r7   rY   monthsrZ   r   r   r  rE   s	            r/   %test_categorical_pivot_index_ordering4TestPivotTable.test_categorical_pivot_index_ordering  s    (:*

 k((488GGO7   
 !$F'J,,u7
 sAx"}49I
 ||YK0H
f/r2   c           	         [        / SQ/ SQ/ SQS.5      nUR                  SSS/SS	9n[        R                  " / SQ/ SQ/SS/S
9n[        / SQUS/S9n[        R
                  " X$5        UR                  SSSSS9n[        S[        R                  [        R                  /[        R                  S[        R                  /[        R                  [        R                  S//[        / SQSS9[        / SQSS9S9n[        R
                  " X$5        UR                  SSS/S	9n[        R                  " S/S//5      n[        / SQ[        / SQSS9US9n[        R
                  " X$5        g )N)rL   rM   rN   )r%   r&   r'   )r8   rL   r   rO   rP   rR   rQ   rS   ri   rv   r   r!  rL   rM   rN   r   )	r
   r   r   r   r:   r;   r)   r   r   )r.   rY   rZ   r{   rE   s        r/   test_pivot_table_not_series*TestPivotTable.test_pivot_table_not_series  s7   
 	?IVWvv.>N""I#?PVGWXYa&B
f/ffeT 2661bff"57JK	//7
 	f/fugF""UGfX#67YeIF.KUVW
f/r2   c                     Sn[        S/ SQ0[        S/[        S9S9n[        US/[        SUS9n[        SS	S
U/SSS9n[        U/ S9n[
        R                  " X55        g )Nu   Δοκιμήr   rf   r   r   T)r5   rT   r   r  r8   r!   rL   r  rk  r   )r
   r   r  r   r<   r:   r;   )r.   greekframerC   r5   rE   s         r/   test_pivot_margins_name_unicode.TestPivotTable.test_pivot_margins_name_unicode  sk    65),eUG66RS%#t%
 q!Q&hUC5"5
e.r2   c                    [        / SQ/ SQ[        S5      S.5      n[        USSSS9n[        S	/S
S//SS/SS//S S/S9n[        SSS.SSS.S.US9R	                  S5      n[
        R                  " X$5        [        USSSS/S9n[        SS/S	/S
S/// SQ/ SQ/ SQ// SQS9n[        SSS.SSS.SSS.SSS.S.US9R	                  S5      n[
        R                  " X$5        g ) Nr   r   r"   r   r#   r$   rS   r!  r%   r   r   r   r8   r  r2  r  )r   r   r   r4  ))r%   r   )r%   r   r   r9   r   )r   r   r   r   r  )NNr$   r   r  r   g@))r9   r%   r   )r9   r%   r   )rS   r%   r   )rS   r%   r   )r
   r   r   r   r  r:   r;   )r.   r0   rZ   r  rE   s        r/   test_pivot_string_as_func(TestPivotTable.test_pivot_string_as_func  s=     2Y7
@ Tc5IEE5>*Aq6Aq62B4QT+
 #%b1SUAVW
 +c
 	 	f/TcE6?SFOcUUEN;|<#

 .1$&?.1:K&L-/%;-.r%:	 
 +c
 	 	f/r2   kwargsr!   r  )r`   r_   c                    ^^ SS jmUU4S jn[        / SQ/ SQ/ SQS.5      n[        U4SSS	TS
.TD6n[        USSS	US
9n[        R                  " XE5        g )Nc                 .    U R                  5       U-  U-   $ r  rS   rc   r_   r`   s      r/   r   1TestPivotTable.test_pivot_table_kwargs.<locals>.f  s    557Q;?"r2   c                    > T" U 40 TD6$ r  r   rc   r   r  s    r/   rH  1TestPivotTable.test_pivot_table_kwargs.<locals>.g      Q>&>!r2   )goodbadr  r  r  )r   r   r   threer   )r!   rN   rM   r4  r   )r#   r$   r}  r#   r$   r}  rZ  )rL   r
   r   r:   r;   )r.   r  rH  rY   rZ   rE   r   s    `    @r/   test_pivot_table_kwargs&TestPivotTable.test_pivot_table_kwargs  sn    	#	" ;:&
 
3sA
AG
 rc#qQ
f/r2   r   c           
         ^^ S
S jmUU4S jnUR                   " SSSS/STSSS	.TD6nUR                  SSS/SUSSS	9n[        R                  " XE5        g )Nc                 .    U R                  5       U-   U-  $ r  r  r  s      r/   r   8TestPivotTable.test_pivot_table_kwargs_margin.<locals>.f+  s    EEGaK1$$r2   c                    > T" U 40 TD6$ r  r   r  s    r/   rH  8TestPivotTable.test_pivot_table_kwargs_margin.<locals>.g.  r  r2   r&   r#   r$   r%   Tr   )r4   r5   r6   rT   r   rU   )rN   r   r   )r   r:   r;   )r.   r0   r  rH  rZ   rE   r   s     `   @r/   test_pivot_table_kwargs_margin-TestPivotTable.test_pivot_table_kwargs_margin&  s    
	%	" !! 
*
 
 ##* $ 
 	f/r2   z
f, f_numpyrb  r  c                 ~    UR                  SS9n[        USSUS9n[        USSUS9n[        R                  " XE5        g )Nr%   r   r#   r$   r!  )r  r   r:   r;   )r.   r   f_numpyr0   rZ   rE   s         r/   test_pivot_string_func_vs_func-TestPivotTable.test_pivot_string_func_vs_funcF  sB     yyy%Tc1Et3WM
f/r2   c           
          " S S[         R                  5      nUR                  5        nUR                  [         SU5        [	        [
        R                  " S5      [
        R                  " S5      SS.5      nSn[        R                  " XS9   [        R                  " [        S	S9   UR                  S
SSSS9  S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nc                   6   ^  \ rS rSrSU 4S jjrSS jrSrU =r$ )YTestPivotTable.test_pivot_number_of_levels_larger_than_int32_warns.<locals>.MockUnstackeri_  c                 :   > [         TU ]  " U0 UD6  [        S5      e)NDon't compute final result.)super__init__	Exception)r.   argsr  	__class__s      r/   r  bTestPivotTable.test_pivot_number_of_levels_larger_than_int32_warns.<locals>.MockUnstacker.__init__`  s!     $1&1 =>>r2   c                     g r  r   r-   s    r/   _make_selectorsiTestPivotTable.test_pivot_number_of_levels_larger_than_int32_warns.<locals>.MockUnstacker._make_selectorse  s    r2   r   )returnN)__name__
__module____qualname____firstlineno__r  r  __static_attributes____classcell__)r  s   @r/   MockUnstackerr  _  s    ?
 r2   r  
_Unstackeri   r   )ind1ind2r  z$The following operation may generater  r  r  r  r  rZ  )reshape_libr  contextsetattrr
   r)   r   r:   assert_produces_warningr  r  r  r   )r.   performance_warningmonkeypatchr  r{   rY   r  s          r/   3test_pivot_number_of_levels_larger_than_int32_warnsBTestPivotTable.test_pivot_number_of_levels_larger_than_int32_warnsY  s    	K22 	   "aIIk<?5)299U3CaPB 9C++,?K]]94QRNN$fWg #  S L #" SR LK #"s<   A%C7C&)C<C&C7
C#C&&
C4	0C77
Dc                    [        / SQ/ SQ/ SQS.5      nS nS nS n[        USXEU/US	9nS
S[        R                  [        R                  SS/SS[        R                  [        R                  SS//n[        R
                  " / SQSS//S S/S9n[        USS/US9n	U(       a  U	R                  SS9n	[        R                  " Xi5        g )N)applepeachr!  r8   r8   r!   )r   r9  r9  )fruitsizetastec                     g)Nr8   r   r   s    r/   ret_one?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_one  s    r2   c                     [        U 5      $ r  r  r   s    r/   ret_sum?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_sum  s    q6Mr2   c                 "    [         R                  $ r  )r)   r   r   s    r/   ret_none@TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_none  s    66Mr2   r$  r6   rT   ru   rL   r8   r  r9  )r+  r.  r(  r!  r"  rv   r%  r&  r   r6   r  )	r
   r   r)   r   r   from_productru   r:   r;   )
r.   ru   rY   r(  r+  r.  rZ   r0   r   rE   s
             r/   test_pivot_table_aggfunc_dropna.TestPivotTable.test_pivot_table_aggfunc_dropnau  s    4!"
			 'W)Ef
 Arvvrvvq!,r1bffbffa.KL%%/'71CD/
 T&'):CHI6H
f/r2   c                 p   [        / SQS[        R                  S/S[        R                  [        R                  /S.5      n[        USSUS9nS	[        R                  /S[        R                  //n[	        S
S/SS9n[        USS/US9nU(       a  UR                  SS9n[        R                  " X65        g )N)r   r   r   rL   r!   r8   )r#   rc   rd   r#   r9   r0  r   r   r   r   rc   rd   r   r6   r  )r
   r)   r   r   r   ru   r:   r;   )r.   ru   rY   rZ   r0   r   rE   s          r/   &test_pivot_table_aggfunc_scalar_dropna5TestPivotTable.test_pivot_table_aggfunc_scalar_dropna  s    'q"&&!nArvvrvvCVW
 RfVLbff266{+UEN-T#sSAI6H
f/r2   r   c                     [        / SQ/ SQ/ SQ/ SQS.5      nUR                  SSS[        R                  US	9n[	        / SS
9n[        [	        / SSS9US9n[
        R                  " X55        g )N)r!   r!   rL   rL   r!   )rN   r9  r   r  r   )pr  r  r8  r  )NNNNN)r#   idr%   r&   r#   r&   r9  )r5   r6   r4   rT   r   r   r   rk  r   )r
   r   r)   r%  r   r:   r;   )r.   r   rY   rZ   exp_colsrE   s         r/   test_pivot_table_empty_aggfunc-TestPivotTable.test_pivot_table_empty_aggfunc  st     $%.3	
 s4'   
 #&57#ExX
f/r2   c                     S n[        / SQ/ SQ/ SQS.5      n[        R                  " [        SS9   UR	                  SSS	US
9  S S S 5        g ! , (       d  f       g = f)Nc                 .    [         R                  " U 5      $ r  )r)   r9   )arrs    r/   rA   =TestPivotTable.test_pivot_table_no_column_raises.<locals>.agg  s    773<r2   r   r  )r   r4  ra  (   )r}  r~  Z
notpresentr  r}  r~  )rT   )r
   r  r  r  r   )r.   rA   rY   s      r/   !test_pivot_table_no_column_raises0TestPivotTable.test_pivot_table_no_column_raises  sI    	  \CSTU]]8<8NN<c3N? 988s   A
Ac                    [        / SQ/ SQ/ SQ/ SQ/ SQS.5      n[        USS/S	S
/S/ SQS.S9n[        R                  " / SQ5      n[        R                  " / SQS	S
/S9n[        R
                  " / SQ/ SQ/ SQ/ SQ/5      n[        XSUS9nUS   R                  [        R                  5      US'   US   R                  [        R                  5      US'   [        R                  " X&5        g )Nr  r  r  r  r  r  r&   r'   r#   r%   r9   )rb  r  r9   r3  )r4   r5   rT   ))r&   r9   r'   r  )r'   r9   r'   rb  ))r   r  )r   r  )r   r  )r   r  rv   )r        "@g      @r   )r  rI  g      !@r   )r   r   r   r   )g["8@r   g.UUU@r   r  rH  rG  )
r
   r   r   rw   r)   r#  rX   r   r:   r;   )r.   rY   rC   rh   r5   valsrE   s          r/   0test_pivot_table_multiindex_columns_doctest_case?TestPivotTable.test_pivot_table_multiindex_columns_doctest_case  s     TT
 10
( :* '=>	
 %%F
 &&T*
 xx$$$2	
 Tu=!),!7!>!>rxx!H!),!7!>!>rxx!H
e.r2   c           	      P   [        / SQ/ SQ/ SQ/ SQS.5      nUR                  SS/SS	S
SS9n[        S[        R                  /S[        R                  /[        R                  S//[	        SS/SS9[
        R                  " / SQ/ SQ/SS/S9S9n[        R                  " X#5        g )N)d1d4d3r^   )   r  "   )2018rS  2019)r_   r   numr&  r_   r   r&  rU  rS   F)r5   r6   r4   rT   sortrQ  r  rR  rS  rT  r   rv   r  	r
   r   r)   r   r   r   r   r:   r;   r  s       r/   test_pivot_table_sort_false*TestPivotTable.test_pivot_table_sort_false  s    '&#0	
 ,ueRW   
 "&&\B<"&&"666*8((#_5c5\
 	f/r2   c           	          [        SSS/[        SS/SS9S.5      nUR                  S	S
SSS9n[        SS/SS/SS//[        / SQS	S9[        R
                  " SS/S S
/S9SS9n[        R                  " X#5        g )Nr#   r8   r!   r   r"   Int64r   )r_   r`   salesr`   r_   TrS   r  r  rs  r   r\  r#   r\  r   rv   r5   r6   r   )r
   r   r   r   r   rw   r:   r;   r  s       r/   !test_pivot_table_nullable_margins0TestPivotTable.test_pivot_table_nullable_margins	  s    QFVRHG-LM
 c3eT"XBx"b*C0**!124+ 
 	f/r2   c           	          [        SS/SS/SS/SS/S	.5      nUR                  S
S/SS/SS9n[        SS/SS//SS/[        R                  " SS/S
S/S9S9n[        R
                  " X#5        g )NJohnMichaelFooBar      /   r  )	firstnamelastnameheightagerk  rj  rl  rm  F)r5   r4   rV  g     e@g     G@g     f@g     @@)re  rc  )rf  rd  rv   r  )r
   r   r   rw   r:   r;   r  s       r/   0test_pivot_table_sort_false_with_multiple_values?TestPivotTable.test_pivot_table_sort_false_with_multiple_values	  s    $i0"EN*Bx	
 {+Xu4EE   
 T]UDM*u%(( "45!;/
 	f/r2   c           	      (   [        / SQ/ SQ/ SQ/ SQ/5      n/ SQUl        UR                  SSSS	S
SS9n[        / SQ/ SQ/ SQ/5      n/ SQUl        / SQUl        SUR                  l        SUR                  l        [
        R                  " X#5        g )Nr_   rc   r8   r_   rd   r!   r`   rd   rL   r`   re   rM   )r   r4  ra  r   r4  ra  rS   r   Tr5   r6   r4   rT   rU   r   r8   r!   r   rL   r   rL   rM   r   r8   rN   rM   r   rc   rd   re   r   r_   r`   r   )r
   r6   r   r5   r?   r:   r;   r  s       r/   1test_pivot_table_with_margins_and_numeric_columns@TestPivotTable.test_pivot_table_with_margins_and_numeric_columns5	  s    }m]ST!
bUqRV   
 lL-HI1* " 
f/r2   zdtype,expected_dtype)r[  Float64)r   r   c           	          [        SS[        SS/US9S.5      nUR                  SSS	S
US9n[        S//[        S/SS9[        S/SS9US9n[        R
                  " XV5        g )Nr_   r`   r4  rA  r   )rc   rd   rm  rc   rd   rm  r9   )r5   r6   r4   rT   ru   ra  r   r_  )r
   r   r   r   r:   r;   )r.   ru   r   expected_dtyperY   rZ   rE   s          r/   test_pivot_ea_dtype_dropna)TestPivotTable.test_pivot_ea_dtype_dropnaF	  s|     Ss62r(%3PQRs5&   
 TFC(3%c* 	
 	f/r2   c                    [        SSS/[        R                  " S5      SS/S.5      n[        R                  " S 5         UR                  SS	/S
SSS9nS S S 5        [        SS/SS/SS//[        R                  " [        / SQSS9[        [        R                  " S5      [        R                  " S5      S/[        S	S9/5      [        R                  " SS/S S
/S9S9n[        R                  " WU5        g ! , (       d  f       N= f)Nr#   r8   r!   z
2019-12-31g      $@r"   )r_   r`   r   r\  r`   r   r_   TrS   r  r>  g      5@rs  r   r  rk  r]  r^  rv   r   )r
   r   r<  r:   r  r   r   r   r   r  rw   r;   r  s       r/   !test_pivot_table_datetime_warning0TestPivotTable.test_pivot_table_datetime_warningX	  s   V\2	
 ''-^^FmS$ $ F . D\D$<$6((-c2l3R\\,5OQST$#	 **!124+
  	fh/) .-s   C77
Dc                 2   [        / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQS.5      n[        USSS	/S
/SS9n[        SS/SS/SS/[        R                  S//[	        SS/S
S9[
        R                  " / SQSS/S-  /SS	/S9S9n[        R                  " X#5        g )Nr  r  r  r  r  )r#   r$   r%   r&   r'   )col5)col6r9  r   sevenr&   r#   r$   r  rS   r  r   r   r   r   r   r  r  r   )r   r   r   r   r   r   r!   rv   r  rW  r  s       r/   )test_pivot_table_with_mixed_nested_tuples8TestPivotTable.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*
 	f/r2   c                 2   [        [        S5      [        S5      [        S5      [        S5      S.5      n[        R                  " [        S5       Vs/ s H  nSPM     sn[        S5       Vs/ s H  nSPM     sn[        S5      /SS9n[        R
                  " S[        R                  5      n[        R                  " US5        [        U[        [        S5      S	S
9US9nUR                  S	/S/S/S/S9n[        R                  " Xe5        g s  snf s  snf )Nr   r   nuniquera   )NNr`   rv   )r   r   r   r_   r   r   r`   rZ  )r
   r   r   r   r)   fullr   fill_diagonalr   r   r:   r;   )r.   testr   	columnvalnparrrE   rZ   s          r/   6test_pivot_table_aggfunc_nunique_with_different_valuesETestPivotTable.test_pivot_table_aggfunc_nunique_with_different_values	  s   2Y2Y2Y2Y	
 **$)"I.IqI.#Bi(ii(b	
 $
	 "&&)
$U%b	*DiX!!   K " 
 	f// /(s   D-D
c           	         S /[        S5      Q/ [        S5      QS P[        S5      S.n[        U5      nUR                  SSSUS9n/ [        S5      QS Pn[        R                  nUSXfU/XfS	Xf/XfUS
U/XfXfS/SXfXf//n[        U[        USS9[        USS9S9nU(       a  UR                  / SQ/ SQ4   n[        R                  " XHS9  g )NrM   rN   )rB  r   valr  rB  r   )r4   r5   r6   ru   r   r   r   r   r   r  rt  r   rf   )r   r   )	r   r
   r   r)   r   r   r=  r:   r;   )	r.   ru   r0   rY   rZ   e_axisr   e_datarE   s	            r/   /test_pivot_table_index_and_column_keys_with_nan>TestPivotTable.test_pivot_table_index_and_column_keys_with_nan	  s    (uQx(1B581BT1B5QR8Tt_uE5QWX"58"T"ff#s%sC%sC%s%#C%
 V%0vE2

 ||Iy$89H
6:r2   z'index, columns, e_data, e_index, e_colsCategoryValuer   r  r   r4  rA  2   zvalues-and-columnszvalues-and-index)idsc                     / SQ/ SQS.n[        U5      nUR                  XSSS9n[        X4US9n	[        R                  " X5        g )N)r#   r$   r#   r$   r  )r  r  r  r  rZ  rt  r  )
r.   r5   r6   r  e_indexe_colsr0   rY   rZ   rE   s
             r/   %test_pivot_table_values_as_two_params4TestPivotTable.test_pivot_table_values_as_two_params	  sO    @ 1;KLt_'   
 &H
f/r2   c                 R   [        / SQ/ SQ/ SQS.5      nUR                  SSSSS	S
S9n[        SS[        R                  SS.[        R                  [        R                  SSS.SSSSS.05      nSUR                  l        SUR                  l        [        R                  " X#S	S9  g )Nrf   )r_   r`   r`   )rc   NN)r   g1g2r  r  r   r  FT)r5   r6   r4   rT   ru   r   rc   r   rz  r   r   r   )check_dtype)	r
   r   r)   r   r5   r?   r6   r:   r;   r  s       r/   +test_pivot_table_margins_include_nan_groups:TestPivotTable.test_pivot_table_margins_include_nan_groups
  s    %'
    
 3RVVC8bff3s;Ss37
 # $
fEBr2   r   )NNr   )lr  r  r  r  r  fixturer0   rF   r[   rm   r|   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r  r  r'  r6  rC  rT  rf  rn  ru  rW   r)   r#  r   r   r  r  r  xfailr  r  r  r  r  r   rw   r  r  r  r  r  r  r  r0  r4  r9  rA  rD  rL  rQ  r^  rd  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rS   r9   rb  r  r  slowr  r2  r5  r;  rD  rK  rX  r`  rn  r{  r  r  r  r  r  r   r  r  r  r   r2   r/   r   r       sY   ^^.
 .
`/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HHeU^$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r2   r   c                      \ rS rSrS rS rS rS rS rS r	S r
\R                  R                  \" 5       S	S
9S 5       rS rS rS rS rS rS r\R                  R-                  SSS/5      S 5       rS rS r\R                  R5                  S5      S 5       r\R                  R-                  S/ SQ5      S 5       rSrg)	TestPivoti>
  c                    / SQ/ SQ/ SQS.n[        U5      nUR                  SSSS9n[        SS	S
S.SS	S
S.S.5      nSu  UR                  l        UR                  l        [
        R                  " X45        UR                  R                  S:X  d   eUR                  R                  S:X  d   eUR                  SSS9nUR                  R                  S:X  d   eUR                  R                  S:X  d   eg )Nr#   r$   r%   r%   r$   r#   Oner  r  Twor  r  r   r   r   r   r   r   r   r5   r6   r4   r   r   r   r   r  r  r   Nr6   )r
   r5  r5   r?   r6   r:   r;   r=   )r.   r0   r  r/  rE   s        r/   
test_pivotTestPivot.test_pivot?
  s    3A4
 $++GYx+P s5 s5
 6H2X--2
g0 }}!!W,,,##y000 ++GY+?}}!!W,,,$$(9999r2   c                     [        / SQ/ SQ/ SQS.5      n[        R                  " [        SS9   UR	                  SSS	S
9  S S S 5        g ! , (       d  f       g = f)N)r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   r^   zduplicate entriesr  r_   r`   ra   r   )r
   r  r  rP  r5  )r.   r0   s     r/   test_pivot_duplicatesTestPivot.test_pivot_duplicates\
  sJ    88.
 ]]:-@AJJS#cJ: BAAs   A


Ac                 z    [        / SQS9nUR                  SSSS9n[        / / S9n[        R                  " X#SS	9  g )
Nr^   r   r_   r`   ra   r   r   Fr  )r
   r5  r:   r;   r  s       r/   test_pivot_emptyTestPivot.test_pivot_emptyg
  s<    /S=2r2
fEBr2   c                     [        SS/US9nUR                  SSSS9n[        SS	/SUS
9n[        R                  " UR
                  U5        g )N)r#   r  A1)r$   r  B2)r0   r   r8   r   r!   r   r#   r$   rM  )r
   r5  r   r:   rx   r6   )r.   any_string_dtyperY   rZ   r   s        r/   test_pivot_integer_bug TestPivot.test_pivot_integer_bugm
  sW    "$45=M
 1Q7 #s!;KL
fnn.>?r2   c                    / SQ/ SQ/ SQS.n[        U5      R                  S5      nUR                  SSS9n[        S	S
SS.S	S
SS.S.5      nSu  UR                  l        UR
                  l        [        R                  " X45        UR                  SS9n[        R                  " SS/S S/S9Ul        SUR                  l        [        R                  " X4SS9  UR                  R                  S:X  d   eUR
                  R                  S:X  d   eUR
                  R                  S5      Ul        UR                  SSS9nSUR
                  l        [        R                  " X45        g )Nr  r  r  r   r5   r6   r4   r6   r4   r   r   r   r   r  r   r   )r4   r  )r4   r  rv   Fr  r  r   )r
   rc  r5  r5   r?   r6   r:   r;   r   rw   r=   r  )r.   r0   r  rZ   rE   s        r/   test_pivot_index_noneTestPivot.test_pivot_index_nonev
  sU    4A4
 $))'2Yx@ s5 s5
 6H2X--2
f/ Y/%11 124:K
 &
fEB||  G+++~~##'8888#++55a8Yx@ )
f/r2   c                    [        / SQ/ SQ/ SQ/ SQ/ SQS.5      nSS/nS	/nUR                  X#S
9n[        [        R                  " / SQS[        R                  S[        R                  // SQ[        R                  S[        R                  S//5      [
        R                  " SS/SS/S9[
        R                  " SS/S S	/S9S
9n[        R                  " XE5        USS/:X  d   eUS	/:X  d   eg )N)r8   r8   r8   r!   r!   r!   )r8   r8   r!   r8   r8   r!   )r8   r!   r8   r!   r8   r!   r}  r  )lev1lev2lev3lev4r4   r  r  r  r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   )r8   r!   r8   r!   rv   )r  r  r4   r4   )	r
   r5  r)   r#  r   r   r   r:   r;   )r.   rY   r5   r6   rZ   rE   s         r/   0test_pivot_index_list_values_none_immutable_args:TestPivot.test_pivot_index_list_values_none_immutable_args
  s    ****,
  (7HH("&&#rvv.(VVS"&&#.	 ((|,VV4D **5|DVn
$ 	f/((((6("""r2   c                     [        S/SS.5      n[        R                  " [        SS9   UR	                  5         S S S 5        g ! , (       d  f       g = f)Nr8   r  z(missing 1 required keyword-only argumentr  r  )r.   rY   s     r/   test_pivot_columns_not_given&TestPivot.test_pivot_columns_not_given
  s8    aSq)*]]9,VWHHJ XWWs   A
Az&TODO(infer_string) None is cast to NaNr  c                 z   [        S/SSS.5      nUR                  S S9n[        S/SS.5      n[        R                  " X#5        UR                  S SS9n[        S	S0[	        S/SS
9S9n[        R                  " X#5        UR                  S SSS9n[        SS0[	        S/SS
9S9n[        R                  " X#5        g )Nr8   r!   rL   Nr`   ra   r   ))r`   r8   ra   r8   r`   r  r  r   r   ra   r6   r5   r4   )r
   r5  r:   r;   r   r  s       r/   test_pivot_columns_is_none$TestPivot.test_pivot_columns_is_none
  s    
 qc23$'q9:
f/$c2h]%#2FG
f/$c#>aV5!3+?@
f/r2   c           	      t   [        S/SSS.5      nUR                  SS S9n[        SS0S/S9nS S/UR                  l        [        R
                  " X45        UR                  SS S	S
9n[        SS/[        S/SS9S9nU(       a  [        R                  UR                  l
        [        R
                  " X45        g )Nr8   r!   rL   r  r`   r  )ra   r!   r   ra   r  r   r   )r
   r5  r6   r=   r:   r;   r   r)   r   r5   r?   )r.   r  rY   rZ   rE   s        r/   test_pivot_index_is_none"TestPivot.test_pivot_index_is_none
  s    qc23#T2h]1#6"&
f/#T#>Qqc5!33GH"$&&HNN
f/r2   c           	      "   [        S/SSS.5      nUR                  SSS S9n[        S[        S/SS9[        S/SS9S	9n[        R                  " X#5        UR                  SS S
9n[        SS/[        S/SS9S	9n[        R                  " X#5        g )Nr8   r!   rL   r  r`   ra   r  r   r   r  r   )r
   r5  r   r:   r;   r  s       r/   test_pivot_values_is_none#TestPivot.test_pivot_values_is_none
  s    qc23#S>UA3S)5!33G
 	f/#d3Qqc5!33GH
f/r2   c                     [        S/SSS.5      nUR                  SS9nUR                  SSS	S
9  [        R                  " X5        g )Nr_   r   r8   )r   r   r  T)deepr   r   r  r   )r
   r  r5  r:   r;   )r.   rY   rE   s      r/   "test_pivot_not_changing_index_name,TestPivot.test_pivot_not_changing_index_name
  sE    uQ;<777%
ueG<
b+r2   c                     [        / / SQS9nUR                  SSSSS9n[        / SSS	9n[        R                  " UR
                  U5        g )
N)r_   r`   r
  r   r_   r`   r
  r  rZ  r  rk  )r
   r   r   r:   rx   r6   r.   rY   r5  rE   s       r/   .test_pivot_table_empty_dataframe_correct_index8TestPivot.test_pivot_table_empty_dataframe_correct_index
  sG    r#67S#gwW8#6
emmX6r2   c           	         [        SSSS.SSSS.SS	S
S./5      n[        R                  " US   5      US'   [        R                  " S5         UR                  SS/S/SSS9nS S S 5        [        R                  " S[        R                  " SS5      4S[        R                  " SS5      4S[        R                  " SS5      4S/SS/S9n[        R                  " WR                  U5        g ! , (       d  f       N= f)Nrc   z
2023-01-01r8   )r_   date_strrq   rd   z
2023-01-02r!   re   z
2023-01-03rL   r  r   Fr_   rq   rS   T)r5   r4   rT   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  rv   )r
   r   to_datetimer:   r  r   r   rw   r   strptimerx   r5   r  s       r/   0test_pivot_table_handles_explicit_datetime_types: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--
C;c           	          [        / SQ/ SQ/ SQ/ SQ/5      nUR                  SSSSSS	S
9n[        / SQ/ SQ/ SQ/[        / SQSS9[        / SQSS9S9n[        R                  " X#5        g )Nrq  rr  rs  rt  r   r8   r!   rS   Tru  rv  rw  rx  ry  r   rz  r  r  r  s       r/   6test_pivot_table_with_margins_and_numeric_column_names@TestPivot.test_pivot_table_with_margins_and_numeric_column_names!  sq    }m]STQq%At   
 <70q9)2

 	f/r2   r{   r8   r   c                    [         R                  " U5      n[        R                  " U/S-  5      n[         R                  " X-  S-  5      R	                  X-  S5      n[        XC[         R                  " S5      5      nUR                  5       nUR                  SS9nSUR                  S'   [        R                  " XV5        g )Nr!   r:  F)rV  r   )r   r   )r)   r   r   r1  r   r
   r  rB   r  r:   r;   )r.   r{   r  r5   r4   rY   df_origrZ   s           r/   test_unstack_copyTestPivot.test_unstack_copy0  s     1''15153;'//s;vbiin5'')'D
b*r2   c           	          [        [        / [        R                  " SS9S9[        / [        S9[        / [        S9S.5      nUR                  SSSS9nUR                  (       d   eg )	NUTCrX  r   )	timestamprV   r
  rV   r
  r  r   )r
   r   r   DatetimeTZDtyper  r   r$  )r.   rY   
df_pivoteds      r/   test_pivot_empty_with_datetime(TestPivot.test_pivot_empty_with_datetime<  sg    #Bb.@.@E.JK"2S1#.
 ^^gk $ 

 r2   c           
          [        / SQ/ SQ/ SQ/ SQS.5      nUR                  S SS/SS	S
S9n[        / SQ/S/[        SS// SQ// SQ/ SQ/SS/S9S9n[        R                  " X#5        g )Nr#  )rL   rL   rM   )rN   rN   r9  r|  )rc   rd   re   r  rd   re   r  Tr  )r5   r6   r4   r   rT   )r!   r!   r8   r8   rL   rM   )rN   r9  r   r   )r   r!   r8   r!   r  r   )r
   r   r   r:   r;   r  s       r/   "test_pivot_margins_with_none_index,TestPivot.test_pivot_margins_with_none_indexJ  s    	
 #J   
 N%A.#\2Cj
 	f/r2   z0ignore:Passing a BlockManager:DeprecationWarningc           	      <   [         R                  " S5      n[        / SQ/ SQS.5      R                  [	        UR                  UR                  5       UR                  5       5      5      SS.5      nUR                  S/S/S9n[        R                  " / S	Q/ SQ/S
S9n[        S[        R                  [        R                  /[        R                  S[        R                  /[        R                  [        R                  S//US9n[        R                  " X$SSS9  g )Npyarrowr   rf   )string_columnnumber_columnzfloat[pyarrow]r  r  r  )r  r  r  )Nr  rv   r   r   r   r   F)r  check_column_type)r  importorskipr
   rX   r   
dictionaryr  stringr5  r   r   r)   r   r:   r;   )r.   parY   multi_indexdf_expecteds        r/   #test_pivot_with_pyarrow_categorical-TestPivot.test_pivot_with_pyarrow_categoricalf  s       +-	J

&!+BMM"((*biik,R!S!1
 	 XX/8IXJ ,,@/R)
  266266"RVVS"&&$9BFFBFFC;PQ
 	%	
r2   r  )r&   ri  Qr~  c                     [         R                  " US9n[        / / / S.5      nUR                  SU05      nUR	                  SSSS9n[        / SSS9n[        / SSS9n[        XVUS9n[        R                  " XG5        g )	Nr
  r   r4   r5   r6   r   rM  r_  )r   PeriodDtyper
   rX   r5  r   r:   r;   )r.   r  r   rY   rZ   r   r   rE   s           r/   'test_pivot_empty_dataframe_period_dtype1TestPivot.test_pivot_empty_dataframe_period_dtype  s     D)bABYY%()8LryA )9E %
 	f/r2   r   N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  filterwarningsr  r  r  r   r2   r/   r  r  >
  s    ::	;C@"0H$#L [[%M  0000,7560 [[S1b'*	+ +	+ 08 [[ RS
 T
6 [[V%9:0 ;0r2   r  )"r   r   r   	itertoolsr   r  numpyr)   r  pandas._configr   pandasr   r   r	   r
   r   r   r   r   r   r   pandas._testing_testingr:   pandas.api.typesr   pandas.core.reshaper   r  pandas.core.reshape.pivotr   r   r  r   r2   r/   <module>r     s\    
  	   - 
 
 
  - 6 1[(C [(C|PS0 S0r2   