
    PiX                        d dl Zd dlZd dlmZ d dlmc mZ d dl	m
Z
 d dlZd dlmZ d dlmZ e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                            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                            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                            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                            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d, Zej                            d- ej        d d.           ed/          ej                            d0d1gd2d3g4          g          d5             Z e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 d6g d7dfg          d8             Z!ej        j"        ej                            d9 ej#        d:           ej#        d;          f ej$        d<           ej$        d=          f ej%        d:           ej%        d;          fg          ej                            d>dd?d!gfdg d@fg          dA                                     Z&ej                            dB ej'        dddd ej        gg dCdDdEg dFidd ej        gdGH           ej'        dddd ej        gg dCdDdEg dIiddJH           ej'        dg dKg dCdDdEg dFiddLH           ej'        dg dKg dCdDdEg dFiddMH          g          dN             Z(ej                            dOddgdd gg          ej                            dPdgdd gg          ej                            dQddg          dR                                     Z)dS Z*dT Z+ej                            dUg dV          ej                            dWddXdYdZd[d\d]d^d_d`dadbdc ej'        dd ej,        de          f          dgdhdig          ej                            djddg          dk                                     Z-ej                            djddg          ej                            dWe.dg          dl                         Z/ej                            dmg dn          do             Z0dp Z1ej                            dqdrdsg          dt             Z2du Z3dv Z4dS )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                    g dd|dddgg dg dg}t          j        |g d	          }|                    d
dg|                                           }t           j                            |t          d                    }| s$|                    ddt          j	        gd          }t          j        ||          }t          j        ||           d S )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	            |/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/groupby/test_groupby_dropna.py:test_groupby_dropna_multi_index_dataframe_nan_in_one_groupr>      s    0 		mT5"-"""	G 
g'@'@'@	A	A	ABjj#sFj337799G		"	"6d	"	<	<B  :]]Cbf-S]9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
          }|                    ddg|                                           }t           j                            |t          d                    }| s1|                    ddt          j	        gddt          j	        gg          }t          j        ||          }	t          j        ||	           d S )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'@'@'@	A	A	ABjj#sFj337799G		"	"6d	"	<	<B  E]]S#rv.c260BCD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          }|                    d|                                           }t          j        |t          j        |d	          
          }t          j        ||           d S )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   s    $ 		G 
g';';';	<	<	<BjjVj,,0022G|G28Cc+B+B+BCCCH'8,,,,,r?   zdropna, idx, expectedr   r      r&   )rI   rI   rI   c                     t          j        g d|          }|                    d|                                           }t	          j        ||           d S )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      sV     )LLL
,
,
,C[[q[004466F68,,,,,r?   zdropna, expected     @j@     u@	Max Speedr'   rE   )rQ   rR         4@c                     t          j        g dg dd          }|                    dddt          j        g|                                           }t          j        ||           d S )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      sv     )"""666  C [[#sC0[@@EEGGF68,,,,,r?   c                     t          j        g dg dd          }|                    d|           }|j        j        | k    sJ d S )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      sR    	OOO///BB	C	CB	C	'	'B;''''''r?   r'      abcd)r   rK   )Rr   numcolr"   c                 `   dddd| rt           j        ndgi}t          j        g dg dd|          }|                    d| 	          }|                    t                    }t          j        ||          }t          j        ||           |dg                             t                    }t          j        ||          }t          j        ||           |d                             t                    }t          j	        |d         |d
          }t          j
        ||           d S )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f$;BFF!<=M	OOO///BB%	P	P	PB	C	'	'B\\#F|M777H&(+++Y  %%F|M777H&(+++Ws##Fys+5sCC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
}|                    ddg|                               |          }t           j                            |t          d                    }| s$|                    ddt          j	        gd          }t          j        ||          }t          j        ||           d S )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'@'@'@	A	A	ABU33Hjj#sFj3377AAG		"	"6d	"	<	<B  :]]Cbf-S]99|G2...H'8,,,,,r?   zdatetime1, datetime2z
2020-01-01z
2020-02-01z-2 daysz-1 dayszdropna, valuesr   )r   rI      c           	      J   t          j        g d||||||gd          }| r||g}n||t          j        g}|                    d|                               ddi          }t          j        d|it          j        |d                    }	t          j        ||	           d S )	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  1i(i0jjfj--118U2CDDG|Xv.bhwT6R6R6RSSSH'8,,,,,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                    t          j        |          }|                    d|           }|                    d           }t	          t          |d         |d         d                    }t           j                            |dd g          }| s|r|                    |d          }t          j        ||	          }	t          j
        ||	           d S )
Nr   r   c                 b    t          j        dt          t          |                     i          S )Nru   )r)   r*   rangeri   )grps    r=   <lambda>z@test_groupby_apply_with_dropna_for_multi_index.<locals>.<lambda>G  s!    ",%C///J"K"K r?   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KLLFc$x.-*A%PPPQQI		"	"9Xt4D	"	E	EB  3f 3]]6]22|M444H&(+++++r?   input_indexkeysseriesc                    t          j        dt          j        gddgddgd          }|                    |          }|r	|d         }n| ddgk    r|dgk    r	|dg         }| |                    |           }|                    |d	          }|r|d         }|                                }t          j        ||           d S )
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    
 ,RVQQ	
 	
 C }}T""H #C=	c
	"	"tu}}SE?mmK((	T%	(	(B WVVXXFOFH%%%%%r?   c            	         dt           j        ddt           j        gg dd} t          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          |	                                |	                                d          D ]\  }}t          j        ||           t          j        t          |                                          d	                   sJ t          |                                          dd	         ddgk    sJ d S )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  sZ   BFD$7oooNND	d		Bjjj//G_FGEbh1vU+++bhs%(((
!Qu---H
 +.**4+ + + D D& 	#M?CCCC8D''*+++++qs#d|333333r?   c                     t          j        t          j        ddggg d          } |                     ddg          } |                     ddgd                                          }| }t          j        ||           d S )	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     s}    	1~&	@	@	@B	sCj	!	!BZZc
5Z11779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                    |dv rddt           j        dnM|dv rddt           j        dn8|&|                    d          rd	d
t           j        dnd	d
t          j        dt          j        t          j        fd| D             |          g dd          }|                    ddd|d          }|r|d         }|                                }i }t          |           D ]!\  }}	|
                    |	d          |z   ||	<   "|dk    r4t          j        fd|D             |d         j        j        d          }
nt          |t                    rL|                    d          r7t          j        t          j        fd|D             |          d          }
n#t          j        fd|D             |d          }
t          j        |                                |
dd           }|s|                                }|sI|                                }|3|                    d          r|d                             |          |d<   t-          j        ||           d S )N)r   r   xy)r   r   z)r   r   z
2016-01-01z
2017-01-01)IUFr   rK   c                      g | ]
}|         S  r   .0labeluniquess     r=   
<listcomp>z(test_no_sort_keep_na.<locals>.<listcomp>  s    CCCgenCCCr?   r   )r   r   rK   rI   )keyr   r   F)r    sortas_indexobservedr   r   r   c                      g | ]
}|         S r   r   )r   r   r   s     r=   r   z(test_no_sort_keep_na.<locals>.<listcomp>  s    (((AWQZ(((r?   rD   Sparsec                      g | ]
}|         S r   r   r   s     r=   r   z(test_no_sort_keep_na.<locals>.<listcomp>  s    999gen999r?   c                      g | ]
}|         S r   r   r   s     r=   r   z(test_no_sort_keep_na.<locals>.<listcomp>  s    ===U'%.===r?   )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   r9   r`   rO   summedrG   r   r'   r<   r   s               @r=   test_no_sort_keep_nar     s   P ---#BE22	1	1	1$<beDD		u//@@	..//	9CCCC(CCC5QQQ	
 	

 
B 
E%ehQV	W	WB WVVXXF F)) 3 3
U

5!,,s2u
#(((((((uIM$
 
 

 
E3		 XE$4$4X$>$> XH9999&999GGGe
 
 
 ====f===UQVWWWyCtLLLH '$$&& <''))!1!1(!;!;&uo44U;;HUOOFH%%%%%r?   c                    t          j        dddgi          }t          j        ||g|          }|r|d         n|}|                    |d|           }|                                }	t          j        t          |j                  g          }
t          j        ddgi|
          }|rt          j	        |	|d                    d S t          j
        |	|           d S )	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Y~6eDDDF 
("S''bC	VE	5	5BVVXXFH(66788E|S1#Je444H 0
vx}55555
fh/////r?   
index_kind)r   singlemultic                 X   t          j        t           j                            d                              g dd          d           }t          j        t          j        |g d          t          d          d          }|	                                }t          j        |g d	          
                    d
          |d<   |dk    rdg}n||dk    r.dg}|                    d          }|                    d          }nHddg}|d         |d<   |                    ddg          }|d         |d<   |                    ddg          }t          | |          }	t          | |          }
| dk    r@|dk    r:|	d                             |          f}	|
d                             |          f}
|                    |d|||          }|sL| dv rHt          j        t"          d          5   t%          ||           |	  d d d            n# 1 swxY w Y   d S |                    |||d          }| dk    r
t&          }d}nd }d}t)          j        ||          5   t%          ||           |
                                 }d d d            n# 1 swxY w Y   |d         j                            d
g          |d<   |dk    r$|d         j                            d
g          |d<   |r3|dk    r|                    ddg          }n|                    d          }| dv rd|dk    r^|d         j                                        }|dk    r(d |D             }t          j        |g d          |d<   nd |D             }||d<   | d k    r5|                    dd i          }|r|d                              d           }| dk    r
t&          }d}nd }d}t)          j        ||          5   t%          ||           |	 }d d d            n# 1 swxY w Y   t)          j        ||           d S )!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   c                 6    g | ]}|d k    rt           j        n|S )rb   r1   r2   r   r   s     r=   r   z-test_categorical_reducers.<locals>.<listcomp>:  s&    >>>!QbffA>>>r?   c                 N    g | ]"}|d k    rt           j        t           j        fn|#S ))rb   rb   r  r  s     r=   r   z-test_categorical_reducers.<locals>.<listcomp>=  s.    MMM!v++rvrv&&1MMMr?   r   )r1   appendrandomdefault_rngchoicer)   r*   Categoricalr   copyfillnar   r   dropr+   pytestraises
ValueErrorgetattrr   r3   assert_produces_warningr   r   remove_categoriesru   tolistrenamer   )reduction_funcr   r   r   r   ru   r9   	df_filledr   argsargs_filled	gb_keepna	gb_filledwarnmsgr<   rO   s                    r=   test_categorical_reducersr    sb    Yry,,Q//66|||"6MMtTTF	nV			:::rKK
 
B
 		I^F|||DDDKKANNIcNWu	x		u\\#'',,		T{c74\\3+&&#C.	$''d44	">266D).)DDK##
g(=(=QT**,"1~**4*88:

UXD8   I  *>>>]H
 
 
 	6 	6 /GI~..55	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	!!$t!TTI##7		#D	4	4	4 R R579n55{COOQQR R R R R R R R R R R R R R RSM%77<<HSMW!$+==qcBB /  ))3+66HH))#..H---*2G2G#%,,..!!>>v>>>FN6iiiHHHHSMMMMfMMMF"HSM??Av;?77 	5'..t44H##7		#D	4	4	4 ; ;3N33T:; ; ; ; ; ; ; ; ; ; ; ; ; ; ; OFH%%%%%s6   -HHH&JJJ*P

PPc                    t          j        t           j                            d                              g dd          d           }t          j        t          j        |g d          t          d          d          }t          | |          }||d	         
                                         d
         }| dk    r*t          t          t          |                              }n| dk    r|rB|r |d	                             d          dz
  }	nR|d	                             d          dz
  }	n2|j        d |j        d                  d	                                         }	t          |          |	gz  }n t!          ||           | }t          j        d
|i          }
|                    d	d|||          }|                    d	d||          } t!          ||           | } t!          ||           | }t%          ||d	         
                                         j                                        |
j                                        d          D ]'\  }}|j        dk    r||j        |<   ||j        |df<   (| dk    r>||d	                                         |                    |	          z  xx         dz  cc<   | dvr|                    d          }t5          j        ||           d S )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_transformersr5  R  s
   Yry,,Q//66|||"6MMtTTF	nV			:::rKK
 
B ##6;;D 2c7>>++,S1j((uS):%;%;<<==		(	( 	L =c7??%?881< c7??%?881<w;!2!8!;;<SAIIKKH/00H:=I'"35HII4Pc?%;<<

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

3thT
JJI4WY 344d;F6wy"566=H
2c7>>"))++ &&((   + +e
 =A"'HM$%*HM$'""h&&C""X[[%:%::;;;q@;;;"III??7++OFH%%%%%r?   methodheadtailc                    t           j                            d                              g dd          }t	          j        t	          j        |g d          t          t          |                    d          }|	                    dd|||	          } t          ||                       }| d
k    r|d d d         }|dk    |dk                                    dk    z  |dk    |dk                                    dk    z  z  |d k    |d k                                    dk    z  z  }| d
k    r|d d d         }||         }	t          j        ||	           d S )NrK   r   r   r   r   r   r   Fr   r8  r   rt   )r1   r  r  r	  r)   r*   r
  r   ri   r+   r  cumsumr3   r4   )
r6  r   r   r   ru   r9   r`   rO   maskr<   s
             r=   test_categorical_head_tailr=    sm    Y""1%%,,\\\2>>F	nV			:::s6{{ASASTT
 
B 
Cth	W	WB WR  ""F" A+6Q;..00A5	6aKVq[0022a78	: dN$6688A=>	@ 	 DDbDz$xH&(+++++r?   c                     t           j                            d                              g dd          } t	          j        t	          j        | g d          t          t          |                     d          }|	                    ddd	          }|
                    d
           }|                                }t          j        ||           d S )NrK   r   r   r   r   r   r   Fr    r   c                 *    |                                  S Nr,   r   s    r=   r   z&test_categorical_agg.<locals>.<lambda>  s    aeegg r?   )r1   r  r  r	  r)   r*   r
  r   ri   r+   ro   r,   r3   r4   ru   r9   r`   rO   r<   s        r=   test_categorical_aggrE    s    Y""1%%,,\\\2>>F	nV			:::s6{{ASASTT
 
B 
C	6	6BVV%%&&FvvxxH&(+++++r?   c                     t           j                            d                              g dd          } t	          j        t	          j        | g d          t          t          |                     d          }|	                    ddd	          }|
                    d
           }|
                    d          }t          j        ||           d S )NrK   r   r   r   r   r   r   Fr?  c                 *    |                                  S rA  rB  rC  s    r=   r   z,test_categorical_transform.<locals>.<lambda>  s    AEEGG r?   r,   )r1   r  r  r	  r)   r*   r
  r   ri   r+   rh   r3   r4   rD  s        r=   test_categorical_transformrH    s    Y""1%%,,\\\2>>F	nV			:::s6{{ASASTT
 
B 
C	6	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  r5  r=  rE  rH  r   r?   r=   <module>r_     s	        ( ( ( ( ( ( ) ) ) ) ) ) ) ) ) 9 9 9 9 9 9           8 8 8 8 8 8  3Z#s$.e}D#;GG	
 3Z#rvc
3))))))&&& 	
 &- -' &-0  3Z#s$.e}D#;GG	
 3Z#rvc
RVSMB......+++ 	
 &- -' &-2 	Sz&$udm3PT+VVW#rv))))))&&& 	
 - - -  	S#rv&		1a&c
(K(K(KL#sBF#BIiiiS"&'9:::	

 
- -
 
- 	yry%SzLLLMBI***3RV2D;WWW	
	 	- -	 	-( ( ( aV
""FJ#7u~"NN - - -(  3Z#s$.e}C:FF	
 3Z#rvc
3))))))%%% 	
 &- -' &-. 	l	#	#\R\,%?%?@	i	 	 ,",y"9"9:	<	 	 )")L"9"9:  )TB7OeZZZ=P+QRR- - SR  -: )S#rv.:J:J:JKK|||$#rv%	
 	
 	
 	S#rv.:J:J:JKKyyy!$	
 	
 	
 	+++7G7G7GHH|||$$	
 	
 	
 	+++7G7G7GHH|||$#	
 	
 	
/" "F, ,G" "F,$ usCj(ABB3%#s!455D%=11& & 21 65 CB&64 4 4(, , , 	 	 	  &mbmI.F.FGGG# , u661& 1& 76-  H1&h u6664.110 0 21 760" 'C'C'CDDS& S& EDS&l0& 0& 0&f FF#344, , 54,2	, 	, 	,	, 	, 	, 	, 	,r?   