
    Mhl                    n   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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  S SKJr  S SKJr  S SKJr  S S	KJ r   \RB                  " S
S/S9S 5       r"\RB                  " S /S-  S/S-  4\#" S5      \#" SS5      4/S9S 5       r$ " S S5      r% " S S5      r&g)    )datedatetime	timedelta)productN)using_pyarrow_string_dtype)PerformanceWarning)Categorical	DataFrameGrouperIndex
MultiIndexSeriesconcat
date_range)CategoricalDtype)reshapepivot_tableTF)paramsc                     U R                   $ N)param)requests    Q/var/www/html/env/lib/python3.13/site-packages/pandas/tests/reshape/test_pivot.pydropnar   !   s    ==             c                 p    U R                   u  p#[        [        R                  R	                  X#U5      5      $ r   )r   r	   pdIntervalIndexfrom_arrays)r   closedleftrights       r   interval_valuesr'   &   s+    --KDr''33DHIIr   c                      \ 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S 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$S%S&/\!RD                  " S%S&/5      \#" S%S&/5      \$" S%S&/5      /5      \R*                  R-                  SSS/5      S' 5       5       r%\R*                  R-                  S$S(S%/\!RD                  " S(S%/5      \#" S(S%/5      \$" S(S%/5      /5      \R*                  R-                  SSS/5      S) 5       5       r&S* r'\R*                  RQ                  S+S,9\R*                  R-                  SSS/5      S- 5       5       r)\R*                  R-                  SSS/5      S. 5       r*S/S0/S1/S24S3 jr+S4 r,S5 r-\R*                  R-                  S6S/S7/ S8Q/ S9Q/\$" / S:QS/S;94S/S0/S</ S=Q/ S>Q/\.R^                  " / S?QS/S0/S@94/5      SA 5       r0SB r1SC r2\R*                  R-                  SD/ SEQ5      SF 5       r3SG r4SH r5SI r6SJ r7SK r8SL r9SM r:SN r;SO r<\R*                  R-                  SPSQSRSSSTSUSV//5      SW 5       r=SX r>SY r?SZ r@S[ rAS\ rBS] rCS^ rDS_ rES` rFSa rGSb rHSc rISd rJSe rKSf rLSg rMSh rN\R*                  R-                  SiS<\!R                  4S7\!R                  4Sj\!R                  4S<S7/\!R                  \!R                  /4S<Sj/\!R                  \!R                  /4SjS7/\!R                  \!R                  /4/5      Sk 5       rR\R*                  R                  Sl 5       rTSm rUSn rV\R*                  R-                  SoSS/5      Sp 5       rWSq rXSr rYSs rZSt r[Su r\Sv r]\R*                  R-                  SwSS/5      Sx 5       r^Sy r_Sz r`S{ raS|rbgT)}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-   oner0   r0   twor0   r0   r0   r1   r1   r1   r0   )dullr2   shinyr2   r2   r3   r3   r2   r3   r3   r3         )ABCDEF)r
   nprandomdefault_rngstandard_normal)selfs    r   dataTestPivotTable.data-   s}     YY**1-==bAYY**1-==bAYY**1-==bAU+-
 -	
r   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                  X4/-   5      S   R                  S	5      R                  5       n[        R                  " XW5        g )
Nr6   r7   r8   r9   )valuesindexcolumnsobserved)rD   rE   rG   r   r   mean)r   tmassert_frame_equallenrE   namestuplenamerF   groupbyaggunstack)r@   rG   rA   rE   rF   tabletable2expecteds           r   test_pivot_tableTestPivotTable.test_pivot_table^   s   c
EX
 !!ex " 
 	e, 	DEEu:>;;$$e444;;##uQx///w<!==&&'111==%%333<<	 1237;;FCKKM
e.r   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r   r4   r   r      col1col2col3r]   r_   r^   sumr   )rE   rD   rF   aggfunc
fill_valuecategory)rE   rD   rF   ra   rb   rG   )
r
   listr   rE   astyperF   r]   r^   rI   rJ   )r@   rG   dfrT   results        r   +test_pivot_table_categorical_observed_equal:TestPivotTable.test_pivot_table_categorical_observed_equalz   s    ']DM?S
 >>ST " 
 "..z:#++22:>''..,''..,   
 	f/r   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r   r4   r   )rowscolsrD   ru   r`   )rF   ra   rE   ra   rD   rH   )r
   r   TrI   rJ   )r@   rf   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%r   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   r   r4   r   r6   r7   r8   i[ i] i\ i^ rl   rm   rn   di i  i@B )amountcustomermonthr   quantityr   r   r   r   F)r   ))r6   rl   )r6   rm   )r6   rn   )r6   r}   )r7   rl   )r7   rm   )r7   rn   )r7   r}   )r8   rl   )r8   rm   )r8   rn   )r8   r}   rL   )r
   r   r   from_tuplesrI   assert_index_equalrF   rE   )r@   rf   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.r   c                 `   [        / SQ/ SQSS9n[        / SQ/ SQSS9n[        X/ SQS.5      nS	n[        R                  " [        US
9   [        USSS/SS9nS S S 5        [        R                  " X/SS/S9n[        S/ SQ0US9n[        R                  " WU5        g ! , (       d  f       NL= f)Nrl   rl   rm   rm   )rl   rm   rr   T
categoriesordered)rn   r}   rn   r}   )rn   r}   rq   r   r4   r   r   )r6   r7   rD   1The default value of observed=False is deprecatedmatchrD   r6   r7   )rD   rE   r   r   )      ?       @      @      @rE   )	r	   r
   rI   assert_produces_warningFutureWarningr   r   r#   rJ   )r@   cat1cat2rf   msgrg   	exp_indexrT   s           r   test_pivot_table_categorical+TestPivotTable.test_pivot_table_categorical   s     _d
  _d
 TEFA''SA HS#JtTF B **D<SzJ	h(<=YO
fh/ BAs   
B
B-c                 $   / SQn[        / SQ/ SQ[        S5      S.5      nUS   R                  [        USS95      US'   S	n[        R
                  " [        US
9   UR                  SSSUS9nS S S 5        [        / 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                  " WU5        g ! , (       d  f       N= f)Nrl   rm   rn   r}   )	rl   rl   rl   rm   rm   rm   rn   rn   rn   )	r   r4   r   r   r4   r   r   r4   r   	   r6   r7   r8   r6   Fr   r   r   r7   r8   )rE   rF   rD   r   rk   rN   rs   )        r         @)r   r         @)r         @       @rE   rF   rF   float)r
   rangere   r   rI   r   r   r   r   reindexr	   rJ   )	r@   r   r   rf   r   rg   expected_columnsexpected_indexrT   s	            r   $test_pivot_table_dropna_categoricals3TestPivotTable.test_pivot_table_dropna_categoricals   s   )
B01X
 S'..!1*e!LM3A''SA^^#s3v^VF B!/<+22Z7
  	4o? $

 ''J0G'HOOPWXH
fh/! BAs   D
Dc                    [        [        [        R                  SSSS/SS/SS9/ SQS.5      nSn[        R
                  " [        US9   UR                  S	S
US9nS S S 5        U(       a	  SS/nSS/nO/ SQn/ SQn[        S
U0[        [        R                  " USS/US9S	S9S9n[        R                  " WU5        g ! , (       d  f       Nh= f)NlowhighTr   )r   r   r   r   r   r6   r7   r   r   r6   r7   rE   rD   r   r   r   r   r   r   r   r   )r   r   r   r   )r
   r	   r<   nanrI   r   r   r   r   
from_codesrJ   )r@   r   rf   r   rg   rD   codesrT   s           r   %test_pivot_with_non_observable_dropna4TestPivotTable.test_pivot_with_non_observable_dropna   s     VVUFE6: %v 
 /	
 B''SA^^#c&^IF B3ZFFE %FE&M&&ufov 	
 	fh/' BAs   
B>>
Cc                    [        [        / SQ/ SQSS9[        S5      S.5      nSn[        R                  " [
        US9   UR                  S	S
US9nS S S 5        [        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                  " WU5        g ! , (       d  f       Nv= f)N)r%   r   r   r   r   )r   r   r%   Tr   r[   r   r   r   r6   r7   r   r   )r   r   r4   r   r   )r
   r	   r   rI   r   r   r   r   r   re   r   rJ   )r@   r   rf   r   rg   rT   s         r   /test_pivot_with_non_observable_dropna_multi_cat>TestPivotTable.test_pivot_with_non_observable_dropna_multi_cat  s     :6 
 1X	
 B''SA^^#c&^IF B/"&&*A4 	
 $SM007HSM
fh/ BAs    C
Cc                 V   [        USS.5      nSn[        R                  " [        US9   UR	                  SSUS9nS S S 5        [        SS0[        UR                  5       SS	9S
9nU(       d  UR                  [        5      n[        R                  " WU5        g ! , (       d  f       Nd= f)Nr   r   r   r   r6   r7   r   r   r   r   )
r
   rI   r   r   r   r   uniquere   r   rJ   )r@   r'   r   rf   r   rg   rT   s          r   test_pivot_with_interval_index-TestPivotTable.test_pivot_with_interval_index7  s    _156A''SA^^#c&^IF B#JeO$:$:$<3G
 u-H
fh/ BAs   B
B(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Sn[        R                  " [        US9   [        USSSSSS9nS S S 5        WS   n[        / SQ[        [         R                  " SS5      [         R                  " SS5      S/SS9S[        R                  S9n[        R                   " XV5        g ! , (       d  f       N{= f)Nr   r   r   r   r   r   r4   r4   r   r   r   dtyperl   rm   rl   rm   Tr   F)	ascendingr   r   r   r8   r7   r6   r`   rE   rF   rD   ra   marginsAll)r      
   r   r4   r   )rE   rN   r   )r!   r"   r#   r
   r<   arangeintpr	   sort_valuesrI   r   r   r   r   r   Intervalassert_series_equal)r@   ordered_catrf   r   	pivot_tabrg   rT   s          r   &test_pivot_with_interval_index_margins5TestPivotTable.test_pivot_with_interval_index_marginsE  s    &&22<NYYq!Rrww7) d;GG# H 
 B''SA##s3tI B
 5!Q*BKK1,=uECP''	
 	v0 BAs   	D
Dc                     UR                  SUR                  UR                  S9nUR                  SSSS9n[        R                  " X#5        g )Nr9   r   r6   r8   )r   r6   r8   rI   rJ   r@   rA   rg   rT   s       r   test_pass_arrayTestPivotTable.test_pass_arraya  sF    !!#TVVTVV!D##CsC#@
f/r   c                     UR                  SS UR                  S9nUR                  SUR                  S-  SS9n[        R                  " X#5        g )Nr9   c                     U S-  $ )Nr[    rp   s    r   <lambda>3TestPivotTable.test_pass_function.<locals>.<lambda>g  s    qAvr   r   r[   r8   )r   r8   rE   rI   rJ   r   s       r   test_pass_function!TestPivotTable.test_pass_functionf  sK    !!#-=tvv!N##CtzzQ#L
f/r   c                     SS/nSn[        XUS9nUR                  X#/-   5      R                  S5      R                  5       n[        R
                  " XE5        g )Nr6   r7   r8   r   rH   )r   rO   rP   rQ   rI   rJ   )r@   rA   rE   rF   rR   rT   s         r   test_pivot_table_multiple(TestPivotTable.test_pivot_table_multiplek  sQ    c
Dw?<<	 1266v>FFH
e.r   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   )rl   vir   int64rl   r   r   r`   )rD   rE   rF   rb   ra   r4   abr   r   )      ?      @      @      @float64rH   )
r
   dtypesr   r   r<   r   r   rd   rI   r   )r@   frr   rg   rT   s        r   test_pivot_dtypes TestPivotTable.test_pivot_dtypesr  s   1!)
 xx}'''c#!U
 288G,-1tDzPS9TU
v0 1))
 xx}	)))c#!V
 288I./!35dRU;VW
v0r   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 )
Nr[   r   r   r4   r   )r   r   r   r   rE   rE   rF   rD   r   )	r<   r   r   r
   reset_indexr   dictr   r   )	r@   rF   rD   r   rf   df_resrg   colrT   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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	  r6   rZ   r   r   )r6   r   )r6   r4   r   )levelr   r   r   r4   r   r  r9   r[   )freqperiods)r6   dtr  ME)keyr  z
2011-01-31zM8[ns]r         
@YEr  r   z
2011-12-31)r!   DatetimeIndexr
   r   rE   r   dayr   r   
set_levelslevelsre   r<   int32r   r   rI   rJ   r   r   r#   )r@   idxrf   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C 
 nn288>>7tRV;WnX ,,UB$$l^8DE,
 3KuaV288<k
 	c'nnt$g$T.J  
 E""L>=

 	c'r   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 )Nr9   r:   r6   r7   r8   r   )rD   rE   rF   rb   r;   r   axis)rE   rF   rb   )r   droprI   rJ   r   s       r   test_pivot_multi_values&TestPivotTable.test_pivot_multi_values  sX    #s3c
q
 IIse!I$C#sPQ
 	f/r   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$ )Nr9   r:   r6   r7   r8   rD   rE   rF   ra   r   funcrA   s    r   r   ;TestPivotTable.test_pivot_multi_functions.<locals>.<lambda>  s    #sC:sD
r   rH   stdr   )keysr   c           	      (   > [        TSS/SS/SU SS9$ )Nr9   r:   r6   r7   r8   T)rD   rE   rF   ra   r   r   r'  s    r   r   r)    s$    :*
r   )r   rI   rJ   )r@   rA   r   rg   meansstdsrT   s    `     r   test_pivot_multi_functions)TestPivotTable.test_pivot_multi_functions  s    
 FE?#&	x5-vuoAF
f/
 FE?#&	x5-vuoAF
f/r   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            rk   rl   rm   rn   r   r;  r   r:  r<  r   r   )	r<   r   r
   pivotr!   r   rI   rJ   rw   )r@   r1  r   rf   rg   rT   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Wr   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   r9   )r  r  d   )rl   rn   rl   z
2014-02-02rm   )r   rl   )r   rl   r   rm   )r   rm   rn   r   )r
   r   r<   r   r!   	Timestampr   locr=  notnarD   r`   rK   iterrowsrI   rJ   rw   )r@   r1  rf   pv_rowrg   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+r   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  r   r   r   r4   zM8[z, US/Pacific]r     z, Asia/Tokyo]r   r   )dt1dt2data1data2rR  rR  rS  rS  z2014/01/01 09:00z2014/01/02 09:00rQ  rN   r   z2013/01/01 09:00z2013/01/02 09:00rP  r   r4   r   r4   r   r   r   r   r   r   rR  r   )r
   r!   r  r   r<   r   r   r   r#   r=  rI   rJ   )
r@   r1  unitrf   exp_col1exp_col2exp_colexp_idxrT   rH  s
             r   test_pivot_with_tz!TestPivotTable.test_pivot_with_tz4  s    '' q!Q2 q!Q2 q!Q2 q!Q2	  v]3 '' q!Q2 q!Q2 q!Q2 q!Q2	  v]3 1G41G4)
2 =>##!34q8v]+

 ((()=>""!34v]+

 <(
 u5B"E59B
b+VaVRaL
 uWEB"E5IB
b+r   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-0700rc  c                 &    U R                  SSSSS9$ )Nr   )hourminutesecondmicrosecond)replacer   s    r   r   8TestPivotTable.test_pivot_tz_in_values.<locals>.<lambda>  s    199!AaUV9#Wr   rb  minr&  r   z2016-08-12 00:00:00z2016-08-25 00:00:00r   )r
   r!   rD  	set_indexr  rc  mapr   r   r  rI   rJ   )r@   rf   minsrg   rT   s        r   test_pivot_tz_in_values&TestPivotTable.test_pivot_tz_in_valuest  ss     ,,'AlS
  ,,'AlS
  ,,'AlS
  ,,'AlS
  ,,'AlS#
2 \\$++-uuyyWXLL**,'F
  LL!;MLL!;M U+$$LL!6<HLL!6<H 
  	f/r   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-01r9   z
2013-01-02z2013-01Mz2013-02r   r   r   )p1p2rR  rS  rT  r4   rt  )rN   r  rV  rW  rs  r   r   r   r   rR  r   )r
   r!   Periodr<   r   r   PeriodIndexr   r#   r=  rI   rJ   )r@   r1  rf   rY  rZ  r[  rT   rH  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+r   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   )rl   rm   rp   r   r4   r   rl   r   r   rm   rA   rE   rF   rp   T)rE   rF   rD   r   )r
   r!   ru  r   r   rI   rJ   )r@   rf   rT   rg   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/r   rD   bazzooc                 d   [        / 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[        XVUS9nUS   R                  [        5      US'   [        R                  " XH5        g )Nr0   r0   r0   r1   r1   r1   r6   r7   r8   r6   r7   r8   r   r4   r   r   r[   rA  rp   rq   rr   qwtr-   r.   r  r  r-   r.   r   )r   r4   r   rp   rq   rr   )r   r[   rA  r  r  r  r0   r1   rA   rN   r  r  r   )r   r   r   r   r   r   )r   r   r4   r   r   r4   r  r   rL   r}  )	r
   r=  r!   r   r   re   objectrI   rJ   	r@   rD   r1  rf   rg   rA   rE   rF   rT   s	            r    test_pivot_with_list_like_values/TestPivotTable.test_pivot_with_list_like_values  s     A5)5	
 XXE5XHFXXbuVLF(*BCE5>6ENO4%'9:-

 $WE"5/008
f/r   r.   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  r  r-   r   r6   r   r8   rA  r7   r[   r   r4   r   )r  r  r  rp   rq   rr   r  r.   r  r0   r1   r   r   r   r   r   r  r}  )r
   r=  r!   r<   r   r   r   re   r  rI   rJ   r  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/r   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)	Nrk   rs   r\   z=pivot\(\) missing 1 required keyword-only argument: 'columns'r   r]   r_   )rE   rD   r
   pytestraises	TypeErrorr=  )r@   rf   r   s      r   #test_pivot_columns_none_raise_error2TestPivotTable.test_pivot_columns_none_raise_errorB  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   r   r4   r   r   r[   )rA   )r0   r6   r   rp   )r0   r7   r4   rq   )r0   r8   r   rr   )r1   r6   r   r  )r1   r7   r[   r  )r1   r8   rA  r  r.   r  firstrg  r   r  )r  r   r  )rA   rE   rF   r   )r.   r  )r.   rg  )r  r  r   r   r   r0   r1   r   r4   r[   r   rA  r   )r   r   r
   r=  r!   r   rI   rJ   )r@   r1  rE   rA   rF   rf   rg   rT   s           r   test_pivot_with_multiindex)TestPivotTable.test_pivot_with_multiindexI  s     -.      
 ENWh$78.
 DwhOXX&)'  F XX&)'	F Auen5Auen5Auen5

 T?
f/r   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   r  r-   )r.   r  r   )r
   r  r  KeyErrorr=  r!   )r@   r1  rf   s      r   test_pivot_with_tuple_of_values.TestPivotTable.test_pivot_with_tuple_of_valuess  sd     A5)5	
 ]]8+@AueNK5%O BAAs   1A,,
A:r6   r7   r8   r   c                    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   Fcheck_names )	rE  rE   rO   rH   rI   r   rN   
sort_indexiloc)r@   rg   
values_colrA   rE   rF   margins_colcol_marginsexpected_col_marginsindex_marginsexpected_ix_marginsgrand_total_marginsexpected_total_marginss                r   _check_outputTestPivotTable._check_output  s    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"<<<r   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 )Nr9   r6   r7   r8   TrH   )rD   rE   rF   r   ra   Totals)rD   rE   rF   r   ra   margins_name)r  rE   rF   r   ra   r   )r   r  rF   r  )r@   rA   rg   rR   	value_cols        r   test_marginsTestPivotTable.test_margins  s    !!sCj#tV " 
 	63- !!*! " 
 	63(C   *c4 ! 
 --a0Iu/A 1r   c                    UR                    Vs/ s H  o"S-  PM	     snUl         [        R                  " S5      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XaU   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XaU   R                  5       :X  a  M,   e   g s  snf ! , (       d  f       N= f! , (       d  f       Nw= f)Nr4   &agg function failed [how->mean,dtype->r   AABBTrH   )rE   r   ra   CCr   r   r  )DDEEFF)
rF   reescaper  r  r  r   r!  rE  rH   )r@   rA   kr   rR   r  totalsitems           r   test_no_colTestPivotTable.test_no_col  sf    (,||4|!A|4ii@A]]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00 10s   EE%E*
E'*
E8z*columns, aggfunc, values, expected_columnsrH   )      @r  皙@r  )r   r   皙@r  )r.   r   r-   r   r   r`   )r         r[   rA  r5   )          r5   r5   r  ))r.   r0   )r.   r1   )r.   r   )r-   r0   )r-   r1   )r-   r   r   c                    [        / SQ/ SQ/ SQ/ SQ/ SQS.5      nUS:w  aI  [        R                  " S5      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                  " Xx5        g ! , (       d  f       Nn= f)N	r-   r-   r-   r-   r-   r.   r.   r.   r.   	r0   r0   r0   r1   r1   r0   r0   r1   r1   	smalllarger  r  r  r  r  r  r  	r   r4   r4   r   r   r   r[   rA  r   	r4   r   r[   r[   rA  rA     r   r   r6   r7   r8   r9   r:   r`   r  r   T)rF   r   ra   r7   r   r8   r9   r:   r   )r
   r  r  r  r  r  r   r!  r   rI   rJ   )	r@   rF   ra   rD   r   rf   r   rg   rT   s	            r   %test_margin_with_only_columns_defined4TestPivotTable.test_margin_with_only_columns_defined  s    D TT
 10
& e))DEC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      S/-   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 )Nr   i8)r9   r:   r;   r.   r-   r0   r1   r  r   r   )      r   r   -   )!   r   $   3   x   r2   r3   r   r8   r   r  r2   r3   r   r9   r6   r7   Tr`   r   rD   rE   rF   r   ra   rb   )copyr<   r   rK   r   re   rd   r   r   r   r
   rename_axisr   rI   rJ   )r@   rA   rf   mi_valmirT   rg   s          r   test_margins_dtype!TestPivotTable.test_margins_dtype  s     YY[ iiB!4<<SWaHOOPTU?guenuen=>+N##F*='2FGr

+c+
" 	 #6*Xg->>*   
 	h/r   c           	      "   [        [        SS/SS/5      5      S/-   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-   r0   r1   r  r   r   )r   r   r4   r   r[   )r4   r   r4   r4   rA  r  r   r8   r   r  r2   r3   r   r9   r6   r7   Tr   r  )
rd   r   r   r   r
   r  r   rK   rI   rJ   )r@   rA   r  r  rT   rg   s         r   test_margins_dtype_len%TestPivotTable.test_margins_dtype_len)  s    guenuen=>+N##F*=$?r

+c+
" 	 #6*Xg->>!!* " 
 	h/r   ru   ))r   r4   rl   rm   rC  )rl   r   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/[
        S
9S9n[        R                  " X45        g )Nr   rs   r   r   )r   r[   rA  )rD   rF   )r   r   r   ))r   r   )r4   r4   )r   r   r   r   rF   rE   )r
   r   r   r   r   r  rI   rJ   )r@   ru   df2rg   rT   s        r    test_pivot_table_multiindex_only/TestPivotTable.test_pivot_table_multiindex_only<  sr     a)T!WiiPQT:**+C4PV,
 	f/r   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-01r   zEurope/Amsterdam)r  ra  r4   r   r7   r8   F)rE   r   r   )
r   r
   r<   r=   r>   r?   r   rE   r  equals)r@   dtirf   rg   s       r   test_pivot_table_retains_tz*TestPivotTable.test_pivot_table_retains_tzJ  s    q5GHYY**1-==a@YY**1-==a@
 sCj? ||""1%,,S1111r   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x2r<  r   r   )r   r   r   r4   )rD   rE   rF   r   4)0132Fr  )r   rk  rd   r   r   r   r
   r   renamestrrI   rJ   )r@   r}   r   rA   rf   rR   r  rS   s           r   test_pivot_integer_columns)TestPivotTable.test_pivot_integer_columnsX  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)rl   rl   rl   rl   rm   rm   rm   rm   r4   )r   r   r   r   r   r   r   r   r-   r   r.      )rl   rm   rn   valuer  rl   rm   rn   r   rk   r   all)r   how)r
   r<   r=   r>   r?   r   rO   rH   rQ   r   rI   rJ   )r@   rA   rR   groupedrT   s        r   test_pivot_no_level_overlap*TestPivotTable.test_pivot_no_level_overlapm  s     =A-1gkUGaK/14..q1AA"E	
   c3Z H,,/8==???3'//4;;;N
e.r   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   r4   r   i  r   i  r     r   r   )r   r  r  rH   rE   rF   ra   )r<   r   r  intr   arrayemptyr=   r>   integersrK   r   r   yearr   r  	lognormalr
   r   rF   is_monotonic_increasing)
r@   nr   productsitemsiproductdrdatesrf   pivoteds
             r   test_pivot_columns_lexsorted+TestPivotTable.test_pivot_columns_lexsorted  s   &!6"#S!% 

 88
 V$x&89
 (99((+44QHqI!'*84g"8,X6hT1a($tR*<=299((+44QBCD

fgyye..q1;;CaHgu..E"/	 ! 
 6666r   c                     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*  r`   r9   r:   r6   r7   r&  )rO   rP   rQ   r   rI   rJ   )r@   rA   r   rT   rg   s        r   test_pivot_complex_aggfunc)TestPivotTable.test_pivot_complex_aggfunc  s]    '(<<c
+//2::3?!!S!!D
f/r   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 )Nr6   r7   T)rE   ra   r   r   )r   rK   tolistr`   )r@   rA   rg   result_lists       r   test_margins_no_values_no_cols-TestPivotTable.test_margins_no_values_no_cols  sV    sCj!--*c4 . 
 mmo;s#$B777r   c                     U/ SQ   R                  SS/S[        SS9nUR                  R                  5       / SQ:X  d   eg )Nr   r6   r7   r8   TrE   rF   ra   r   r   r   r   r         &@r   rK   r   r<  r@   rA   rg   s      r   test_margins_no_values_two_rows.TestPivotTable.test_margins_no_values_two_rows  sI     o&22*c3 3 
 zz  "&@@@@r   c                 ~    USS/   R                  SS[        SS9nUR                  R                  5       / SQ:X  d   eg )Nr6   r7   TrA  )r   r   rC  rD  rE  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6r   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)rl   rm   rn   r}   er   ghr   jr  r9   r6   r7   r8   r9   r6   r7   r8   TrA  rB  rD  rE  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  "&@@@@r   margin_namer-   r0   i  Nrl   rm   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   r9   r6   r7   r8   T)rD   rE   rF   r   r  )r  r  
ValueErrorr   )r@   rS  rA   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                 V	   [        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                  " XC5        [        US[        SS9SSS9n[        R                  " XCR                   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(       a  US   R%                  S5      US'   [        U[        SS9SSSS9n[        R                  " XC5        [        US[        SS9SSS9n[        R                  " XCR                   5        UR'                  5       n[        U[        SS
S9SSSS9n[        R                  " XC5        [        US[        SS
S9SSS9n[        R                  " XCR                   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                  " XC5        [        US[        SS
S!9SSS9n[        R                  " XCR                   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r   r   r[   r   r  r   r   r   rN  r   r   r4   r  )BranchBuyerr  Dater^  )r   r  r   r   r   r   r%  r  r  zCarl Joe Markr   r]  r  r`   rE   rF   rD   ra   r   r  r   6MSCarlr  r  z#'The grouper name foo is not found'r   r-   )r  r
  zThe level foo is not valid)r
   splitr   rl  r<   r(  r   r!   r  rE   rN   rF   r   r   rI   rJ   rw   r   re   r  r  r  r  rU  )r@   using_array_managerrf   rT   rg   r   s         r   test_pivot_timegrouper%TestPivotTable.test_pivot_timegrouper   sT   +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 $))+
 % ''/66w?HV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%%Q7R	R%
Q47
R	
R
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 )%NrY  rZ  r[  rN  r5   r   r  r   r   r[   r   r<  r4   r  r  r   r:  r      )r\  r]  r  r^  PayDayr  r^  rb  ri  r  r`   r_  r   rA  r%  r  r   r   r6   r7   r\  )r
   rc  r   r   r   r<   r(  r   r   r!   r  rE   rN   rF   rI   rJ   rw   r   r   )r@   rf   rg   rT   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1r   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:00ro  rp  rq  zM8[ns, US/Pacific]rP  r   rN   2013-01-01 15:00:00rt  rt  2013-02-01 15:00:00ru  ru  zM8[ns, Asia/Tokyo]r   rl   rl   rl   rm   rm   rm   rA  r   r   r4   r   labelrP  rQ  value1value2ry  rl   rm   rx  r   r   r   r   r   r   r   r   r   )r`   r`   r`   r`   rH   rH   rH   rH   )ry  ry  rz  rz  rt  ru  r   rQ  )r   r   r   r4   )r   r   r4   r   )r4   r[   r   r4   )r   r   r   r   )r   r   r   r   )r   r   r   r   r  rz  r`   rH   r_  )r!   r  r
   r<   r   r   r   r#   r   rI   rJ   r(  r   )r@   dates1dates2rf   r\  rY  rZ  r[  rT   rg   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/r   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 )&Nrn  rs  rv  rA  r   r   r   r4   r   rw  rx  rP  ry  r   rl   rm   r   r   r   r   r   r   r   )r   r  r   rr  r   rQ  )r   r   r  r  r   r   r   )r   r   r   r   r   r   rN  )Xr  r  r  Yr  r   r   r[   r  r  )r!   r  r
   r<   r   r   r  re  r   r  rI   rJ   r   r+  rD   r   r#   r(  r   )r@   r{  r|  rf   rg   r\  rT   r[  s           r   test_pivot_dtaccessor$TestPivotTable.test_pivot_dtaccessorr  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/r   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["        R$                  " X55        g )	N1/1/2000
12/31/2004r9   r  r   r   r   r   )r   r   r<   r   rK   r   r
   rE   r+  	dayofyearrF   	droplevelasarrayr   rD   r   rw   rI   rJ   )r@   rngrc  rg   doyrT   rq   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
f/r   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["        R$                  " X55        g )	Nr  r  r  r  r   r   r   r   )r   r   r<   r   rK   r   r
   rE   r+  r   rF   r  r  r   rD   r   rw   rI   rJ   )r@   r  rc  rg   r   rT   rq   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
f/r   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 )Nr`   rH   r8  r6   )rE   rD   ra   c              3   $   #    U  H  ov   M     g 7fr   r   ).0r  s     r   	<genexpr>GTestPivotTable.test_pivot_table_with_iterator_values.<locals>.<genexpr>  s     2TE%Ts   )r   rd   r+  rI   rJ   )r@   rA   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
 	.Br   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  rw   rw   )r  costr  r  r  TrH   max)rE   rF   r   r  ra   r  r  r   )rH   r  r  )rH   r  rw   r  )r  r  r  )r  r  rw   )NNr  r   r   )r
   r   r   r   r   rD   rI   rJ   )r@   r  costsrR   ixtupsru   rT   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.r   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  r   r4   ro   r   r   r   r[   rA  r  r   r   r   r   r   r   rq   r   rr   rp   Tr   r   )	r
   r<   r   r   rE   rF   r   rI   rJ   )r@   rG   rf   rT   rR   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.r   c           	      P   [        [        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        Sn[        R                  " [        US9   UR                  SS	SUSS9nS S S 5        [        R                  " WU5        g ! , (       d  f       N&= f)Nr  r   r4   ro   r  r  r  r  rq   r   rr   rc   r   r   rp   Tr  )r
   r<   r   r   rE   rF   rq   re   rr   rI   r   r   r   rJ   )r@   rG   rf   rT   r   rR   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{{:&A''SANN3S4NPE B
eX. BAs   #D
D%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)r4   r   rA  r  )r   r   r[   r  )r   r   r   rA  )r  r  r  r  rP  r9   T)rE   r   )r   r   r[   )r   g      @r   )r   r   r   r   )r  r  r   r   r   r
   r   r   rI   rJ   r@   rf   rg   rT   s       r   test_margins_casted_to_float+TestPivotTable.test_margins_casted_to_float<  s\    !!!)	
 RsD9oOL)4
 	f/r   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   r6   r7   r   r   rA  )InColValr  r  r  )rE   rF   rD   rG   )r   rN   r   r   )rA   rF   r   )rF   rD   rG   r   )rA   rF   rE   )r<   r   r
   r	   r   r   r!   CategoricalIndexr   rE   rI   rJ   )	r@   rG   r   r  r  rf   rg   expected_colsrT   s	            r   test_pivot_with_categorical*TestPivotTable.test_pivot_with_categoricalN  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/r   c           	         [        / SQ/ SQ/ SQS.5      nUS   R                  S5      US'   Sn[        R                  " [        US9   UR                  S	SS
USS9nS S S 5        [        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[        XuUS9n[        R                  " WU5        g ! , (       d  f       N= f)N)r6   r7   r8   r8   r   r   )r6  r7  Vr6  rc   r   r   r  r7  count)rE   rF   r   ra   r   Fr   r   rN   rl   rm   r   r   r   r4   r   r   )r
   re   rI   r   r   r   r!   r  r   r<   r(  r   rJ   )	r@   rG   rf   r   rg   r   r   expected_datarT   s	            r   test_categorical_aggfunc'TestPivotTable.test_categorical_aggfuncq  s    '/C,W
 d8??:.4A''SA^^4h $ F B
 ,,T
 !#s$71a&1a&1a&!9J9I
 	fh/ BAs   C
C'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)rB  r     )Januaryr  r  )rN  rO  rN  )Salesr  r  )r  FebruaryMarchAprilMayJuneJulyAugust	SeptemberOctoberNovemberDecemberr  rc   r  r  r`   )rD   rE   rF   rG   ra   rN  rO  r   rU  Fr  i@  r  r   r5   r   r  )r
   re   r   set_categoriesr   r   r!   r  rE  rI   rJ   )	r@   rG   rf   monthsrg   r   r   r  rT   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/r   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)r   r   r[   )r8   r9   r:   )r   r   r   r\   r]   r_   r^   r`   rv   r   r   r&  r   r   r[   r   )	r
   r   r   r#   rI   rJ   r<   r   r   )r@   rf   rg   r   rT   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/r   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-   rs   r   r   T)rE   ra   r   r  r   r4   r   r  rr  r   )r
   r   r  r   rK   rI   rJ   )r@   greekframerR   rE   rT   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.r   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/   r5   r   r6   r7   r`   r&  r8   r0   r1   r   r   r  r:  r  )r.   r-   r   r<  ))r8   r0   )r8   r1   r   rH   r   )r   r   r   r   r  )NNr7   r   r  r   g@))rH   r8   r0   )rH   r8   r1   )r`   r8   r0   )r`   r8   r1   )r
   r   r   r   r  rI   rJ   )r@   rA   rg   r  rT   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/r   z
f, f_numpyr*  c                 B   UR                  SS9n[        USSUS9n[        U[        5      (       a  SR	                  U5      OUnSU S3n[
        R                  " [        US	9   [        USSUS9nS S S 5        [
        R                  " UW5        g ! , (       d  f       N&= f)
Nr8   r   r6   r7   r&  |zusing DataFrameGroupBy.[]r   )	r!  r   
isinstancerd   joinrI   r   r   rJ   )r@   r   f_numpyrA   rg   opsr   rT   s           r   test_pivot_string_func_vs_func-TestPivotTable.test_pivot_string_func_vs_func  s     yyy%Tc1E'400chhqka(Q/''SA"4sCQH B
fh/ BAs   #B
B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                  " [        U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                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )STestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstackeri2  c                 :   > [         TU ]  " U0 UD6  [        S5      e)NDon't compute final result.)super__init__	Exception)r@   argskwargs	__class__s      r   r  \TestPivotTable.test_pivot_number_of_levels_larger_than_int32.<locals>.MockUnstacker.__init__3  s!     $1&1 =>>r   r   )returnN)__name__
__module____qualname____firstlineno__r  __static_attributes____classcell__)r  s   @r   MockUnstackerr  2  s    ? ?r   r  
_Unstackeri   r   )ind1ind2r  z$The following operation may generater   r  r  r  r  r_  )reshape_libr  contextsetattrr
   r<   r   rI   r   r   r  r  r  r   )r@   monkeypatchr  r   rf   r   s         r   -test_pivot_number_of_levels_larger_than_int32<TestPivotTable.test_pivot_number_of_levels_larger_than_int32.  s    	?K22 	?   "aIIk<?5)299U3CaPB 9C++,>cJ]]94QRNN$fWg #  S K #" SR KJ #"s<   A*C<C+.CC+	C<
C($C++
C9	5C<<
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  )r   r   r4   )r   rA  rA  )fruitsizetastec                     g)Nr   r   r   s    r   ret_one?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_oneO  s    r   c                     [        U 5      $ r   )r`   r   s    r   ret_sum?TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_sumR  s    q6Mr   c                 "    [         R                  $ r   )r<   r   r   s    r   ret_none@TestPivotTable.test_pivot_table_aggfunc_dropna.<locals>.ret_noneU  s    66Mr   r  rF   ra   r   r   r   r  rA  )r  r  r  r  r  r   r  r  r   rF   r  )	r
   r   r<   r   r   from_productr   rI   rJ   )
r@   r   rf   r  r  r  rg   rA   r  rT   s
             r   test_pivot_table_aggfunc_dropna.TestPivotTable.test_pivot_table_aggfunc_dropnaE  s    4!"
			 'W)Ef
 Arvvrvvq!,r1bffbffa.KL%%/'71CD/
 T&'):CHI6H
f/r   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)r0   r1   r0   r   r4   r   )r6   rp   rq   r6   rH   r  r   r0   r1   r   rp   rq   r   rF   r  )r
   r<   r   r   r   r   rI   rJ   )r@   r   rf   rg   rA   r  rT   s          r   &test_pivot_table_aggfunc_scalar_dropna5TestPivotTable.test_pivot_table_aggfunc_scalar_dropnah  s    'q"&&!nArvvrvvCVW
 RfVLbff266{+UEN-T#sSAI6H
f/r   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)r4   r4   r   r   r4   )r[   rA  r   r  r   )pr  r  r&  r  )NNNNN)r6   idr8   r9   r6   r9   r'  r   r   r   rr  r   )r
   r   r<   r  r   rI   rJ   )r@   r   rf   rg   exp_colsrT   s         r   test_pivot_table_empty_aggfunc-TestPivotTable.test_pivot_table_empty_aggfuncy  st     $%.3	
 s4'   
 #&57#ExX
f/r   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<   rH   )arrs    r   rP   =TestPivotTable.test_pivot_table_no_column_raises.<locals>.agg  s    773<r   r   r  )r   r<  rh  (   )r  r  Z
notpresentr   r  r  )ra   )r
   r  r  r  r   )r@   rP   rf   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  r9   r:   r6   r8   rH   )rk  r  rH   r8  )rD   rE   ra   ))r9   rH   r:   r  )r:   rH   r:   rk  ))r.   r  )r.   r  )r-   r  )r-   r  r   )r        "@g      @r   )r  r7  g      !@r   )r   r   r   r   )g["8@r   g.UUU@r   r  r6  r5  )
r
   r   r   r   r<   r(  re   r   rI   rJ   )r@   rf   rR   ru   rE   valsrT   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.r   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d3rk   )   r  "   )2018rA  2019)rl   r  numr+  rl   r  r+  rC  r`   F)rE   rF   rD   ra   sortr?  r  r@  rA  rB  r   r   r  )	r
   r   r<   r   r   r   r#   rI   rJ   r  s       r   test_pivot_table_sort_false*TestPivotTable.test_pivot_table_sort_false  s    '&#0	
 ,ueRW   
 "&&\B<"&&"666*8((#_5c5\
 	f/r   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 )Nr6   r   r4   r   r5   Int64r   )rl   rm   salesrm   rl   Tr`   r  r  r|  r   rI  r6   rI  r   r   rE   rF   r   )r
   r   r   r   r   r   rI   rJ   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/r   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agerX  rW  rY  rZ  F)rE   rD   rD  g     e@g     G@g     f@g     @@)rR  rP  )rS  rQ  r   r  )r
   r   r   r   rI   rJ   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/r   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rl   rp   r   rl   rq   r4   rm   rq   r   rm   rr   r   )r   r<  rh  r   r<  rh  r`   r   TrE   rF   rD   ra   rb   r   r   r4   r   r   r   r   r   r   r   r[   r   r   rp   rq   rr   r   rl   rm   r   )r
   rF   r   rE   rN   rI   rJ   r  s       r   1test_pivot_table_with_margins_and_numeric_columns@TestPivotTable.test_pivot_table_with_margins_and_numeric_columns	  s    }m]ST!
bUqRV   
 lL-HI1* " 
f/r   r   c           	          [        SS[        SS/SS9S.5      nUR                  SS	S
SUS9n[        S//[        S/SS9[        S/S	S9SS9n[        R
                  " X45        g )Nrl   rm   r<  r/  rH  r   )rp   rq   rZ  rp   rq   rZ  rH   )rE   rF   rD   ra   r   rh  r   Float64rL  )r
   r   r   r   rI   rJ   )r@   r   rf   rg   rT   s        r   test_pivot_ea_dtype_dropna)TestPivotTable.test_pivot_ea_dtype_dropna	  s|     Ss62r('3RSTs5&   
 TFC(3%c*	
 	f/r   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)Nr6   r   r4   z
2019-12-31g      $@r5   )rl   rm   r   rI  rm   r   rl   Tr`   r  rC  g      5@r|  r   r  rr  rJ  rK  r   r   )r
   r!   rD  rI   r   r   r   r#   r   r  r   rJ   r  s       r   !test_pivot_table_datetime_warning0TestPivotTable.test_pivot_table_datetime_warning%	  s   V\2	
 ''-^^FmS$ $ F . D\D$<$6((-c2l3R\\,5OQST$#	 **!124+
  	fh/) .-s   C77
Dc                 n   [        / 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U(       a  US   R                  S5      US'   [        R                  " X45        g )Nr  r  r  r  r  )r6   r7   r8   r9   r:   )col5)col6rA  r   sevenr9   r6   r7   rt  r`   r&  r   r   r   r   r   r  r  r   )r.   r.   r-   r-   r0   r1   r4   r   r  r   )
r
   r   r<   r   r   r   r#   re   rI   rJ   )r@   rd  rf   rg   rT   s        r   )test_pivot_table_with_mixed_nested_tuples8TestPivotTable.test_pivot_table_with_mixed_nested_tuplesE	  s    TT
 10


M13
h s3*|ne
 3Z#sc3Z"&&#?7G,<@((-u~/AB3PS*
  ( 1 8 8 AHW
f/r   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   nuniquern   )NNrm   r   )r   r   r   rl   r   r   rm   r_  )r
   r   r   r#   r<   fullr   fill_diagonalr   r   rI   rJ   )r@   testr   	columnvalnparrrT   rg   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
r   )cr  r   r  r  r  fixturerA   rU   rh   rz   r   r   r   r   r   r   r   r   r   r   r   markparametrizer  r  r"  r/  r>  rK  r]  ro  rw  r~  r<   r(  r   r   r  r  r  xfailr  r  r  r  r  r   r   r  r  r  r  r  r  r  r5  r9  r>  rF  rI  rQ  rV  re  rk  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r`   rH   r*  r  slowr  r   r#  r)  r2  r9  rE  rM  r[  rh  rl  ro  rv  r  r  r   r   r   r)   r)   ,   s   ^^.
 .
`/806
&#/J0 0@!0F0<0180
0
/!1F [[x*+3434	
"",(\002 [[Xe}5X 6X6 [[Xe}5, 6,6 [[Xe}5=, 6=,~50n [[Xe}5+, 6+,Z00 [[ENHHeU^$E5>"5%.!		
 [[Xe}50 606 [[ENHHeU^$E5>"5%.!		
 [[Xe}5 0 6 0D2 [[S   [[Xe}5$0 6$0L [[Xe}5P 6P, Cj=2B2/0 [[4 %';<2=	 c
), && *
	
<"0=<"0H000& [[V%MN0 O02@*/$17f08A7A [[]UE3sCj,QR# S#JVp}2~Y0vY0v0$0C&/<// 0$!0F0,*0X08	/<0| [[BFFORWWBFFOV_rvvrww/0U^bffbff-.V_rvvrww/0	

	0
	0 [[ ,!0F0" [[Yu60 70"@2/h0,0"0,0" [[Xe}50 600@C0J#0r   r)   c                   v   \ rS rSrS rS rS r\R                  R                  S\
S/5      S 5       rS rS	 rS
 r\R                  R                  \" 5       SS9S 5       r\R                  R                  \" 5       SS9S 5       r\R                  R                  \" 5       SS9S 5       rS rS rS rS 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r6   r7   r8   r8   r7   r6   Oner  r  Twor  r  r   r   r   r   r   r   r   rE   rF   rD   r   r   r   r   r  r  r   NrF   )r
   r=  rE   rN   rF   rI   rJ   rL   )r@   rA   r  r4  rT   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9r   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-   )r0   r1   r0   r0   r1   )r   r   r   r   r   rk   zduplicate entriesr   rl   rm   rn   r   )r
   r  r  rU  r=  )r@   rA   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 )
Nrk   r   rl   rm   rn   r   r   Fr  )r
   r=  rI   rJ   r  s       r   test_pivot_emptyTestPivot.test_pivot_empty	  s<    /S=2r2
fEBr   r   stringc           	          [        SS/US9nUR                  SSSS9n[        R                  " UR                  [        SS	/SUS
95        g )N)r6   r  A1)r7   r  B2)rA   r   r   r   r4   r   r6   r7   rU  )r
   r=  rI   r   rF   r   )r@   r   rf   rg   s       r   test_pivot_integer_bug TestPivot.test_pivot_integer_bug	  sJ    -/?@N1Q7
fnneS#JQe.TUr   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   rE   rF   rD   rF   rD   r   r   r   r   r  r   r   )rD   r  )rD   r  r   Fr  r  r   )r
   rl  r=  rE   rN   rF   rI   rJ   r   r   rL   r  )r@   rA   r  rg   rT   s        r   test_pivot_index_noneTestPivot.test_pivot_index_none	  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/r   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)r   r   r   r4   r4   r4   )r   r   r4   r   r   r4   )r   r4   r   r4   r   r4   r  r  )lev1lev2lev3lev4rD   r  r  r  r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r4   r   r4   r   )r  r  rD   rD   )	r
   r=  r<   r(  r   r   r#   rI   rJ   )r@   rf   rE   rF   rg   rT   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("""r   c                     [        S/SS.5      n[        R                  " [        SS9   UR	                  5         S S S 5        g ! , (       d  f       g = f)Nr   r  z(missing 1 required keyword-only argumentr   r  )r@   rf   s     r   test_pivot_columns_not_given&TestPivot.test_pivot_columns_not_given0
  s8    aSq)*]]9,VWHHJ XWWs   A
Az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 )Nr   r4   r   Nrm   rn   r   ))rm   r   rn   r   rm   r  r  r   r   rn   rF   rE   rD   )r
   r=  rI   rJ   r   r  s       r   test_pivot_columns_is_none$TestPivot.test_pivot_columns_is_none6
  s     qc23$'q9:
f/$c2h]%#2FG
f/$c#>aV5!3+?@
f/r   c           	      (   [        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
                  " X#5        UR                  SS S	S
9n[        SS/[        S/SS9S9n[        R
                  " X#5        g )Nr   r4   r   r  rm   r  )rn   r4   r   rn   r  r   r   )r
   r=  rF   rL   rI   rJ   r   r  s       r   test_pivot_index_is_none"TestPivot.test_pivot_index_is_noneF
  s     qc23#T2h]1#6"&
f/#T#>Qqc5!33GH
f/r   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 )Nr   r4   r   r  rm   rn   r  r   r   r  r   )r
   r=  r   rI   rJ   r  s       r   test_pivot_values_is_none#TestPivot.test_pivot_values_is_noneT
  s     qc23#S>UA3S)5!33G
 	f/#d3Qqc5!33GH
f/r   c                     [        S/SSS.5      nUR                  SS9nUR                  SSS	S
9  [        R                  " X5        g )Nrl   r   r   )r0   r1   threeT)deepr0   r1   r  r   )r
   r  r=  rI   rJ   )r@   rf   rT   s      r   "test_pivot_not_changing_index_name,TestPivot.test_pivot_not_changing_index_namec
  sE    uQ;<777%
ueG<
b+r   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)rl   rm   r  r   rl   rm   r  r  r_  r  rr  )r
   r   r   rI   r   rF   r@   rf   r=  rT   s       r   .test_pivot_table_empty_dataframe_correct_index8TestPivot.test_pivot_table_empty_dataframe_correct_indexj
  sG    r#67S#gwW8#6
emmX6r   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)Nrp   z
2023-01-01r   )rl   date_strr~   rq   z
2023-01-02r4   rr   z
2023-01-03r   r  r   Frl   r~   r`   T)rE   rD   ra   r   z2023-01-01 00:00:00z%Y-%m-%d %H:%M:%Sz2023-01-02 00:00:00z2023-01-03 00:00:00r  r   )r
   r!   to_datetimerI   r   r   r   r   r   strptimer   rE   r  s       r   0test_pivot_table_handles_explicit_datetime_types:TestPivot.test_pivot_table_handles_explicit_datetime_typesr
  s   |qA|qA|qA
 ^^BzN36
''.NNFmXJt # E /
 ))h''(=?RSTh''(=?RSTh''(=?RST	 -
 	ekk84 /.s   C--
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 )Nr^  r_  r`  ra  r   r   r4   r`   Trb  rc  rd  re  rf  r   rg  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/r   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   r   r   r  r  	  s    ::	;C [[Wvx&89V :V"0H$#L [[13<QR0 S0 [[13<QR0 S0 [[13<QR0 S0,7560r   r  )'r   r   r   	itertoolsr   r  numpyr<   r  pandas._configr   pandas.errorsr   pandasr!   r	   r
   r   r   r   r   r   r   pandas._testing_testingrI   pandas.api.typesr   pandas.core.reshaper   r	  pandas.core.reshape.pivotr   r  r   r   r'   r)   r  r   r   r   <module>r     s    
  	   5 , 	 	 	  - 6 1 e}% & !q1#'*U1XuQ{,CDEJ FJ
A&0 A&0HLj0 j0r   