
    Owg                        d dl Z d dlZd dlmZ d dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlZd dlmZmZmZmZmZmZ d dlmZ d dlmZ ej8                  j;                  dd	d
g      ej8                  j;                  dg dg dg dg dg dg dg dg dg dg dg dg dej<                  ej<                  ej<                  gg      d               Zd Z ej8                  j;                  dd	d
g      d        Z!ej8                  j;                  dd	d
g      ej8                  j;                  dg dg dejD                  ejD                  ejD                  gdejD                  dgdejD                  dgdejD                  dgg      d               Z#ej8                  j;                  d d!d" ejH                  dge%#       ejH                  ejD                  gd$#      fd%d! ejH                  ejD                  gd$#       ejH                  dge%#      fd%d% ejH                  ejD                  gd$#       ejH                  ejD                  gd$#      fd"d$ ejH                  ejD                  gd$#       ejH                  ejD                  gd$#      fg      d&        Z&ej8                  j;                  dd	d
g      ej8                  j;                  d'g d(      d)               Z'ej8                  j;                  d*d	ejD                  ej<                  gdfd	ejD                  d+ej<                  gdfd
ejD                  ejP                  gdfd
ejD                  dejP                  gdfg      d,        Z)ej8                  j;                  dd	d
g      d-        Z*ej8                  j;                  dd	d
g      d.        Z+ej8                  j;                  d/d0d1g      d2        Z,ej8                  j;                  d/d0d1g      d3        Z-ej8                  j;                  d4d0d d5gd+d6gd+d5gd7fd1d+d6gd d5gd d6gd7fg      ej8                  j;                  d8ddg      d9               Z.ej8                  j;                  d ed:       ed;      fd<g      ej8                  j;                  d=g d>      d?               Z/ej8                  j;                  d/d@dAg      dB        Z0dC Z1dD Z2dE Z3dF Z4dG Z5dH Z6dI Z7dJ Z8dK Z9dL Z:ej8                  j;                  dMdNdOg      dP        Z;ej8                  j;                  dMdNdOg      dQ        Z<dR Z=ej8                  j;                  dMdNdOg      dMe>fdS       Z?ej8                  j;                  d'g dT      dU        Z@dV ZAej8                  j;                  dMg dW      dX        ZBej8                  j;                  dMdNdOg      dY        ZCdZ ZDej8                  j                  ej8                  j;                  d[ddg      ej8                  j;                  d\ddg      ej8                  j;                  d]ddg      ej8                  j;                  d^ddg      ej8                  j;                  d_d`gd`dagg      db                                           ZFdc ZGdd ZHde ZIdf ZJej8                  j;                  dgg dh edi      ejP                   edi      gd ed+g ej                  djgdkl      dm      fg dh ej                  dnd+d+      ejP                   ej                  dnd+d+      gd ed+g ej                  djgdkl      dm      fg do ej                  dnd+d+      ejP                   ej                  dnd+d+      ejP                   ej                  dnd+d+      gd ed5d5g ej                  djdpgdkl      dm      fg dq ej                  dnd+d+      ejP                   ej                  dnd+d+      ejP                   ej                  dnd+d+      gd ed5d+g ej                  djdpgdkl      dm      fg      dr        ZMds ZNdt ZOdu ZPdv ZQej8                  j;                  dwd dxg      dy        ZRdz ZSd{ ZTej8                  j;                  d'g d|      ej8                  j;                  d}d@d~d+d+dd5d6dgifdAd~d+d5dd5ddgifdNd~d+d+dd5d6dgifdOd~d+d5dd5ddgifdd+d5dd5d5dgddfg      d               ZUd ZVej8                  j;                  ddej                  fdej                  fdej                  fdej                  fdej                  fdej                  fdNej                  fdOej                  fd@d fdAd fdej                  f ej                  deV ej                  d            g      d        Zbej8                  j;                  dg dd+ejD                  d5d+ejD                  d5d+ejD                  d5g	dg dg ddg      ej8                  j;                  dg d      d               Zcej8                  j;                  dg d      ej8                  j;                  dd d+g      ej8                  j;                  dddg      ej8                  j;                  d[ddg      d                             Zdd Zey)    N)ascii_lowercase)iNaT)pandas_dtype)na_value_for_dtype)	DataFrame
MultiIndexSeries	Timestamp
date_rangeisna)_test_decoratorsagg_funcanyallvals)foobarbaz)r    r   )r   r   r            )r   r   r   r   r   r   )      ?       @      @)r           r   )r   r   r   )TTT)TFF)FFFc                 f   t        dgdz  dgdz  z   |dz  d      } t        t        |      |      }| rt        t	        |            r|dk(  rd}t        |gdz  dgt        j                  ddgd	
            } t        |j                  d	      |      |       }t        j                  ||       y )Nar   br   )keyvalr   Fr#   r"   namecolumnsindexskipna)
r   getattrbuiltinsr   r   pdIndexgroupbytmassert_frame_equal)r*   r   r   dfexpexpectedresults          [/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/groupby/test_reductions.pytest_groupby_bool_aggsr7      s    ( 
C519uqy0B	CB &'(H
%d
+C #d4j/h%&7		E7"((C:E*JH 2WRZZ&1@F&(+    c                  ,   t        g ddt        j                  dgdt        j                  dggg d      } t        ddgd	dggd
dgddg      }d|j                  _        | j                  d      j                         }t        j                  ||       y )N)r   r   r   r   r   r   r   ABCr'   TFr<   r=   r&   r;   )	r   npnanr(   r%   r/   r   r0   r1   r2   r4   r5   s      r6   test_anyrB   >   s    		BFFE*Q,>?
B 
t}%Sz!QH HNNZZ_  "F&(+r8   bool_agg_funcc                     t        ddggddg      }|j                  dg      } t        ||              }|j                  t	        j
                  dg            }t        j                  ||       y )NTr    r>   r   )r   r/   r+   set_axisr?   arrayr0   r1   )rC   r2   grp_byr5   r4   s        r6    test_bool_aggs_dup_column_labelsrH   K   sb     
T4L>C:	6BZZ_F+WV]+-F{{288QC=)H&(+r8   dataFTc                     t        |d      } t        ||       |      }t        |t        j                  dg      d      }|j	                  g d      j                  | |      }t        j                  ||       y )Nbooleandtyper)   r   r(   rM   r   )r	   r+   r?   rF   r/   aggr0   assert_series_equal)rC   r*   rI   serexpected_datar4   r5   s          r6   test_masked_kleene_logicrS   V   sk     Y
'C 0GC/v>Mm288QC=	JH[[#''f'EF68,r8   zdtype1,dtype2,exp_col1,exp_col2floatFloat64rL   rK   Int64c                 T   dt         j                  g}t        t        j                  ||       t        j                  ||      d      }|j                  ddg      j                  dd      }t        ||dt        j                  dg            }t        j                  ||       y )	Nr   rL   )col1col2r   r   Fr)   r(   )	r?   r@   r   r-   rF   r/   rO   r0   r1   )dtype1dtype2exp_col1exp_col2rI   r2   r5   r4   s           r6   test_masked_mixed_typesr_   o   s    > =D	$f-rxxF7ST
B ZZA##E%#8F(H=RXXqc]SH&(+r8   rM   )rV   rU   rK   c                     |t         j                  dg|      }d}|s| dk(  rt         j                  } ||gt        j                  dg      d      }|j	                  ddg      j                  | |      }t        j                  ||       y )Nr   rL   Tr   rK   rN   r)   )r-   NAr?   rF   r/   rO   r0   assert_equal)rC   rM   r*   frame_or_seriesobjexpected_resr4   r5   s           r6   test_masked_bool_aggs_skipnarf      sz     255!*E
2CLmu,uu~RXXqc])TH[[!Q $$]6$BFOOFH%r8   zbool_agg_func,data,expected_resr   c                      ||t               }|j                  dgt        |      z        j                  |       } ||gt	        j
                  dg      d      }t        j                  ||       y )NrL   r   boolrN   )objectr/   lenrO   r?   rF   r0   rb   )rC   rI   re   rc   rd   r5   r4   s          r6   test_object_type_missing_valsrk      s[     $f
-C[[!s4y)--m<F~RXXqc]&QHOOFH%r8   c                     t        t        j                  gt              }t	        j
                  t        d      5  |j                  dg      j                  | d       d d d        y # 1 sw Y   y xY w)NrL   z boolean value of NA is ambiguousmatchr   Fr)   )	r	   r-   ra   ri   pytestraises	TypeErrorr/   rO   )rC   rQ   s     r6   'test_object_NA_raises_with_skipna_falserr      sX     "%%
'C	y(J	K :QC]59: : :s   $A))A2c                     | t         u rddginddi} | di |dt        i} t        |j                  |j                        |             } | di |dt
        i}t        j                  ||       y )Nr'   r    r%   rM    )r   ri   r+   r/   r(   rh   r0   rb   )rc   rC   kwargsrd   r5   r4   s         r6   
test_emptyrv      sm     $3i#?i#fc]F

1F
1&
1C;WS[[+];=F44t4HOOFH%r8   howidxminidxmaxc                    |t         u s|t        u ry d|v rt        j                  nt        j                  } ||      j
                  } ||      j                  }t        g d||||gd|      }|j                  d      } t        ||              }t        dddgit        j                  dd	gd|
            }t        j                  ||       y )Nint)r   r   r   r   r    r!   rL   r    r!   r   r   r   r%   rM   rZ   )r{   rT   r?   iinfofinfominmaxr   r/   r+   r-   r.   r0   r1   )	rw   any_real_numpy_dtypeinfo	min_value	max_valuer2   gbr5   r4   s	            r6   test_idxmin_idxmax_extremesr      s     s"&:e&C 44288"((D)*..I)*..I	)Y	9!MN"
B 
CBWRF	q!fRXXq!f3>RSH &(+r8   c                 \   t        j                  |      j                  }t        j                  |      j                  }t	        t        t        j                  t        dd      d      d      t        t         j                  |t         j                  ||t         j                  |t         j                  t         j                  t         j                  g
|      d      }|j                  d      }| rd nt        }d	| d
}t        j                  ||      5   t        ||      |       }	d d d        | rddddt         j                  g}
nt         j                  }
t	        d|
it        j                  t        dd      dd            }t        j                   	|       y # 1 sw Y   wxY w)Nr      r   )repeatsintprL   r|   r    z!The behavior of DataFrameGroupBy.z with all-NA valuesrm   r)   r      r!   r}   rZ   )r?   r   r   r   r   r	   repeatranger@   r/   FutureWarningr0   assert_produces_warningr+   r-   r.   r1   )r*   rw   float_numpy_dtyper   r   r2   r   warnmsgr5   valuesr4   s               r6   "test_idxmin_idxmax_extremes_skipnar      sW    *+//I*+//I			%1+q9HFFFFFFFFFFFF (	

B( 
CB4}D-cU2E
FC		#	#D	4 1!S!01Q1bff%	fRXXeAqk6JH &(+1 1s   F""F+zfunc, valuesr   r   )c_intc_floatc_datenumeric_onlyc                    t        g dg dg dg dd      }t        j                  |d         |d<   |d   j                  j	                  d      |d<   |d   |d   j
                  d	   z
  |d
<   |d   j                  j                  d      |d<   |d   j                  d      |d<   |d   j                  d      |d<    t        |j                  d      |       |      }t        |t        j                  ddgd            }|r|j                  dg      }n|d   |d<   |d   |d
<   |d   |d<   |d   |d<   |d   |d<   t        j                  ||       y )Nr;   r;   r<   r<   r   r   r   r   )gGz@g=
ףp=@gRQ @g?)2019201820162017)r%   r   r   r   r   z
US/Pacific	c_date_tzr   c_timedeltaWc_periodr   rV   	c_Integerr   rU   
c_Floatingr%   r   r;   r<   r$   rZ   r>   )r   r-   to_datetimedttz_localizeiloc	to_periodastyper+   r/   r.   dropr0   r1   )funcr   r   r2   r5   r4   s         r6   $test_idxmin_idxmax_returns_int_typesr     si    
(!/6		

B >>"X,/BxLloo11,?B{O8r(|'8'8';;B}\__..s3BzNk((1B{O)}++I6B|.WRZZ'.LIFrxxc
'HIH==(=4 ( 2"*8"4'1$W-H[%i0H\&(+r8   z2011-01-15 12:50:28.502376z2011-01-20 12:50:28.593448)l    m;-Ll    m;-Lmethod)countr   r   firstlastc                 D   t        ddg|d      }|j                  d      } t        ||              }| dk(  rd}n*| dk(  r|d   }n| dk(  r|d   }n t        |d	   |              }t        d	|git        j                  dgd
            }t        j                  ||       y )Nr   r|   r    r   r   r   r   r   r!   r$   rZ   )r   r/   r+   r-   r.   r0   r1   )r   rI   r2   groupedr5   expected_valuer4   s          r6   2test_groupby_non_arithmetic_agg_int_like_precisionr   /  s     
!Qd+	,BjjoG%WWf%'F	7	a	6	a1C&13#/0!38OPH&(+r8   r   r   c           
         t        t        |             }t        g d|d|dt        j                  t        j                  g|d|dt        j                  t        j                  gd|       }|j                  d|      }t        ||      } ||      }g d	g d
g dg dd||f   }	|j                  |	   j                  d      }
|r|
j                         }
t        j                  ||
       y )N)r   r   r   r   r   r   r         @r    r!   crL   r    )sortr)   )r   r   r   )r   r   r   )r   r      )r   r   r   ))r   T)r   F)r   T)r   F)r   r   r   r?   r@   r/   r+   r   	set_index
sort_indexr0   r1   )any_real_nullable_dtyper   r*   rw   na_valuer2   r   r   r5   ilocsr4   s              r6   test_first_last_skipnar   M  s     ",/F"GHH	#C3?C3?	

 &
B 
Cd	#BRF6"F ##!"	
 
6kE wwu~'',H&&(&(+r8   c                  ,   t        t        j                  j                  d      j	                  d      g d      } g d| d<   | j                  d      }d}t        j                  t        |      5  |j                  d	
      }d d d        | j                  d d d	d f   j                  d	
      }j                  j                  d	      }t        j                  ||   |j                  d             t        dd      | d<   | j                  d      }d}t!        j"                  t$        |      5  t        j                  t        |      5  |j                  d	
       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   )
   r   )r;   r<   r=   Dr>   )
r   r   r   r   r   r   r   r   r   r   r;   z1DataFrameGroupBy.idxmax with axis=1 is deprecatedrm   r   axisz
2016-01-01r   periodsEz>'>' not supported between instances of 'Timestamp' and 'float')r   r?   randomdefault_rngstandard_normalr/   r0   r   r   ry   r   r(   get_level_valuesrP   	droplevelr   ro   rp   rq   )r2   r   warn_msgresaltindexergb2r   s           r6   test_idxmin_idxmax_axis1r   i  sO   	
		a 009CW
B -BsG	CBBH		#	#M	B  iiQi  ''!QR%.

Q

'Cii((+G3w<s);<r2BsG
**S/C
JC	y	, ''XF 	JJAJ	    	 	 s0   1E22F
E>!F
2E;>F	F

Fc                  |    t        g dg dd      } | j                  d      d   j                         d   dk(  sJ y )N)r;   r;   r;   r;   r;   )ij  i  io  i`  l    @~ )userconnectionsr   r   r;   l    ,fL )r   r/   mean)r2   s    r6   test_groupby_mean_no_overflowr     sD    	-I	

B ::fm,113C8<OOOOr8   c                  F   t        t        j                  t        d            ddgdz  d      } | j	                  d      d   j                         }t        t        j                  ddg      dt        j                  ddgd	      
      }t        j                  ||       y )Nr   r;   r<   r   )timecatr   r   r   r$   r%   r(   )
r   r-   to_timedeltar   r/   r   r	   r.   r0   rP   r2   r5   r4   s      r6   test_mean_on_timedeltar     s    	BOOE"I6SzA~N	OBZZv&++-F
AfBHHc3Ze4TH 68,r8   c                     t         j                  j                  d      j                  d      } t         j                  | d d d<   t        |       }t         j                  j                  d      j                  ddd      j                  t              }t         j                  |d d d<   |j                  |      j                         }d}t        j                  t        |      5  |j                  |      j                  t         j                        }d d d        t        j                   |       t        t         j                  j                  d      j                  d	            }d}t        j                  t        |      5  |j                  |      j                  t         j                        }d d d        |j                  |      j                         }t        j                   |       y # 1 sw Y   xY w# 1 sw Y   KxY w)
Nr     r   2   size   zusing DataFrameGroupBy.medianrm   )r   r   )r?   r   r   r   r@   r   integersr   rT   r/   medianr0   r   r   rO   	nanmedianr1   )arrr2   labelsr5   r   r3   rsxps           r6   test_cython_medianr     s}   
))


"
2
24
8CvvC!H	3BYY""1%..q"4.@GGNF66F4R4LZZ&&(F
)C		#	#M	= 3jj $$R\\23&#&	299((+;;IF	GB
)C		#	#M	= /ZZ##BII./	F		"	"	$B"b!3 3/ /s   &/G4/H 4G= H	c                 v   t        t        j                  j                  d      j	                  ddd            }t        ddd      }t        j                  |d   |      }|j                  ||       j                         }|j                  ||       j                  d       }t        j                  ||       y )	Nr   r   ,     7   r   observedc                 "    | j                         S )N)r   xs    r6   <lambda>z(test_median_empty_bins.<locals>.<lambda>  s     r8   )r   r?   r   r   r   r   r-   cutr/   r   rO   r0   r1   )r   r2   grpsbinsr5   r4   s         r6   test_median_empty_binsr     s    	299((+44QC@	ABB?D66"Q%DZZxZ0779Fzz$z2667KLH&(+r8   c                  b   t        g dg dddgz  d      } | j                  d      j                         }d|v sJ | j                  d      j                  d	      }d|v sJ | j                  d      j                         }d|v sJ | j                  d      j                  d	      }d|v sJ y )
N)   r     r  r   r   mama)nniissr  r  Fr   )r   r/   r   r   )aar5   s     r6   test_max_min_non_numericr    s    	*,a6(lS	TBZZ!!#F6>>ZZ!!u!5F6>>ZZ!!#F6>>ZZ!!u!5F6>>r8   c                    t        g dg dg dd      }|j                          | s$t        |j                  j                        dk(  sJ |j                  d      }|dg   j                         }t        j                  g dd	      }t        dg d
i|      }t        j                  ||       |dg   j                         }t        j                  g dd	      }t        dg di|      }t        j                  ||       y )N)r   r   r   r   r   )r   r   r   r   F)r    r!   r   der:   r   r;   r=   r   r$   )r!   r
  r  rZ   )r    r   r  )r   _consolidate_inplacerj   _mgrblocksr/   r   r-   r.   r0   r1   r   )using_array_managerr2   r   r5   eir4   s         r6   $test_max_min_object_multiple_columnsr    s    
 
 ,*	

B 277>>"a'''	CBY]]_F	)#	&B#/r:H&(+Y]]_F	)#	&B#/r:H&(+r8   c                  L   t        j                  t        g d      d      j                  j                  } t        t        j                  dt        j                  gg d| d      }|j                  dd	      d
   j                         d
   }t        j                  t        ddgd
      d      j                  j                  }t        j                  ||       |j                  d      d
   j                         }d|j                  _        t        j                  ||       y )N)
2019-05-09r  r  z%Y-%m-%d)format1)r   r   r   r   r!   Fas_indexr   r  r$   )r-   r   r	   r   dater   r?   r@   r/   r   r0   rP   r(   r%   )datesr2   r5   r4   s       r6   test_min_date_with_nansr    s    NN9::b 
 
"&&#rvv.YUK	LBZZeZ,S1557<F~~l+#6zb  68,ZZ_S!%%'FHNN68,r8   c                  D   t        dt        g      } t        j                  ddgt        j                        }| j                  |      }|j                  d      }t        ddit        j                        }t        j                  ||d       |j                  d      }t        dt        it        j                        }t        j                  ||d       |j                  d      }t        dt        j                  i      }t        j                  ||d       y )Nr   rL   r   	min_countTcheck_exactr   )r	   r   r?   rF   int64r/   r   r0   rP   r   r@   )rQ   r"   r   r5   r4   s        r6   test_max_inatr!    s    
!T
C
((Aq6
*C	S	BVVaV Fq!fBHH-H68>VVaV Fq$irxx0H68> VVaV Fq"&&k"H68>r8   c                  ^   t        dt        dt        dz   g      } | j                  g d      }|j                  d      }t        t        j
                  t        j
                  t        dz   d      }|j                  j                  t              |_        t        j                  ||d       y )Nr   r   )r   r   r   r   r  r   Tr  )r	   r   r/   r   r?   r@   r(   r   r{   r0   rP   )rQ   r   r5   r4   s       r6   test_max_inat_not_all_nar#    s     !T1dQh'
(C	\	"BVVaV F "&&RVVq9:H^^**3/HN68>r8   r   r   r   c                    ddg}t        j                  ddd      }t        ||d      } t        |j	                  d      d   |              }t        j
                  ddgd	      }t        ||d
      }t        j                  ||       y )Nr   r   2020Yr   freqr|   r    r!   r$   r(   r%   )	r-   period_ranger   r+   r/   r.   r	   r0   rP   r   groupsr   r2   r5   idxr4   s          r6   $test_groupby_aggregate_period_columnr.    s~     VFoofac:G	g.	/B0WRZZ_S)402F
((Aq6
$CgSs3H68,r8   c                    ddg}t        j                  ddd      }t        ||d      } t        |j	                  d      |              }t        j
                  ddgd      }t        d	|i|
      }t        j                  ||       y )Nr   r   r%  r&  r'  r|   r    r$   r!   rZ   )r-   r*  r   r+   r/   r.   r0   r1   r+  s          r6   #test_groupby_aggregate_period_framer0  +  s{     VFoofac:G	g.	/B+WRZZ_d+-F
((Aq6
$C#ws3H&(+r8   c                     t        g dt        d      t        j                  gdz  d      j	                  t
              } | j                  d      j                         }t        ddgdd	gt        j                  t        j                  gd      j                  d      j	                  t
              }t        j                  ||       t        g dt        d      t        d      d      j	                  t
              } | j                  d      j                         }t        ddgdd	gd
dgd      j                  d      j	                  t
              }t        j                  ||       y )Nr   abcdr   )r"   rX   rY   r"   r;   r<   r    r   r   r   )r   listr?   r@   r   ri   r/   r   r   r0   r1   r   r   s      r6   #test_aggregate_numeric_object_dtyper4  9  s&    
$d6lRVVHqLQ
fVn  ZZ""$F#Jc
RVVRVV<LM	
 
5		  &(+ 
$d6lE!HM
fVn  ZZ""$F3*sCj1a&IJ	5		 
 &(+r8   c                 l   t        dgd      j                  j                         }t        dg|d      }|j	                  d      j                  d| i      }t        ddgit        j                  dgd      	      }|d   j                  |j                        |d<   t        j                  ||       y )
Nr!   categoryrL   i  r;   r<   r;   r<   r$   rZ   )r	   r   
as_orderedr   r/   rO   r-   r.   r   rM   r0   r1   )r   dsr2   r5   r4   s        r6   %test_aggregate_categorical_lost_indexr:  W  s     
Z	(	,	,	7	7	9B	$b)	*BZZ_  #t-F#uRXXtf3-GHH SM((2HSM&(+r8   )rV   Int32rU   Float32rK   c                 t   | dk(  rd}n
| dk(  rd}nd}t        ddg||dz   gd      }|d	   j                  |       |d	<   |j                  d
      }|j                         }|j                  d d j                  d
      }t        j                  ||       |j                         }|j                  dd  j                  d
      }t        j                  ||       |j                  d      }t        d	t        j                  gi|j                  |       }	t        j                  ||	       |j                  d      }
t        j                  |
|	       t        g d|t        j                  |dz   gd      }|d	   j                  |       |d	<   |j                  d
      }|j                         }t        j                  ||       |j                         }t        j                  ||       |j                  d      }t        j                  ||	       |j                  d      }t        j                  ||	       y )NrV   l   .D3 rK   r   r   r   r   )idtsr?  r>  r   r  rN   )r   r   r   d   )r   r   r/   r   r   r   r0   r1   r   r-   ra   r(   )rM   r?  r2   r   r5   r4   res_maxexpected_maxresult2	expected2res_max2df2r   result3res_max3result4res_max4s                    r6   test_groupby_min_max_nullablerK  e  s    	)		1a&R!V5	6B$xu%BtH	D	BVVXFwwr{$$T*H&(+ffhG7712;((.L'<0ffqf!G4"%%/uMI'9-vvv"H(I. 9RQ,?@
ACD	  'CI
++d
CggiG'8,wwyH(L1ggg$G'9-www%H(I.r8   c            	      R   t        j                  dgdz  ddg      } t        | t        j                  t	        j
                  dt        j                              d      }|j                  dd	      }|j                         }t        j                  ddg| j                  d
      }t        dt        j                  dt         j                  gd      i|      }t        j                  ||       |j                         }d|j                  d<   t        j                  ||       y )Nr   r   r   )
categoriesrL   r7  r;   Fr   rM   r%   r<   UInt64rZ   	   )r   r   )r-   Categoricalr   rF   r?   arangeuint64r/   r   CategoricalIndexrM   ra   r0   r1   r   r   )r   r2   r   r   r-  r4   s         r6   (test_min_max_nullable_uint64_empty_grouprU    s    
..!rq!f
5C	288BIIb		,J#KL	MB	C%	(B
&&(C


q!fCIIC
@C#rxxBEE
(CDCPH#x(
&&(CHMM$#x(r8   )r   r   r   r   c                    t        t        j                  dgt        d      d      t        j                  dgddgd      dd      } t	        |j                  d	d
      |              }t        j                  ddgd	d      }t        t        j                  dd gddgd      dd gd|      }t        j                  ||       y )Nr;   ABT)rM  orderedr   r   g?)rX   rY   valuerX   Fr   r<   )rI   r%   rX  )rY   rY  rZ   )	r   r-   rQ  r3  r+   r/   rT  r0   r1   )r   r2   r5   r-  r4   s        r6    test_groupby_min_max_categoricalrZ    s     
NNC5T$ZNNNA3Aq64H	

B ?WRZZZ7>@F


C:FD
ICNNAt9!QN4[	
 H &(+r8   c           	      (   t        j                  d       d}t        dgddd|      j                  d d } t	        |j                  d      |              }t        ddg|t        j                  g |d	      
      }t        j                  ||       y )Npyarrowzstring[pyarrow_numpy]r    r   rL   r   r!   r   rN  )r'   rM   r(   )
ro   importorskipr   r   r+   r/   r-   r.   r0   r1   )r   rM   r2   r5   r4   s        r6   test_min_empty_string_dtyper^    s     	"#E	#Ss35	A	F	Fr	JB+WRZZ_d+-Fc
%rxx%c/RH &(+r8   c            	      ~   t        g dg dt        t        j                  t        j                  dg      g dd      } | j	                  d      }|dg   j                         }|d   j                         j                         }t        j                  ||       |d   j                         j                         rJ y )N)z-04-23z-05-06z-05-07)z2013-04-23 00:00:00z2013-05-06 00:00:00z2013-05-07 00:00:00OE)zlog080001.logzlog.logxlsx)z
Unnamed: 0DateappFilerb  rd  )r   r	   r?   r@   r/   r   to_framer0   r1   r   r   )r2   r   rr  s       r6   test_max_nan_bugrg    s    	8
 2662664018		

B 
F	B
F8A
6
!!#A!Qy~~##%%%%r8   r   dropnar  with_nankeysjoejimc           	         d}d}t        dd      }t        t        j                  j	                  d      j                  t        t              |      t        j                  j	                  d      j                  ||      t        j                  j	                  d      j                  d||      d      }|r{|j                  dt        i      }d |j                  d	d d
df<   d |j                  dd ddf<   d |j                  dd ddf<   d |j                  dd ddf<   d |j                  dd ddf<   |j                         }	|j                  |||       }
|
d   j                  |      }|j                  |||       }
|
d   j                  t         j                  |      }|s|j#                  d      }|rt%        j&                  ||d       nt%        j(                  ||d       t%        j(                  ||	       y )Nr@  r   z
2015-08-23r   r   r   )rl  rk  juliern  r   r   rl  r   %   rk           rP  )r  r   rh  T)r   F)check_names)r   r   r?   r   r   choicer3  r   r   r   rT   loccopyr/   nuniqueapplyr	   reset_indexr0   rP   r1   )r   rh  r  ri  rj  nmdaysr2   original_dfgrleftrights                r6   test_series_groupby_nuniquer    s    	A
AlB/D	99((+2243H!L99((+224;YY**1-66q!Q?	

B YY'(#qu"ue|#qu"ue|!%qu"ug~!%qu"ug~!%qu"ug~'')K	D8$	7Bg;f-D	D8$	7BwKfnnV<E!!t!,
tU>
dEu="k*r8   c                  N   t        t        d      t        d      t        d      d      } t        t        d      g dg dd      }| j                  dd	
      j                         }t	        j
                  ||       t        d      |_        d|j                  _        |j                  d      }| j                  d      j                         }t	        j
                  ||       | j                  dd i      j                  d      j                  d	      }t	        j
                  ||       t        dgdz  dgdz  dt        d            }d|j                  _        | j                  dd i      j                  d      j                         }t	        j
                  ||       y )Nabbaccabxaccabbacxr:   abc)r   r   r   )r   r   r   r;   Fr  r>   r   rs  r   r   )r<   r=   rZ   )
r   r3  r/   rx  r0   r1   r(   r%   r   replacerA   s      r6   test_nuniquer    sP   	hd8n4>R	SBtE{KLHZZeZ,446F&(+ %[HNHNN}}S})HZZ_$$&F&(+ ZZd$,,S1999GF&(+ sQwaS1W5T%[IHHNNZZd$,,S199;F&(+r8   c                  .   t        g dg dg dg dg dgg d      } | j                  dd	g      d
   j                         }t        j                  | j
                  | j                  g      }t        dgdz  d
|      }t        j                  ||       y )N)r@  r   Alice)   r   Bob)i,  r   Charlie)ipr   Dan)r   r   Edith)amountr>  r%   r>   r>  r  r%   r   r   r   )
r   r/   rx  r   from_arraysr>  r  r	   r0   rP   )rI   r5   r(   r4   s       r6   test_nunique_with_objectr    s    	
 )	D \\4*+F3;;=F""DGGT[[#9:EqcAgF%8H68,r8   c                      t        dt              } | j                  d      j                         }t        dd      }t	        j
                  ||       y )Nr%   r}   r   levelr   )r	   ri   r/   rx  r0   rP   )rI   r5   r4   s      r6   test_nunique_with_empty_seriesr  2  sC    vV,D\\\"**,F61H68,r8   c                     t        t        d      t        d      t        d      gg dd      j                  d      } | j                  t	        j
                  d            d	   j                         }| j                  t	        j
                  d            d	   j                  t        j                        }t        j                  ||       y )
Nz2016-06-28 09:35:35z2016-06-28 16:09:30z2016-06-28 16:46:28)r  23)r   rI   r   h)r(  rI   )r   r
   r   r/   r-   Grouperrx  ry  r	   r0   rP   testr5   r4   s      r6   test_nunique_with_timegrouperr  :  s     /0/0/0
 $	
	 i 	 \\"**#./7??AF||BJJC01&9??OH68,r8   zkey, data, dropna, expected)r   r   r   z
2019-01-01r   r"   r$   r)  i  )r   r   r   yr  r  )r   r   r   r   r  c                     t        | |d      }|j                  dg      d   j                  |      }t        j                  ||       y )N)r"   rI   r"   rI   rs  )r   r/   rx  r0   rP   )r"   rI   rh  r4   r2   r5   s         r6   test_nunique_with_NaTr  K  sG    V 
3-	.BZZ (000?F68,r8   c                     t        g dt        j                  dgd            } | j                  g d      j	                         }t        dgt        j                  dg      | j                  	      }t        j                  ||       y )
N)r   r   r   r;   level_0r$   r>   r   r   r   )r(   r'   )
r   r-   r.   r/   rx  r?   rF   r'   r0   r1   r  s      r6   )test_nunique_preserves_column_level_namesr  {  s`    Y#Y(GHD\\)$,,.F!BHHaSM4<<HH&(+r8   c                      t        t        dd      dg      } | j                  g d      d   j                  d      }t	        g dd      }t        j                  ||       y )	Nz
2008-12-31z
2009-01-02r  r>   )r   r   r   rx  )r   r   r   r$   )r   r   r/   	transformr	   r0   rP   r   s      r6   $test_nunique_transform_with_datetimer    sQ    	:lL9F8	LBZZ	"6*44Y?Fif-H68,r8   c                     t        dg      j                  d      }|d d }|j                  ||       }|j                         }| rt        g |d d d      }nt        dg|d      }t	        j
                  ||       y )Nr   r6  r   r   r   rN   )r	   r   r/   rx  r0   rP   )r   r   rQ   r   r5   r4   s         r6   test_empty_categoricalr    sw    
!+

Z
(C
bq'C	S8	,BZZ\F"CG7;1#S868,r8   c                      t        ddt        j                  dg      } | j                  g d      }d}t	        j
                  t        |      5  |j                  t        j                        }d d d        d}t	        j
                  t        |      5  |j                  t        j                        }d d d        |j                         }t	        j                  |       t	        j                  |       y # 1 sw Y   xY w# 1 sw Y   RxY w)Nr   r   r   )r   r   r   r   zusing SeriesGroupBy.sumrm   zusing np.sum)r	   r?   r@   r/   r0   r   r   rO   r,   sumry  rP   )sr   r   r5   rC  r4   s         r6   test_intercept_builtin_sumr    s    S"&&#&'Aii%G
#C		#	#M	= +X\\*+ C		#	#M	= .---. {{}H68,7H-+ +. .s    C8 D8DDr  r   c           	      B   d}d}t         j                  }t        j                  |||||||gd      }t	        g d|d      }|j                  d      j                  |       }| d	k(  rTt	        d
t        j                  g dd      it        j                  g dd            }t        j                  ||       y t	        d
t        j                  t        j                  gdz  d      it        j                  g dd            }t        j                  ||       y )NTFrK   rL   )r   r   r   r   r   r   r   r7  r;   r  r   r<   )r   r   r   rV   r   r$   rZ   r   )r?   r@   r-   rF   r   r/   r  r.   r0   r1   ra   )r  r!   r    nadfgr2   r5   r4   s           r6   !test_groupby_sum_mincount_booleanr    s    AA	B
((Aq"b!Q*)
<C	.S9	:BZZ_  9 5FA~"((9G45((93/
 	fh/"((BEE7Q;g67((93/
 	fh/r8   c                     t        g dg dg ddd      } | j                  d      }t        j                  g ddd      }|d   j	                  d	      }t        t        j                  gd
z  d|d      }t        j                  ||       |j	                  d	      }t        t        j                  gd
z  t        j                  gd
z  dd|      }t        j                  ||       y )N)r   r   r   r   rV   rL   r    r}   r!   r   r  r   )rM   r(   r%   )r!   r   )rM   r(   )
r   r/   r-   r.   r  r	   ra   r0   rP   r1   )r2   r   r-  r5   r4   s        r6   0test_groupby_sum_below_mincount_nullable_integerr    s    	C7	SBjjoG
((93g
6CS\*Fruugk#FH68,[[1[%Fw{"%%1=WTWXH&(+r8   c                     t        g dt        j                  d      t        j                  d      t        j                  d      t        j                  gd      } t        j                  d      }| j	                  d      }|j                         }t        d	||git        j                  d
dgd            }t        j                  ||       |d	   j                         }t        j                  ||d	          |d	   j                  d      }t        |t        j                  gdd	|j                        }t        j                  ||       y )N)r   r   r   r   1d2d3dr|   r   )r}  r    r!   r   r   r$   rZ   r  zm8[ns])rM   r%   r(   )r   r-   	TimedeltaNaTr/   r  r.   r0   r1   rP   r	   r(   )r2   td3r   r   r4   s        r6   #test_groupby_sum_timedelta_with_natr    s    	,,t$bll4&8",,t:LbffU	

B ,,A
C	CB
&&(C#Sz*"((Aq62LMH#x(
S'++-C3.
S'+++
"CsBFFm8#X^^TH3)r8   )int8int16int32r   float32float64rS  zmethod,datar2   r|   r   r   r   )r2   out_typec                    t        ddddddddddddg      }|j                  j                  |       |d<   d|vrg |d<   d|v r|d   }n| }|d	   }t        |      }|j                  j                  |      |d<   |j                  d
d       |j	                  d
      } t        ||      |d    }t        j                  ||       y )Nr   r|   r   r   r   r!   argsr  r2   r    T)inplace)r   r!   r   r   r/   r+   r0   r1   )	rM   r   rI   r2   r  r3   df_outgrpdts	            r6   %test_groupby_non_arithmetic_agg_typesr    s     
q	+11-=QQ?OP
B ddkk% BsGTVT
#
t*Cs^F((//(+F3K
S$'::c?DftF|,A!V$r8   c                  "    ddl m}  || ddi|S )Nr   )semddofr   )scipy.statsr  )r  ru   r  s      r6   	scipy_semr    s    '1'''r8   z	op,targopr   r   stdvarr  prodc                      | j                   d   S )Nr   r   r   s    r6   r   r      s    AFF1I r8   c                      | j                   d   S )Nr  r   s    r6   r   r   !  s    166": r8   r  scipy)marksc                     t        t        j                  j                  d      j	                  d            }t        j                  j                  d      j                  ddd      j                  t              } t        |j                  |      |              }| dv rd nt        }d|  }t        j                  ||      5  |j                  |      j                  |      }d d d        t        j                  |       y # 1 sw Y    xY w)	Nr   r   r   r   r   )r   r   r   r  zusing DataFrameGroupBy.rm   )r   r?   r   r   r   r   r   rT   r+   r/   r   r0   r   rO   r1   )optargopr2   r   r5   r   r   r4   s           r6   test_ops_generalr    s    $ 
299((+;;DA	BBYY""1%..q"4.@GGNF,WRZZ',.F::4D#B4
(C		#	#D	4 2::f%))&12&(+2 2s   !DDr   )	r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   function)r   r   r  c                 "   |dk(  rdnd}t        j                  |gdz  t              }t        j                  g ddd	      }t        d
|i|      j                  d      }t        | d      j                  d      } t        ||             }t        j                  ||       |j                  |      }t        j                  ||       |j                  |g      }t        j                  d
|fg      |_        t        j                  ||       y )Nr  g      ?g      ?r   rL   r   r    rV   r}   r!   rZ   rU   )r?   rF   rT   r-   r.   r   r   r/   r+   r0   r1   rO   r   from_tuplesr'   )r   r  outputr   r-  r4   r,  r5   s           r6   ,test_apply_to_nullable_integer_returns_floatr  2  s     %S3F
((F8a<u
-C
((93g
6C#s3/66yAHvW-55c:F&WVX&(F&(+ZZ!F&(+ZZ
#F!--X.?@H&(+r8   r  )
r  r  r   r   r   r   skewr  r  r  r   r*   c                 l    t        dg      }dk(  r|}d}n|j                  }d}t        j                  t        |      5  |j                  d|      }d d d         dk(  rd t                     }|j                  d      j                   fd	      }	|r|	j                  
      }	t        j                  ||	       y  t                      }|j                  d      j                   fd      }	|r|	j                  
      }	t        j                  ||	       y # 1 sw Y   xY w)Nr   zAThe 'axis' keyword in DataFrame.groupby is deprecated and will bez+DataFrame.groupby with axis=1 is deprecatedrm   )r  r   r   r  r)   r  c                 ,     t        |             S )N)r   r*   r+   )r  r   r  r*   s    r6   r   z3test_regression_allowlist_methods.<locals>.<lambda>v  s    ngan$v> r8   r   c                 *     t        |             S )Nr   r  )r  r   r  s    r6   r   z3test_regression_allowlist_methods.<locals>.<lambda>}  s    .'!R.d:S r8   )
r   Tr0   r   r   r/   r+   ry  r   r1   )
r  r   r*   r   	raw_frameframer   r   r5   r4   s
   ```       r6   !test_regression_allowlist_methodsr  Q  s   , 1#IqyQ;		#	#M	= ?--ad->? 
V|%"%V4==q=)//>
 ***5H
fh/%"%'==q=)//0ST***5H
fh/#? ?s   D**D3c                  (   ddgddgddgddgddgddgddgdd	gdd
gddgddgddgddgddgg} t        | ddgd      }|j                  dg      j                         j                         }t        dgdgdd      }t	        j
                  ||       y )Nr   r  )   r   ro  rp        r   r   +   r   /   rq  X   r;   r<   r   )r'   rM   l   N+R@r7  rL   )r   r/   r  rz  r0   r1   )rI   r2   r5   r4   s       r6   "test_groupby_prod_with_int64_dtyper    s     
B	
B	
B	
B	
A	
B	
B	
A	
A	
B	
A	
B	
B	
BD  
4#s7	;BZZ##%113Fs*<)=>gNH&(+r8   )fr,   datetimer   stringr   numpyr?   ro   pandas._libs.tslibsr   pandas.core.dtypes.commonr   pandas.core.dtypes.missingr   pandasr-   r   r   r	   r
   r   r   pandas._testing_testingr0   pandas.utilr   tdmarkparametrizer@   r7   rB   rH   ra   rS   rF   rh   r_   rf   r  rk   rr   rv   r   r   r   r   r   r   r   r   r   r   r  r  r  r!  r#  r.  r0  r4  strr:  rK  rU  rZ  r^  rg  slowr  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   param
skip_if_nor  r  r  r  rt   r8   r6   <module>r     s     "   $ 2 9    . eU^4
	 $,% 5&,"
, 5%.9, :, 5%.9
	ruu	u	ruud	ruue

-
 :
- % BHHdV4(BHHbeeWI.		
 BHHbeeWI.BHHdV4(		
 BHHbeeWI.BHHbeeWI.		
 BHHbeeWI.BHHbeeWI.		
':	,;:	, 5%.9"AB	& C :	& %	'	266"D)	&	rvv&.	&& 5%.9: :: 5%.9& :& 8 45, 6,( 8 45%, 6%,P 	aVA1a&IJ	aVA1a&IJ $7, 8,@ 
 2323	
 	/	 #KL, M	,& & 12, 3,64P-",,",>-$?(? %0
- 1
- %0
, 1
,,< %0
, 
, 1
, "UV,/ W,/^)" !@A, B,, %0	, 1	,&( %/E4=1dE]3dE]35'E5>!:;+ < 4 4 2 0 +D,2-&--" ! |$bffi.EFA3hbhhu59G		
 RWWT1a "&&'"''$1*=>A3hbhhu59G		
 &a#a#a# Aq63*5!AO	
 &a#a#a# Aq63*5!AO	
3%(R-S(R-,-
-." q"g.0 /0,,*0 P 	4*!!,<=>?	$qq)+;<=>	aa(*:;<=	aa(*:;<=	*!!,<=7ST	%	%6( 		299							%&	%&	"''UI]R]]7-CD"	,#"	,  -RUUAq"%%Aruua8	
 !'9:	 %>?, @	,(  !Q(D%=1$/0 0 2 )$0@,r8   