
    Owg[                     P   d dl Zd dlZd dlmZ d dlmZ d dlZd dl	m
Z d dlmZ ej                  j                  ddddgddggd	d
gd	dgd	dgdfdddgdej                   gddggg dg dg ddfg      d        Zej                  j                  ddddgddggdd
gddgddgdfdddgdej                   gddgej                   dggg dg dg ddfg      d        Zej                  j                  ddddgd
d	gdd	gdd	gdfdddej                   gg dg dg ddfg      d        Zej                  j                  ddddd ej                   g ej(                  d!d!gdd g"      fdddd ej                   g ej(                  g d#dd ej                   g"      fg      d$        Zej                  j                  d%d ej(                  d&d'gdd gd()      fd ej(                  g d*dd ej                   gd()      fg      d+        Zej                  j                  d,d-      d.        Zej                  j                  d/ ej0                  d d0       ed1      ej4                  j7                  d2d3gd4d5g6      g      d7        Zej                  j                  ddddgddggd	d
gddgddgdfdddgdej                   gddggg dg d8g d9dfg      d:        Zej                  j<                  ej                  j                  d; ej>                  d<       ej>                  d=      f ej@                  d>       ej@                  d?      f ejB                  d<       ejB                  d=      fg      ej                  j                  d@ddAd!gfdg dBfg      dC                      Z"ej                  j                  dD ejF                  dddd ej                   gg dEdFdGg dHidd ej                   gdIJ       ejF                  dddd ej                   gg dEdFdGg dKiddLJ       ejF                  dg dMg dEdFdGg dHiddNJ       ejF                  dg dMg dEdFdGg dHiddOJ      g      dP        Z$ej                  j                  dQddgdd gg      ej                  j                  dRdgdd gg      ej                  j                  dSddg      dT                      Z%dU Z&dV Z'ej                  j                  dW e(dX            ej                  j                  dYddZd[d\d]d^d_d`dadbdadcddde ejF                  dfej                  jS                  edgh      i      djdkdlg      ej                  j                  dmddg      dn                      Z*ej                  j                  dmddg      ej                  j                  dYe+dg      do               Z,ej                  j                  dpg dq      dr        Z-ds Z.ej                  j                  dtdudvg      dw        Z/dx Z0dy Z1y)z    N)pa_version_under10p1)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                    g dd|dddgg dg dg}t        j                  |g d	      }|j                  d
dg|       j                         }t         j                  j                  |t        d            }| s$|j                  ddt        j                  gd      }t        j                  ||      }t        j                  ||       y )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	            _/var/www/horilla/myenv/lib/python3.12/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||G2.H'8,    r   )r   g*@r	   r   )r   g     @m@r
   r   )r   r   r   r   c           	         g dd|dddgg d|dddd	gd|ddd	gg}t        j                  |g d
      }|j                  ddg|       j                         }t         j                  j                  |t        d            }| s5|j                  ddt        j                  gddt        j                  gg      }t        j                  ||      }	t        j                  ||	       y )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   8   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||G2.H'8,r?   zdropna, idx, outputs)r   r   r   )r	   r   r   )r
   r   r   )r   r   r   c                    g dg dg dg dg}t        j                  |g d      }|j                  d|       j                         }t        j                  |t        j                  |d	d
            }t        j                  ||       y )N)r   r   r   r   )Nr   r   r   )r   r	   r   r   )r   r   r   r   )r   r   r   r   r   r   r   objectdtypenamer&   )r)   r*   r+   r,   Indexr3   r4   )r    idxr6   r8   r9   r:   r<   s          r=   *test_groupby_dropna_normal_index_dataframerJ   d   sr    $ 		G 
g';	<BjjVj,002G||G288Cxc+RSH'8,r?   zdropna, idx, expectedr   r      r&   )rK   rK   rK   c                     t        j                  g d|      }|j                  d|       j                         }t	        j
                  ||       y )N)r      rK   rK   r&   r   )r%   r    )r)   Seriesr+   r,   r3   assert_series_equal)r    rI   r<   serresults        r=    test_groupby_dropna_series_levelrR      s?     ))L
,C[[q[0446F68,r?   zdropna, expected     @j@     u@	Max Speedr'   rG   )rS   rT         4@c                     t        j                  g dg dd      }|j                  dddt        j                  g|       j                         }t        j                  ||       y )N)g     `x@rT   g      >@rW   )FalconrY   ParrotrZ   rU   rV   r   r   r   )r)   rN   r+   r1   r2   meanr3   rO   )r    r<   rP   rQ   s       r=   test_groupby_dropna_series_byr\      sU     ))"6C [[#sC0[@EEGF68,r?   r    )FTc                     t        j                  g dg dd      }|j                  d|       }|j                  j                  | k(  sJ y )Nr   r   r   Nr   rM   rK   Nr   r   r   r   )r)   r*   r+   _grouperr    )r    r9   gbs      r=   test_grouper_dropna_propagationrc      sA     
O/B	CB	C	'B;;'''r?   r'      abcd)r   rM   )Rr   numcolr"   c                 <   dddd| rt         j                  ndgi}t        j                  g dg dd|      }|j	                  d| 	      }|j                  t              }t        j                  ||      }t        j                  ||       |dg   j                  t              }t        j                  ||      }t        j                  ||       |d   j                  t              }t        j                  |d   |d
      }t        j                  ||       y )Nr   rM   r   r^   r_   r`   r&   r   r   rV   )r1   r2   r)   r*   r+   	transformlenr3   r4   rN   rO   )r    r'   expected_datar9   rb   rQ   r<   s          r=   +test_groupby_dataframe_slice_then_transformrm      s     1afBFF!<=M	O/B%	PB	C	'B\\#F||M7H&(+Y  %F||M7H&(+Ws#Fyys+5sCH68,r?   )r   r   r
   )r   r   r   c                    g dg dg dg dg}t        j                  |g d      }ddd	d
}|j                  ddg|       j                  |      }t         j                  j                  |t        d            }| s$|j                  ddt        j                  gd      }t        j                  ||      }t        j                  ||       y )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_aggrs      s    , 	$"	G 
g'@	ABU3Hjj#sFj377AG		"	"6d	"	<B ]]Cbff-S]9||G2.H'8,r?   zdatetime1, datetime2z
2020-01-01z
2020-02-01z-2 daysz-1 dayszdropna, valuesr   )r   rK      c           	      H   t        j                  g d||||||gd      }| r||g}n||t        j                  g}|j	                  d|       j                  ddi      }t        j                  d|it        j                  |d            }	t        j                  ||	       y )	N)r   rM   rK   rd      rt   )valuesdtrx   r   rw   r,   rG   r&   )	r)   r*   r1   r2   r+   rq   rH   r3   r4   )
r    rw   	datetime1	datetime2unique_nulls_fixtureunique_nulls_fixture2r9   indexesr:   r<   s
             r=   &test_groupby_dropna_datetime_like_datar      s     
($%
	

B i(i0jjfj-118U2CDG||Xv.bhhwT6RSH'8,r?   z#dropna, data, selected_data, levels)
   r         )groupsrw   rw   )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                    t        j                  |      }|j                  d|       }d}t        j                  t
        |      5  |j                  d       }d d d        t        t        |d   |d               }t         j                  j                  |dd g      }	| s|r|	j                  |d      }	t        j                  ||		      }
t        j                  |
       y # 1 sw Y   xY w)
Nr   r   z7DataFrameGroupBy.apply operated on the grouping columnsmatchc                 T    t        j                  dt        t        |             i      S )Nrw   )r)   r*   rangerk   )grps    r=   <lambda>z@test_groupby_apply_with_dropna_for_multi_index.<locals>.<lambda>I  s    bllHeCHo3N&O r?   rw   r"   r$   r&   )r)   r*   r+   r3   assert_produces_warningDeprecationWarningapplytuplezipr-   r.   r0   r4   )r    dataselected_datalevelsr9   rb   msgrQ   	mi_tuplesr;   r<   s              r=   .test_groupby_apply_with_dropna_for_multi_indexr     s    L 
d	B	HV	,B
CC		#	#$6c	B QOPQ c$x.-*ABCI		"	"9Xt4D	"	EB f]]6]2||M4H&(+Q Qs   C$$C-input_indexkeysseriesc                 \   t        j                  dt        j                  gddgddgd      }|j	                  |      }|r|d   }n| ddgk(  r|dgk(  r|dg   }| |j	                  |       }|j                  |d	      }|r|d   }|j                         }t        j                  ||       y )
Nr   rM   rK   r   r   r   r   r   r   Fr   )	r)   r*   r1   r2   	set_indexr+   r,   r3   assert_equal)r   r   r   objr<   rb   rQ   s          r=   )test_groupby_dropna_with_multiindex_inputr   V  s    
 ,,RVVQQ	
C }}T"HC=	c
	"tu}SE?mmK(	T%	(BWVVXFOOFH%r?   c            	         dt         j                  ddt         j                  gg dd} t        j                  |       }|j	                  dd      }|j
                  }t         j                  }dt        j                  dd	g|
      dt        j                  dg|
      t         j                  t        j                  ddg|
      i}t        |j                         |j                               D ]  \  }}t        j                  ||        t        j                  t        |j                               d	         sJ t        |j                               dd	 ddgk(  sJ y )Ng1g2)r   r   rM   rK   rd   )groupr   r   Fr   r   rM   rF   rK   r   rd   )r1   r2   r)   r*   r+   indicesintparrayr   rw   r3   assert_numpy_array_equalisnanr/   r   )r   r9   r:   rQ   rF   r<   result_valuesexpected_valuess           r=   test_groupby_nan_includedr   t  s   BFFD$7oND	d	Bjjj/G__FGGEbhh1vU+bhhs%(
!Qu-H
 +.fmmox?P*Q D&
##M?CD88D'*+++q#d|333r?   c                      t        j                  t        j                  ddggg d      } | j	                  ddg      } | j                  ddgd      j                         }| }t        j                  ||       y )	Nr   r   r   r   r   r   Fr   )	r)   r*   r1   r2   r   r+   firstr3   r4   )r9   rQ   r<   s      r=   &test_groupby_drop_nan_with_multi_indexr     se    	1~&	@B	sCj	!BZZc
5Z1779FH&(+r?   sequence_indexQ   rF   UInt8Int8UInt16Int16UInt32Int32UInt64Int64Float32Float64categorystringstring[pyarrow]zpyarrow is not installed)reason)marksdatetime64[ns]	period[d]zSparse[float]test_seriesc           	         dj                  t        d      D cg c]  }dddd| d|z  z  dz      c}      }|dv rddt        j                  d	}n-|d
v rddt        j                  d	}nddt        j
                  d	}t        j                  t        j                  |D cg c]  }||   	 c}|      g dd      }|j                  ddd|d      }	|r|	d   }	|	j                         }
i }t        |      D ]  \  }}|j                  |d      |z   ||<    |dk(  rAt        j                  |D cg c]  }||   	 c}|d   j                  j                  d      }nt        |t               rO|j#                  d      r>t        j$                  t        j&                  |D cg c]  }||   	 c}|      d      }n)t        j$                  |D cg c]  }||   	 c}|d      }t        j                  |j)                         |dd       }|s|j+                         }|s:|j-                         }|(|j#                  d      r|d   j/                  |      |d<   t1        j2                  |
|       y c c}w c c}w c c}w c c}w c c}w )N rd   xyz)r   r   rM   rK   )r   r   )r   r   r   )r   r   z
2016-01-01z
2017-01-01r   rM   r   )r   r   rM   rK   )keyr   r   F)r    sortas_indexobservedr   r   r   ry   SparserE   )r'   rG   rF   )joinr   r)   NAr1   r2   r*   rN   r+   r,   	enumerategetCategoricalIndexcat
categories
isinstancestr
startswithrH   r   rw   to_framereset_indexastyper3   r   )r   rF   r   r   ksequenceuniqueslabelr9   rb   rQ   summedrI   r   r'   r<   s                   r=   test_no_sort_keep_nar     sY   F wwINqRASSS	!.QT":Q">	?RH
 --#BEE2	1	1$<beeD/	99(CgenC5Q	

B 
E%ehQV	WBWVVXF F) 3
U

5!,s2u3
##!'(AWQZ(uIMM$$

 
E3	E$4$4X$>HH&9gen9Ge
 f=U'%.=UQVWyyCtLH$$&'')!1!1(!;&uo44U;HUOOOFH%_ 	S D  ) : >s   I3!I81I="JJc                    t        j                  dddgi      }t        j                  ||g|      }|r|d   n|}|j                  |d|       }|j	                         }	t        j
                  t        |j                        g      }
t        j                  ddgi|
      }|rt        j                  |	|d          y t        j                  |	|       y )	Nr   r   rM   r   F)r    r   rK   r&   )r)   r*   rN   r+   r,   rH   r   rF   r3   rO   r4   )r   rF   r7   rA   r   r9   r   r   rb   rQ   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
vx}5
fh/r?   
index_kind)r   singlemultic                    t        j                  t         j                  j                  d      j	                  g dd      d       }t        j                  t        j                  |g d      t        d      d      }|j                         }t        j                  |g d	      j                  d
      |d<   |dk(  rdg}ne|dk(  r&dg}|j                  d      }|j                  d      }n:ddg}|d   |d<   |j                  ddg      }|d   |d<   |j                  ddg      }t        | |      }	t        | |      }
| dk(  r1|dk(  r,|	d   j                  |      f}	|
d   j                  |      f}
|j                  |d|||      }|s8| dv r4t        j                   t"        d      5   t%        ||       |	  d d d        y |j                  |||d      } t%        ||       |
 j'                         }|d   j(                  j+                  d
g      |d<   |dk(  r"|d   j(                  j+                  d
g      |d<   |r+|dk(  r|j                  ddg      }nE|j                  d      }n3|dk7  r.| dk7  r)|j                  d      }|dk(  r|j                  d      }| dv r|dk7  r|d   j,                  j/                         }|dk(  rA|D cg c]  }|d
k(  rt         j0                  n| }}t        j                  |g d      |d<   n9|D cg c])  }|dk(  r t         j0                  t         j0                  fn|+ }}||d<   | dk(  r*|j3                  ddi      }|r|d   j3                  d       }|s
|dk(  s| dk(  rd }nt4        }d}t7        j8                  ||      5   t%        ||       |	 }d d d        t7        j:                  |       y # 1 sw Y   y xY wc c}w c c}w # 1 sw Y   6xY w)NrM   r   rM   N   sizer   rM   rK   r   r   r   r   )r   rM   rK   rd   rd   r   r   r   x2corrwithr   r   Fr    r   r   r   )idxminidxmaxz(empty group due to unobserved categoriesr   T)r   r   r   r   r   )r   r   r   )rd   rd   z*A grouping .* was excluded from the result)r1   appendrandomdefault_rngchoicer)   r*   Categoricalr   copyfillnar   r   dropr+   pytestraises
ValueErrorgetattrr   r   remove_categoriesrw   tolistr2   renameFutureWarningr3   r   r   )reduction_funcr   r   r   r   rw   r9   	df_filledr   argsargs_filled	gb_keepna	gb_filledr<   r   warnr   rQ   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	">26D).)DK#
g(=QT*,"1~**4*8:

UXD8  I *>>]]H
 	6 /GI~.5	6 	!!$t!TI1wy.1;?KKMHSM%%77<HSMW!$++==qcB ))3+6H))#.H	w	>V#;===- }}T}2H--*2G#%%,,.!7=>!QbffA->F>NN6iHHSMFLM!v+rvvrvv&1<MFM"HSM??Av;?7'..t4H:(Nf,D
6C		#	#D	4 ;3N3T:; OOFH%[	6 	* ? N; ;s$   -OO.O##O(O(O1c                 ,   |dk(  r2d}| j                  t        j                  j                  |d             t	        j
                  t        j                  j                  d      j                  g dd      d       }t        j                  t        j                  |g d	
      t        d      d      }t        ||      }||d   j                            d   }	|dk(  rt        t        t!        |	                  }
n|dk(  rs|r4|r|d   j#                  d      dz
  }nF|d   j#                  d      dz
  }n-|j$                  d |	j&                  d    d   j#                         }t!        |	      |gz  }
n t)        |	|      | }
t        j                  d|
i      }|j+                  dd|||      }|j+                  dd||      }d}|dk(  r4t-        j.                  t0        |      5   t)        |d      | }d d d        n t)        ||      | } t)        ||      | }t3        ||d   j                            j&                  j5                         |j6                  j9                               D ]5  \  }}|j:                  dk(  r||j$                  |<   %||j$                  |df<   7 |dk(  r0||d   j=                         |j?                        z  xx   dz  cc<   |dvr|jA                  d      }t-        jB                  |       y # 1 sw Y   xY w)Nr   zBGH#49651 fillna may incorrectly reorders results when dropna=FalseF)r   strictrM   r   r   r   r   r   r   r   r   r   cumcountngroupr   r   r   r   T)r    r   r   zLThe default fill_method='ffill' in DataFrameGroupBy.pct_change is deprecated
pct_changer   )rankdiffr  shiftint64)"applymarkerr   markxfailr1   r   r   r   r   r)   r*   r   r   r   isnullr/   rk   nuniqueilocr'   r  r+   r3   r   r  r   r  rw   ravelndimnotnullger   r   )requesttransformation_funcr   r   r   r   rw   r9   r	  null_group_valuesnull_group_datana_groupnull_group_resultr  	gb_dropnarQ   r<   r  values                      r=   test_categorical_transformersr*  M  s    h&RFKK--S-GHYYryy,,Q/66|"6MtTF	nnV	:rK
B ##6;D 2c7>>+,S1j(uS):%;<=		(c7??%?81< c7??%?81<ww;!2!8!8!;<SAIIKH/0H:=I'"35HI4Pc?%;<

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

3thT
JI
XCl*''SA 	=5WY5t<F	= 	= 9$78$?6wy"56=H
2c7>>""))+->-E-E-K-K-M +e ==A"'HMM$%*HMM$'"+ h&C"X[[%::;q@;"II??7+OOFH%%	= 	=s   )L		Lmethodheadtailc                 L   t         j                  j                  d      j                  g dd      }t	        j
                  t	        j                  |g d      t        t        |            d      }|j                  dd|||	      } t        ||              }| d
k(  r|d d d   }|dk(  |dk(  j                         dk  z  |dk(  |dk(  j                         dk  z  z  |d k(  |d k(  j                         dk  z  z  }| d
k(  r|d d d   }||   }	t        j                  ||	       y )NrM   r   r   r   r   r   r   Fr   r-  r   rv   )r1   r   r   r   r)   r*   r   r   rk   r+   r  cumsumr3   r4   )
r+  r   r   r   rw   r9   rb   rQ   maskr<   s
             r=   test_categorical_head_tailr2    s-    YY""1%,,\2>F	nnV	:s6{AST
B 
Cth	WB WR "F" A+6Q;..0A5	6aKVq[002a78	: dN$668A=>	@ 	 DbDz$xH&(+r?   c                     t         j                  j                  d      j                  g dd      } t	        j
                  t	        j                  | g d      t        t        |             d      }|j                  ddd	      }|j                  d
       }|j                         }t        j                  ||       y )NrM   r   r   r   r   r   r   Fr    r   c                 "    | j                         S Nr,   r   s    r=   r   z&test_categorical_agg.<locals>.<lambda>  s    aeeg r?   )r1   r   r   r   r)   r*   r   r   rk   r+   rq   r,   r3   r4   rw   r9   rb   rQ   r<   s        r=   test_categorical_aggr:    s    YY""1%,,\2>F	nnV	:s6{AST
B 
C	6BVV%&FvvxH&(+r?   c                     t         j                  j                  d      j                  g dd      } t	        j
                  t	        j                  | g d      t        t        |             d      }|j                  ddd	      }|j                  d
       }|j                  d      }t        j                  ||       y )NrM   r   r   r   r   r   r   Fr4  c                 "    | j                         S r6  r7  r8  s    r=   r   z,test_categorical_transform.<locals>.<lambda>  s    AEEG r?   r,   )r1   r   r   r   r)   r*   r   r   rk   r+   rj   r3   r4   r9  s        r=   test_categorical_transformr=    s    YY""1%,,\2>F	nnV	:s6{AST
B 
C	6B\\+,F||E"H&(+r?   )2numpyr1   r   pandas.compat.pyarrowr   pandas.core.dtypes.missingr   pandasr)   pandas._testing_testingr3   pandas.tests.groupbyr   r  parametrizer2   r>   rB   rJ   rN   rR   r\   rc   
RangeIndexr/   r-   from_productrm   rs   arm_slow	Timestamp	TimedeltaPeriodr   paramr   r   r   r   r   skipifr   rD   r   r  r*  r2  r:  r=   r?   r=   <module>rO     sp     6 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#BIIiS"&&'9:	

-
- 	yryy%SzLMBII*3RVV2D;W	
	-	- =1( 2( 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$, )5;7++$$$-G % 	
 	/8 u65& 79 8<5&p u664.10 2 70" 'CDP& EP&f9&x FF#34, 5,2	,	,r?   