
    A>iX                        S SK rS SKrS SKJr  S SKJs  Jr  S SK	J
r
  S SKrS SKJr  S SKJr  \R$                  R'                  SSSS/SS//S	S
/S	S/S	S/S.4SSS/S\R(                  /SS/// SQ/ SQ/ SQS.4/5      S 5       r\R$                  R'                  SSSS/SS//SS
/SS/SS/S.4SSS/S\R(                  /SS/\R(                  S/// SQ/ SQ/ SQS.4/5      S 5       r\R$                  R'                  SSSS/S
S	/SS	/SS	/S.4SSS\R(                  // SQ/ SQ/ SQS.4/5      S 5       r\R$                  R'                  SSSSS \R(                  /\R0                  " S!S!/SS /S"94SSSS \R(                  /\R0                  " / S#QSS \R(                  /S"94/5      S$ 5       r\R$                  R'                  S%S\R0                  " S&S'/SS /S(S)94S\R0                  " / S*QSS \R(                  /S(S)94/5      S+ 5       rS, r\R$                  R'                  S-\R8                  " S S.5      \" S/5      \R<                  R?                  S0S1/S2S3/S49/5      S5 5       r \R$                  R'                  SSSS/SS//S	S
/SS/SS/S.4SSS/S\R(                  /SS/// SQ/ S6Q/ S7QS.4/5      S8 5       r!\R$                  RD                  \R$                  R'                  S9\RF                  " S:5      \RF                  " S;5      4\RH                  " S<5      \RH                  " S=5      4\RJ                  " S:5      \RJ                  " S;5      4/5      \R$                  R'                  S>SS?S!/4S/ S@Q4/5      SA 5       5       5       r&\R$                  R'                  SB\RN                  " SSSS \R(                  // SCQSD.SE/ SFQ0SS \R(                  /SGSH9\RN                  " SSSS \R(                  // SCQSD.SE/ SIQ0SSJSH9\RN                  " S/ SKQ/ SCQSD.SE/ SFQ0SSLSH9\RN                  " S/ SKQ/ SCQSD.SE/ SFQ0SSMSH9/5      SN 5       r(\R$                  R'                  SOSS/SS //5      \R$                  R'                  SPS/SS //5      \R$                  R'                  SQSS/5      SR 5       5       5       r)SS r*ST r+\R$                  R'                  SU/ SVQ5      \R$                  R'                  SWSSXSYSZS[S\S]S^S_S`SaSbSc\RN                  " Sd\RX                  " Se5      Sf9SgShSi/5      \R$                  R'                  SjSS/5      Sk 5       5       5       r-\R$                  R'                  SjSS/5      \R$                  R'                  SW\.S/5      Sl 5       5       r/\R$                  R'                  Sm/ SnQ5      So 5       r0Sp r1\R$                  R'                  SqSrSs/5      St 5       r2Su r3Sv r4g)w    N)Pandas4Warning)na_value_for_dtype)get_groupby_method_argszdropna, tuples, outputsTAB      *@Q^@     ^@      ?cdeF)r   皙(@r	   )r         m@r
   )r         (@r   c                    / SQSUSSS// SQ/ SQ/n[         R                  " U/ SQS	9nUR                  S
S/U S9R                  5       n[         R                  R                  U[        S5      S9nU (       d!  UR                  SS[        R                  /SS9n[         R                  " X'S9n[        R                  " Xh5        g )Nr   r      r   r   r   r   r   r   r   r   r	   {      r   r   r   r   r   abr   r   r   columnsr   r   dropnaabnamesr   levelindexpd	DataFramegroupbysum
MultiIndexfrom_tupleslist
set_levelsnpnantmassert_frame_equal)	r    tuplesoutputsnulls_fixturedf_listdfgroupedmiexpecteds	            g/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/groupby/test_groupby_dropna.py:test_groupby_dropna_multi_index_dataframe_nan_in_one_groupr>      s    0 		mT5"-"	G 
g'@	ABjj#sFj3779G		"	"6d	"	<B ]]Cbff-S]9||G.H',    r   )r   g*@r	   r   )r   g     @m@r
   r   )r   r   r   r   c           	         / SQSUSSS// SQUSSSS	/SUSSS	//n[         R                  " U/ S
QS9nUR                  SS/U S9R                  5       n[         R                  R                  U[        S5      S9nU (       d5  UR                  SS[        R                  /SS[        R                  //5      n[         R                  " X(S9n	[        R                  " Xy5        g )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r"   r&   r(   )
r    r5   r6   r7   nulls_fixture2r8   r9   r:   r;   r<   s
             r=   ;test_groupby_dropna_multi_index_dataframe_nan_in_two_groupsrB   9   s    0 		mT5"-"	aC(	naC(G 
g'@	ABjj#sFj3779G		"	"6d	"	<B ]]S#rvv.c2660BCD||G.H',r?   zdropna, idx, outputs)r   r   r   )r	   r   r   )r
   r   r   )r   r   r   c                    / SQ/ SQ/ SQ/ SQ/n[         R                  " U/ SQS9nUR                  SU S9R                  5       n[         R                  " U[         R                  " USS	9S
9n[
        R                  " XV5        g )N)r   r   r   r   )Nr   r   r   )r   r	   r   r   )r   r   r   r   )r   r   r   r   r   r   r   namer&   )r)   r*   r+   r,   Indexr3   r4   )r    idxr6   r8   r9   r:   r<   s          r=   *test_groupby_dropna_normal_index_dataframerH   e   sn    $ 		G 
g';	<BjjVj,002G||G288Cc+BCH',r?   zdropna, idx, expectedr   r      r&   )rI   rI   rI   c                     [         R                  " / SQUS9nUR                  SU S9R                  5       n[        R
                  " XB5        g )N)r      rI   rI   r&   r   )r%   r    )r)   Seriesr+   r,   r3   assert_series_equal)r    rG   r<   serresults        r=    test_groupby_dropna_series_levelrP      s=     ))L
,C[[q[0446F6,r?   zdropna, expected     @j@     u@	Max Speedr'   rE   )rQ   rR         4@c                     [         R                  " / SQ/ SQSS9nUR                  SSS[        R                  /U S9R                  5       n[        R                  " X15        g )N)g     `x@rR   g      >@rU   )FalconrW   ParrotrX   rS   rT   r   r   r   )r)   rL   r+   r1   r2   meanr3   rM   )r    r<   rN   rO   s       r=   test_groupby_dropna_series_byrZ      sS     ))"6C [[#sC0[@EEGF6,r?   c                     [         R                  " / SQ/ SQS.5      nUR                  SU S9nUR                  R                  U :X  d   eg )Nr   r   r   Nr   rK   rI   Nr   r   r   r   )r)   r*   r+   _grouperr    )r    r9   gbs      r=   test_grouper_dropna_propagationra      s?    	O/B	CB	C	'B;;'''r?   r'      abcd)r   rK   )Rr   numcolr"   c                 ,   SSSSU (       a  [         R                  OS/0n[        R                  " / SQ/ SQS.US9nUR	                  SU S	9nUR                  [        5      n[        R                  " X!S9n[        R                  " XV5        US/   R                  [        5      n[        R                  " X!S9n[        R                  " XV5        US   R                  [        5      n[        R                  " US   USS
9n[        R                  " XV5        g )Nr   rK   r   r\   r]   r^   r&   r   r   rT   )r1   r2   r)   r*   r+   	transformlenr3   r4   rL   rM   )r    r'   expected_datar9   r`   rO   r<   s          r=   +test_groupby_dataframe_slice_then_transformrk      s     1afBFF!<=M	O/B%	PB	C	'B\\#F||M7H&+Y  %F||M7H&+Ws#Fyys+5sCH6,r?   )r   r   r
   )r   r   r   c                    / SQ/ SQ/ SQ/ SQ/n[         R                  " U/ SQS9nSSS	S
.nUR                  SS/U S9R                  U5      n[         R                  R                  U[        S5      S9nU (       d!  UR                  SS[        R                  /SS9n[         R                  " X'S9n[        R                  " Xh5        g )Nr   )r   Nr   r   r   r   r   r   r   r,   maxminr   r   r   r   r!   r"   r   r   r$   r&   )r)   r*   r+   aggr-   r.   r/   r0   r1   r2   r3   r4   )	r    r5   r6   r8   r9   agg_dictr:   r;   r<   s	            r=   -test_groupby_dropna_multi_index_dataframe_aggrq      s    , 	$"	G 
g'@	ABU3Hjj#sFj377AG		"	"6d	"	<B ]]Cbff-S]9||G.H',r?   zdatetime1, datetime2z
2020-01-01z
2020-02-01z-2 daysz-1 dayszdropna, valuesr   )r   rI      c           	      B   [         R                  " / SQUUUUUU/S.5      nU (       a  X#/nOX#[        R                  /nUR	                  SU S9R                  SS05      n[         R                  " SU0[         R                  " USS9S9n	[        R                  " X5        g )	N)r   rK   rI   rb      rr   )valuesdtrv   r   ru   r,   rD   r&   )	r)   r*   r1   r2   r+   ro   rF   r3   r4   )
r    ru   	datetime1	datetime2unique_nulls_fixtureunique_nulls_fixture2r9   indexesr:   r<   s
             r=   &test_groupby_dropna_datetime_like_datar|      s     
($%
	

B (0jjfj-118U2CDG||Xv.bhhwT6RSH',r?   z#dropna, data, selected_data, levels)
   r}         )groupsru   ru   )r   r   r   r   dropna_false_has_nan)id)r   r   r   dropna_true_has_nan)r   r   r   r   dropna_false_no_nandropna_true_no_nanc                 x   [         R                  " U5      nUR                  SU S9nUR                  S 5      n[	        [        US   US   SS95      n[         R                  R                  USS /S9nU (       d  U(       a  UR                  USS9n[         R                  " X(S	9n	[        R                  " Xi5        g )
Nr   r   c                 V    [         R                  " S[        [        U 5      5      05      $ )Nru   )r)   r*   rangeri   )grps    r=   <lambda>@test_groupby_apply_with_dropna_for_multi_index.<locals>.<lambda>G  s    ",,%C//J"Kr?   ru   Fstrictr"   r$   r&   )r)   r*   r+   applytuplezipr-   r.   r0   r3   r4   )
r    dataselected_datalevelsr9   r`   rO   	mi_tuplesr;   r<   s
             r=   .test_groupby_apply_with_dropna_for_multi_indexr     s    L 
d	B	HV	,BXXKLFc$x.-*A%PQI		"	"9Xt4D	"	EB f]]6]2||M4H&+r?   input_indexkeysseriesc                 r   [         R                  " S[        R                  /SS/SS/S.5      nUR	                  U5      nU(       a  US   nOU SS/:X  a  US/:X  a  US/   nU b  UR	                  U 5      nUR                  USS	9nU(       a  US   nUR                  5       n[        R                  " Xd5        g )
Nr   rK   rI   r   r   r   r   r   r   Fr   )	r)   r*   r1   r2   	set_indexr+   r,   r3   assert_equal)r   r   r   objr<   r`   rO   s          r=   )test_groupby_dropna_with_multiindex_inputr   T  s    
 ,,RVVQQ	
C }}T"HC=	c
	"tu}SE?mmK(	T%	(BWVVXFOOF%r?   c            
         S[         R                  SS[         R                  // SQS.n [        R                  " U 5      nUR	                  SSS9nUR
                  n[         R                  nS[         R                  " SS	/US
9S[         R                  " S/US
9[         R                  [         R                  " SS/US
90n[        UR                  5       UR                  5       SS9 H  u  pg[        R                  " Xg5        M     [         R                  " [        UR                  5       5      S	   5      (       d   e[        UR                  5       5      SS	 SS/:X  d   eg )Ng1g2)r   r   rK   rI   rb   )groupr   r   Fr   r   rK   dtyperI   r   rb   Tr   )r1   r2   r)   r*   r+   indicesintparrayr   ru   r3   assert_numpy_array_equalisnanr/   r   )r   r9   r:   rO   r   r<   result_valuesexpected_valuess           r=   test_groupby_nan_includedr   r  s   BFFD$7oND	d	Bjjj/G__FGGEbhh1vU+bhhs%(
!Qu-H
 +.*4+& 	##MC+ 88D'*++++q#d|333r?   c                      [         R                  " [        R                  SS/// SQS9n U R	                  SS/5      n U R                  SS/SS9R                  5       nU n[        R                  " X5        g )	Nr   r   r   r   r   r   Fr   )	r)   r*   r1   r2   r   r+   firstr3   r4   )r9   rO   r<   s      r=   &test_groupby_drop_nan_with_multi_indexr     sc    	1~&	@B	sCj	!BZZc
5Z1779FH&+r?   sequence)xyzyxxyzyzxzzzzzzyzxyyyyzzxyxyxyr   UInt8Int8UInt16Int16UInt32Int32UInt64Int64Float32Float64categorystringstring[pyarrow]pyarrow)marksdatetime64[ns]	period[D]zSparse[float]test_seriesc           	      6   US;   a  SS[         R                  S.nO]US;   a  SS[         R                  S.nOBUb+  UR                  S5      (       a  S	S
[         R                  S.nOS	S
[        R                  S.n[         R
                  " [         R                  " U  Vs/ s H  oTU   PM	     snUS9/ SQS.5      nUR                  SSSUSS9nU(       a  US   nUR                  5       n0 n	[        U 5       H  u  pU	R                  US5      U
-   X'   M     US:X  aA  [         R                  " U	 Vs/ s H  oU   PM	     snUS   R                  R                  SS9nO[        U[        5      (       aR  UR                  S5      (       a<  [         R                   " [         R"                  " U	 Vs/ s H  oTU   PM	     snUS9SS9nO)[         R                   " U	 Vs/ s H  oTU   PM	     snUSS9n[         R                  " U	R%                  5       USS S9nU(       d  UR'                  5       nU(       d@  UR)                  5       nUb-  UR                  S5      (       a  US   R+                  U5      US'   [,        R.                  " X5        g s  snf s  snf s  snf s  snf )N)r   r   xy)r   r   z)r   r   z
2016-01-01z
2017-01-01)IUFr   rK   r   )r   r   rK   rI   )keyr   r   F)r    sortas_indexobservedr   r   r   rD   Sparse)r   rE   )r'   rE   r   )r)   NA
startswithr1   r2   r*   rL   r+   r,   	enumerategetCategoricalIndexcat
categories
isinstancestrrF   r   ru   to_framereset_indexastyper3   r   )r   r   r   r   uniqueslabelr9   r`   rO   summedrG   r   r'   r<   s                 r=   test_no_sort_keep_nar     sC   P --#BEE2	1	1$<beeD		u//@@./	99(C(en(C5Q	

B 
E%ehQV	WBWVVXF F)


5!,s2 *
##!'(AQZ(uIMM$$

 
E3		E$4$4X$>$>HH&9&en&9Ge
 f=fU%.f=UQVWyyCtLH$$&'')!1!1(!;!;&uo44U;HUOOOF%E D  ) : >s   J0J,JJc                    [         R                  " SSS/05      n[         R                  " X#/US9nU(       a  US   OUnUR                  USU S9nUR	                  5       n	[         R
                  " [        UR                  5      /5      n
[         R                  " SS/0U
S9nU(       a  [        R                  " XS   5        g [        R                  " X5        g )	Nr   r   rK   r   F)r    r   rI   r&   )r)   r*   rL   r+   r,   rF   r   r   r3   rM   r4   )r   r   r7   rA   r   r9   r   r   r`   rO   r'   r<   s               r=   test_null_is_null_for_dtyper     s     
sQFm	$BYY6eDF "S'bC	VE	5BVVXFHH(678E||S1#Je4H
v}5
f/r?   
index_kind)r   singlemultic                    [         R                  " [         R                  R                  S5      R	                  / SQSS9S 5      n[
        R                  " [
        R                  " U/ SQS9[        S5      S.5      nUR                  5       n[
        R                  " U/ S	QS9R                  S
5      US'   US:X  a  S/nOfUS:X  a&  S/nUR                  S5      nUR                  S5      nO:SS/nUS   US'   UR                  SS/5      nUS   US'   UR                  SS/5      n[        X5      n	[        X5      n
U S:X  a,  US:X  a&  U	S   R                  US94n	U
S   R                  US94n
UR                  USXUS9nU(       d7  U S;   a1  [        R                   " ["        SS9   [%        X5      " U	6   S S S 5        g UR                  XUSS9nU S:X  a	  [&        nSnOS nSn[(        R*                  " XS9   [%        X5      " U
6 R-                  5       nS S S 5        WS   R.                  R1                  S
/5      US'   US:X  a"  US   R.                  R1                  S
/5      US'   U(       a+  US:X  a  UR                  SS/5      nOUR                  S5      nU S;   a  US:w  a  US   R2                  R5                  5       nUS:X  aC  U Vs/ s H  nUS
:X  a  [         R6                  OUPM     nn[
        R                  " U/ SQS9US'   O<U Vs/ s H+  nUS:X  a   [         R6                  [         R6                  4OUPM-     nnX_S'   U S:X  a,  UR9                  SS0S9nU(       a  US   R9                  S 5      nU S:X  a	  [&        nSnOS nSn[(        R*                  " XS9   [%        X5      " U	6 nS S S 5        [(        R:                  " WU5        g ! , (       d  f       g = f! , (       d  f       GN= fs  snf s  snf ! , (       d  f       NS= f) NrK   r   rK   N   sizer   rK   rI   r   r~   r   r   )r   rK   rI   rb   rb   r   r   r   x2corrwithr   r   Fr    r   r   r   )idxminidxmaxz(empty group due to unobserved categories)matchT)r   r   r   z'DataFrameGroupBy.corrwith is deprecated r   )r   r   r   )rb   rb   r   )r1   appendrandomdefault_rngchoicer)   r*   Categoricalr   copyfillnar   r   dropr+   pytestraises
ValueErrorgetattrr   r3   assert_produces_warningr   r   remove_categoriesru   tolistr2   renamer   )reduction_funcr   r   r   r   ru   r9   	df_filledr   argsargs_filled	gb_keepna	gb_filledwarnmsgr<   r   rO   s                     r=   test_categorical_reducersr    s    YYryy,,Q/66|"6MtTF	nnV	:rK
B
 	I^^F|DKKANIcNWu	x	u\\#'',	T{c74\\3+&#C.	$''d4	">6D).DK#
g(=QT*,"1~**4*8:

UX8  I *>>]]H
 I.5
 	!!$t!TI#7		#	#D	495{COOQ 
5SM%%77<HSMW!$++==qcB ))3+6H))#.H--*2G#%%,,.!7=>v!QbffA-vF>NN6iHHSMFLMf!v+rvvrvv&1<fFM"SM??Av;?7'..t4H#7		#	#D	43T: 
5 OOFH%a
 
 	 
5	4 ? N 
5	4s0   %O5O	"O/2O4O9
O
O,9
Pc                 $   [         R                  " [         R                  R                  S5      R	                  / SQSS9S 5      n[
        R                  " [
        R                  " U/ SQS9[        S5      S.5      n[        X5      nXUS	   R                  5          S
   nU S:X  a  [        [        [        U5      5      5      nOU S:X  aw  U(       a3  U(       a  US	   R                  SS9S-
  n	OCUS	   R                  SS9S-
  n	O-UR                  S UR                  S    S	   R                  5       n	[        U5      U	/-  nO[!        Xp5      " U6 n[
        R                  " S
U05      n
UR#                  S	SXUS9nUR#                  S	SXS9n[!        X5      " U6 n[!        X5      " U6 n[%        XUS	   R                  5          R                  R'                  5       U
R(                  R+                  5       SS9 H8  u  nnUR,                  S:X  a  UUR                  U'   M'  UUR                  US4'   M:     U S:X  a/  XS	   R/                  5       UR1                  W	5      -  ==   S-  ss'   U S;  a  UR3                  S5      n[4        R6                  " X5        g )NrK   r   r   r   r   r   r~   r   r   r   cumcountngroupFr   r   r   r   T)r    r   r   r   )rankdiff
pct_changeshiftint64)r1   r   r   r   r   r)   r*   r   r   r   isnullr/   ri   nuniqueilocr'   r  r+   r   r	  ru   ravelndimnotnullger   r3   r   )transformation_funcr   r   r   ru   r9   r  null_group_valuesnull_group_datana_groupnull_group_resultr  	gb_dropnarO   r<   r  values                    r=   test_categorical_transformersr*  R  sX   YYryy,,Q/66|"6MtTF	nnV	:rK
B ##6;D c7>>+,S1j(uS):%;<=		(c7??%?81< c7??%?81<ww;!2!8!8!;<SAIIKH/0H:=!"3I4Pc?%;<

EH(  I 

3th
JIY4d;Fy6=H
c7>>""))+  &&(e
 ==A"'HMM$%*HMM$'" h&C"X[[%::;q@;"II??7+OOF%r?   methodheadtailc                 B   [         R                  R                  S5      R                  / SQS5      n[        R
                  " [        R                  " U/ SQS9[        [        U5      5      S.5      nUR                  SSXUS	9n[        X`5      " 5       nU S
:X  a  US S S2   nUS:H  US:H  R                  5       S:*  -  US:H  US:H  R                  5       S:*  -  -  US :H  US :H  R                  5       S:*  -  -  nU S
:X  a  US S S2   nXX   n	[        R                  " Xy5        g )NrK   r   r   r   r   r   r   Fr   r-  r   rt   )r1   r   r   r   r)   r*   r   r   ri   r+   r  cumsumr3   r4   )
r+  r   r   r   ru   r9   r`   rO   maskr<   s
             r=   test_categorical_head_tailr2    s#    YY""1%,,\2>F	nnV	:s6{AST
B 
Ch	WBR "F" A+6Q;..0A5	6aKVq[002a78	: dN$668A=>	@ 	 DbDzxH&+r?   c                  x   [         R                  R                  S5      R                  / SQS5      n [        R
                  " [        R                  " U / SQS9[        [        U 5      5      S.5      nUR                  SSSS	9nUR                  S
 5      nUR                  5       n[        R                  " X45        g )NrK   r   r   r   r   r   r   Fr    r   c                 "    U R                  5       $ Nr,   r   s    r=   r   &test_categorical_agg.<locals>.<lambda>  s
    aeegr?   )r1   r   r   r   r)   r*   r   r   ri   r+   ro   r,   r3   r4   ru   r9   r`   rO   r<   s        r=   test_categorical_aggr;    s    YY""1%,,\2>F	nnV	:s6{AST
B 
C	6BVV%&FvvxH&+r?   c                  z   [         R                  R                  S5      R                  / SQS5      n [        R
                  " [        R                  " U / SQS9[        [        U 5      5      S.5      nUR                  SSSS	9nUR                  S
 5      nUR                  S5      n[        R                  " X45        g )NrK   r   r   r   r   r   r   Fr4  c                 "    U R                  5       $ r6  r7  r8  s    r=   r   ,test_categorical_transform.<locals>.<lambda>  s
    AEEGr?   r,   )r1   r   r   r   r)   r*   r   r   ri   r+   rh   r3   r4   r:  s        r=   test_categorical_transformr?    s    YY""1%,,\2>F	nnV	:s6{AST
B 
C	6B\\+,F||E"H&+r?   )5numpyr1   r  pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorstdpandas.core.dtypes.missingr   pandasr)   pandas._testing_testingr3   pandas.tests.groupbyr   markparametrizer2   r>   rB   rH   rL   rP   rZ   ra   
RangeIndexr/   r-   from_productrk   rq   arm_slow	Timestamp	TimedeltaPeriodr|   paramr   r   r   r   
skip_if_nor   objectr   r  r*  r2  r;  r?   r?   r=   <module>rW     s!     ( ) ) 9   8  3Z#s$.e}D#;G	
 3Z#rvvc
3))&	
&-'&-0  3Z#s$.e}D#;G	
 3Z#rvvc
RVVSMB..+	
&-'&-2 	Sz&$udm3PT+VW#rvv))&	
--  	S#rvv&		1a&c
(KL#sBFF#IIiS"&&'9:	

-
- 	ryy%SzLMII*3RVV2D;W	
	-	-( 
aV
""FJ#7u~"N--(  3Z#s$.e}C:F	
 3Z#rvvc
3))%	
&-'&-. 	l	#R\\,%?@	i	 ",,y"9:	<	 "))L"9: )TB7OeZ=P+QR- S -: )S#rvv.:JK|$#rvv%	
 	S#rvv.:JKy!$	
 	+7GH|$$	
 	+7GH|$#	
/"F,G"F,$ usCj(AB3%#s!45D%=1& 2 6 C&64(, 	 &bmmI.FG#, u61& 7-H1&h u664.10 2 70" 'CDS& ES&l0&f FF#34, 5,2	,	,r?   