
    dX                        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                            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ej                            d,d-          d.             Zej                            d/ ej        d d0           ed1          ej                            d2d3gd4d5g6          g          d7             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 d8g d9dfg          d:             Zej        j        ej                            d; 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dAd!gfdg dBfg          dC                                     Z"ej                            dD ej#        dddd ej        gg dEdFdGg dHidd ej        gdIJ           ej#        dddd ej        gg dEdFdGg dKiddLJ           ej#        dg dMg dEdFdGg dHiddNJ           ej#        dg dMg dEdFdGg dHiddOJ          g          dP             Z$ej                            dQddgdd gg          ej                            dRdgdd gg          ej                            dSddg          dT                                     Z%dU Z&dV Z'ej                            dW e(dX                    ej                            dYddZd[d\d]d^d_d`dadbdadcddde ej#        dfej        )                    edgh          i          djdkdlg          ej                            dmddg          dn                                     Z*ej                            dmddg          ej                            dYe+dg          do                         Z,ej                            dpg dq          dr             Z-ds Z.ej                            dtdudvg          dw             Z/dx Z0dy Z1dS )z    N)pa_version_under7p0)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	            d/var/www/html/t/fyr/venv311/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   8   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	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   objectdtypenamer&   )r)   r*   r+   r,   Indexr3   r4   )r    idxr6   r8   r9   r:   r<   s          r=   *test_groupby_dropna_normal_index_dataframerJ   d   s    $ 		G 
g';';';	<	<	<BjjVj,,0022G|G28Cxc+R+R+RSSSH'8,,,,,r?   zdropna, idx, expectedr   r      r&   )rK   rK   rK   c                     t          j        g d|          }|                    d|                                           }t	          j        ||           d S )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      sV     )LLL
,
,
,C[[q[004466F68,,,,,r?   zdropna, expected     @j@     u@	Max Speedr'   rG   )rS   rT         4@c                     t          j        g dg dd          }|                    dddt          j        g|                                           }t          j        ||           d S )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\      sv     )"""666  C [[#sC0[@@EEGGF68,,,,,r?   r    )FTc                     t          j        g dg dd          }|                    d|           }|j        j        | k    sJ d S )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      sT     
OOO///BB	C	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|          }|                    d| 	          }|                    t                    }t          j        ||          }t          j        ||           |dg                             t                    }t          j        ||          }t          j        ||           |d                             t                    }t          j	        |d         |d
          }t          j
        ||           d S )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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          }t          t          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   minr   r   r   r   r!   r"   r   r   r$   r&   )r)   r*   r,   maxr+   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'@'@'@	A	A	ABs//H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   rK      c           	      T   t          j        g d||||||gd          }| r||g}n||t          j        g}|                    d|                               dt          i          }t          j        d|it          j        |d                    }	t          j	        ||	           d S )N)r   rM   rK   rd      rt   )valuesdtrx   r   rw   rG   r&   )
r)   r*   r1   r2   r+   rq   r,   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  1i(i0jjfj--118S/BBG|Xv.bhwT6R6R6RSS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        |          }|                    d|           }|                    d           }t	          t          |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 )Nrw   )r)   r*   rangerk   )grps    r=   <lambda>z@test_groupby_apply_with_dropna_for_multi_index.<locals>.<lambda>G  s!    ",%C///J"K"K r?   rw   r"   r$   r&   )r)   r*   r+   applytuplezipr-   r.   r0   r3   r4   )
r    dataselected_datalevelsr9   rb   rQ   	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BBCCI		"	"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   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   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 ]\  }}t          j        ||           t          j        t          |                                          d	                   sJ t          |                                          dd	         ddgk    sJ d S )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   r  sL   BFD$7oooNND	d		Bjjj//G_FGEbh1vU+++bhs%(((
!Qu---H
 +.fmmoox?P?P*Q*Q 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   rQ   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_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                      fdt          d          D                       }|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        fd|D             |          g 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<   t1          j        ||           d S )N c                 :    g | ]}d dddd|z  z  dz           S )xyz)r   r   rM   rK    ).0kr   s     r=   
<listcomp>z(test_no_sort_keep_na.<locals>.<listcomp>  s6    RRRASSS	!	!.QT":Q">	?RRRr?   rd   )r   r   r   r   )r   r   r   )r   r   z
2016-01-01z
2017-01-01r   rM   c                      g | ]
}|         S r   r   r   labeluniquess     r=   r   z(test_no_sort_keep_na.<locals>.<listcomp>  s    CCCgenCCCr?   r   )r   r   rM   rK   )keyr   r   F)r    sortas_indexr   r   r   c                      g | ]
}|         S r   r   )r   r   r   s     r=   r   z(test_no_sort_keep_na.<locals>.<listcomp>  s    (((AWQZ(((r?   ry   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?   rE   )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   sequencer9   rb   rQ   summedrI   r   r'   r<   r   s   `            @r=   test_no_sort_keep_nar     s   F wwRRRRqRRR H
 ---#BE22	1	1	1$<beDD//	9CCCC(CCC5QQQ	
 	

 
B 
E%eh	G	GB 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   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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                 N   |dv rB|s@|dk    r:d}| j                             t          j                            |                     t          j        t
          j                            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          } t'          ||          |                                 }|d                             dd           |d<   |dk    r|d                             dd           |d<   |r4|dk    r|                    ddg          }nT|                    d          }n>|dk    r8|dk    r2|                    d          }|dk    r|                    d          }|dv rI|dk    rC|d         j                                        }|dk    rd |D             }nd |D             }||d<   |dk    r5|                    ddi          }|r|d                             d           }|                    |
d|||          } t'          ||          | }t3          j        ||           d S )N)idxminidxmaxr   z@GH#10694 - idxmin/max broken for categorical with observed=Falser   r   rM   N   sizer   rM   rK   r   r   r   r   )r   rM   rK   rd   rd   r   r   r   x2corrwithr   r   T)observedr   r   r   )r   r   r   c                 6    g | ]}|d k    rt           j        n|S )rd   r1   r2   r   r   s     r=   r   z-test_categorical_reducers.<locals>.<listcomp>5  s&    >>>!QbffA>>>r?   c                 N    g | ]"}|d k    rt           j        t           j        fn|#S ))rd   rd   r   r   s     r=   r   z-test_categorical_reducers.<locals>.<listcomp>7  s.    MMM!v++rvrv&&1MMMr?   Fr    r   r   r   )node
add_markerpytestmarkxfailr1   appendrandomchoicer)   r*   Categoricalr   copyfillnar   r   dropr+   getattrr   replacerw   tolistrenamer3   r   )requestreduction_funcr   r   r   r   msgrw   r9   	df_filledr   argsargs_filled	gb_filledr<   	gb_keepnarQ   s                    r=   test_categorical_reducersr    s    	... 	/'!!P 1 1 1 = =>>> Yry''2'>>EEF	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:!!$t!TTI1wy.11;?KKMMHSM))!T22HSMW!$//488 
7  ))3+66HH))#..HH  ^v%=%=}}S}11HW$$#===66---*2G2G#%,,..!!>>v>>>FFMMfMMMF??Av;?77 	5'..t44H

UXD8   I 0WY//6F OFH%%%%%r?   c                 D   |dk    r;d}| j                             t          j                            |d                     t          j        t
          j                            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 ]'\  }}|j        dk    r||j        |<   ||j        |df<   (|dk    r>||d                                         |                    |          z  xx         dz  cc<   |dvr|                    d          }t=          j        ||           d S )Nr
  zBGH#49651 fillna may incorrectly reorders results when dropna=FalseF)r   strictr   r   r   r   r   r   r   r   r   cumcountngroupr   r   r   r   T)r    r   r   )rankdiff
pct_changeshiftint64) r   r  r  r  r  r1   r  r  r  r)   r*   r  r   r   isnullr/   rk   nuniqueilocr'   r  r+   r   r  rw   ravelndimnotnullger   r3   r   )r  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_transformersr0  H  s1    h&&R 1 1U 1 K KLLLYry''2'>>EEF	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-K-K-M-M  + +e =A"'HM$%*HM$'""h&&C""X[[%:%::;;;q@;;;"III??7++OFH%%%%%r?   methodheadtailc                    t           j                            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 )Nr   r   r   r   r   r   Fr   r3  r   rv   rM   )r1   r  r  r)   r*   r  r   rk   r+   r  cumsumr3   r4   )
r1  r   r   r   rw   r9   rb   rQ   maskr<   s
             r=   test_categorical_head_tailr8  }  s_    YlllB//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                            g dd          } t          j        t          j        | g d          t          t          |                     d          }|                    dd          }|	                    d	           }|
                                }t          j        ||           d S )
Nr   r   r   r   r   r   Fr   c                 *    |                                  S Nr,   r   s    r=   r   z&test_categorical_agg.<locals>.<lambda>  s    aeegg r?   )r1   r  r  r)   r*   r  r   rk   r+   rq   r,   r3   r4   rw   r9   rb   rQ   r<   s        r=   test_categorical_aggr?    s    YlllB//F	nV			:::s6{{ASASTT
 
B 
C	&	&BVV%%&&FvvxxH&(+++++r?   c                     t           j                            g dd          } t          j        t          j        | g d          t          t          |                     d          }|                    dd          }|	                    d	           }|	                    d
          }t          j        ||           d S )Nr   r   r   r   r   r   Fr   c                 *    |                                  S r;  r<  r=  s    r=   r   z,test_categorical_transform.<locals>.<lambda>  s    AEEGG r?   r,   )r1   r  r  r)   r*   r  r   rk   r+   rj   r3   r4   r>  s        r=   test_categorical_transformrB    s    YlllB//F	nV			:::s6{{ASASTT
 
B 
C	&	&B\\++,,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  r0  r8  r?  rB  r   r?   r=   <module>rS     s	        5 5 5 5 5 5 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	
	 	- -	 	- =11' ' 21' 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$, , , )55;;77+$$#,F %  	
 	
 	
 	/ 8 u665& 5& 769  87<5&p u6664.110 0 21 760" 'C'C'CDDM& M& EDM&`2& 2& 2&j FF#344, , 54,2	, 	, 	,	, 	, 	, 	, 	,r?   