o
    iW                  *   @   s6  d dl m Z  d dlZd dlZd dlZd dlmZmZmZm	Z	 d dl
mZ dd Zejddgddggejjd	d
d dD edededededgejdddejdddejdddejdddejdddgeded  eded  eded  eded  eded  geddeddeddeddeddgg dd dejddddg dfdddg dfdddg dfdddg dfdddg dfdddg d fdddg d!fdddg d"fd#ddg d$fd#ddg d%fd#ddg d&fd#ddg d'fd(ddg d)fd(ddg d*fd(ddg d+fd(ddg d,fd-ddg d.fd-ddg d/fd-ddg d!fd-ddg d0fgd1d2 Zejddgddggejd	ej ej ejd3ejejejggejd4ddd5d6d6ejd7ejd8d8gfddd9g d:fddd;g d<fddd5d8d8ejd7ejd6d6gfddd9g d=fddd;g d>fddd5d3d3ejd?ejd@d@gfddd9g dAfddd;g dBfddd5d@d@ejd?ejd3d3gfddd9g dCfddd;g dDfd#dd5dEdEejd?ejdFdFgfd#dd9g dGfd#dd;g dHfd#dd5dFdFejd?ejdEdEgfd#dd9g dIfd#dd;g dJfd(dd5d3dEejd?ejd@dFgfd(dd9g dKfd(dd;g dLfd(dd5d@dFejd?ejd3dEgfd(dd9g dMfd(dd;g dNfd-dd5d3d3ejdEejd?d?gfd-dd9g dOfd-dd;g dPfd-dd5d?d?ejdEejd3d3gfd-dd9g dQfd-dd;g dRfgdSdT Zejddgddggejjd	dUd dVD ededejedededejejgejdddejdddejejdddejdddejdddejejgeded  eded  ejeded  eded  eded  ejejgeddeddejeddeddeddejejgg dWd dejdXg ddd5ddEdEejdFdEd@ejejgfddd5ddYdYejd3dYdZejejgfddd5dd@d@ejd3d@dEejejgfddd5ddZdZejd[dZdYejejgfddd5dd3d3ejdFd3d@ejejgfddd5dd[d[ejd3d[dZejejgfddd5dd?d?ejd3d?dEejejgfddd5dd\d\ejd[d\dYejejgfd#dd5dd?d?ejdFd?d@ejejgfd#dd5dd\d\ejd3d\dZejejgfd#dd5ddFdFejd3dFdEejejgfd#dd5dd3d3ejd[d3dYejejgfd(dd5dd3dEejdFd?d@ejejgfd(dd5dd[dYejd3d\dZejejgfd(dd5dd?d@ejd3dFdEejejgfd(dd5dd\dZejd[d3dYejejgfd-dd5dd3d3ejd?d3dEejejgfd-dd5dd]d]ejd3d]d^ejejgfd-dd5dd?d?ejd3d?dEejejgfd-dd5dd3d3ejd]d3d^ejejgfddd;dg d_fddd;dg d`fddd;dg dafddd;dg dbfddd;dg dcfddd;dg ddfddd;dg defddd;dg dffd#dd;dg dgfd#dd;dg dhfd#dd;dg difd#dd;dg djfd(dd;dg dkfd(dd;dg dlfd(dd;dg dmfd(dd;dg dnfd-dd;dg dofd-dd;dg dpfd-dd;dg dqfd-dd;dg drfdsdt Zejdudg dvfdg dwfgdxdy Zejdzg d{ejd|ddgd}d~ Zejdg dejdddgejdg dejdddgejd	g ddejdejdggdd Zejdg dejdg dejdddgejdddgejd	g ddejdejdgdejdejd7ggdd Zdd Zejdddgddgd3d3gfg dg dg dfg ddddejgdd3d3ejgfg dddejgdd3ejgfgdd Zdd Zejdddgdd Zdd Zdd Z dd Z!dd Z"dd Z#dS )    )datetimeN)	DataFrameNaTSeriesconcatc                  C   s  t dd} t dd}tjjdddd}tjjdddd}ttjd| |||d}|dd	gj	
 }d
d |dd	gD }t|dd}||j}t || |dd	gj	j
dd}dd |dd	gD }t|dd}||j}t || d S )N
   d      r   i  )size)valuekey1key2r   r   c                 S   s   g | ]	\}}|j  qS  r   rank.0keypiecer   r   Y/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/groupby/test_rank.py
<listcomp>    s    z#test_rank_apply.<locals>.<listcomp>axisTpctc                 S   s   g | ]\}}|j jd dqS )Tr   r   r   r   r   r   r   '   s    )tmrands_arraynprandomrandintr   randntakegroupbyr   r   r   reindexindexassert_series_equal)lev1lev2lab1lab2dfresultexpectedr   r   r   test_rank_apply   s,   
r-   grpsquxquuxvalsc                 C   s   g | ]}t jg d |dqS ))   r2      r2      dtype)r   arrayr   r6   r   r   r   r   2   s    r   )i8i4i2i1u8u4u2u1f8f4f2z
2018-01-02z
2018-01-08z
2018-01-06z
US/PacifictzDc                 C      t | d S Nr   typexr   r   r   <lambda>T       rM   )idszties_method,ascending,pct,expaverageTF)       @rQ         @rQ         @)皙?rT         ?rT   皙?)rS   rS   rU   rS   rQ   )rV   rV   皙?rV   rT   min)rU   rU   rR   rU   rS   )rW   rW   rU   rW   rV   )      @rY   rU   rY   rQ   )333333?rZ   rW   rZ   rT   max)rY   rY   rR   rY   rS   )rZ   rZ   rU   rZ   rV   )rR   rR   rU   rR   rQ   )rU   rU   rW   rU   rT   first)rU   rQ   rR   rY   rS   )rW   rT   rU   rZ   rV   )rY   rS   rU   rR   rQ   )rZ   rV   rW   rU   rT   dense)rU   rU   rY   rU   rQ   )UUUUUU?r^   rU   r^   UUUUUU?)rU   rU   r^   rU   r_   c                 C   s   t | t|}|}t|t|  }t|t jr t j||jd}t||d}|	dj
|||d}	t|t|  dgd}
t|	|
 d S )Nr5   r   valr   )method	ascendingr   ra   columnsr   repeatlenlist
isinstancendarrayr7   r6   r   r"   r   r   assert_frame_equal)r.   r1   ties_methodrc   r   expr   	orig_valsr*   r+   exp_dfr   r   r   test_rank_args/   s   Arq   rU   z#ties_method,ascending,na_option,expkeep      ?         @top)      @rw   rs   rR   rs         @rx   bottom)rs   rs   rx   rY   rx   ru   ru   )rx   rx   rs   rR   rs   rw   rw   )ru   ru   rx   rY   rx   rs   rs   rY   rS   )rY   rY   rU   rR   rU         @rz   )rU   rU   rz   rY   rz   rS   rS   )rz   rz   rU   rR   rU   rY   rY   )rS   rS   rz   rY   rz   rU   rU   rQ   rR   )rS   rS   rQ   rR   rQ         @r{   )rQ   rQ   r{   rY   r{   rR   rR   )r{   r{   rQ   rR   rQ   rS   rS   )rR   rR   r{   rY   r{   rQ   rQ   )rY   rS   rU   rR   rQ   rz   r{   )rU   rQ   rz   rY   r{   rS   rR   )rz   r{   rU   rR   rQ   rY   rS   )rS   rR   rz   rY   r{   rU   rQ   )rQ   rQ   rU   rY   rU   rS   rS   )rU   rU   rS   rQ   rS   rY   rY   )rS   rS   rU   rY   rU   rQ   rQ   )rY   rY   rS   rQ   rS   rU   rU   c           
      C   sf   t | t|}|t|  }t||d}|dj|||d}t|t|  dgd}	t||	 d S )Nr`   r   )rb   rc   	na_optionra   rd   )r   rg   rh   r   r"   r   r   rl   )
r.   r1   rm   rc   r|   rn   r   r*   r+   rp   r   r   r   test_infs_n_nans~   s   )
r}   c                 C   s0   g | ]}t jd d t jdd dt jt jg|dqS )r2   r3   r4   r5   )r   r7   nanr8   r   r   r   r      s    ")rA   rB   rC   c                 C   rG   rH   rI   rK   r   r   r   rM      rN   z'ties_method,ascending,na_option,pct,exprT   rV   rW   rZ   r^   r_   )rQ   rQ   r{   rR   rQ   rS   r{   r{   )      ?r         ?      ?r         ?r   r   )rS   rS   r{   rU   rS   rQ   r{   r{   )r   r   r         ?r   r   r   r   )rU   rU   rz   rR   rU   rS   rz   rz   )r   r         ?r   r   r   r   r   )rY   rY   rz   rU   rY   rQ   rz   rz   )      ?r   r   r   r   r   r   r   )rY   rY          @rR   rY   rS   r   r   )r   r   rU   r   r   r   rU   rU   )rR   rR   r   rU   rR   rQ   r   r   )r   r   rU   r   r   r   rU   rU   )rU   rQ   rz   rR   rY   rS   r{   r   )r   r   r   r   r   r   r   rU   )rY   rS   rz   rU   rR   rQ   r{   r   )r   r   r   r   r   r   r   rU   )rU   rU   rS   rY   rU   rQ   rS   rS   )r   r   rU   r   r   r   rU   rU   )rY   rY   rS   rU   rY   rQ   rS   rS   )r   r   rU   r   r   r   rU   rU   c                 C   s   t | t|}|}t|t|  }t|t jr t j||jd}t||d}	|		dj
||||d}
t|t|  dgd}t|
| d S )Nr5   r`   r   rb   rc   r|   r   ra   rd   rf   )r.   r1   rm   rc   r|   r   rn   r   ro   r*   r+   rp   r   r   r   test_rank_args_missing   s    r
r   zpct,exp)rY   rY   rY   rY   rY   )rZ   rZ   rZ   rZ   rZ   c                 C   sL   t g ddgd d}|dj| d}t |d dgd	}t|| d S )
N)
ar   r   r   r   br   r   r   r      r   r`   r   r   r2   ra   rd   r   r"   r   r   rl   )r   rn   r*   r+   rp   r   r   r   test_rank_resets_each_group  s   r   r6   )int64int32uint64uint32float64float32upperc                 C   s   |r| d   | dd   } | dd} tdgd dgd d}|d | |d< |d j| ks3J |d	 }tg d
dgd}|rJ|d}t|| d S )Nr   r   UiUIr      r`   ra   r   )      @r   r   r   rd   Float64)	r   replacer   astyper6   r"   r   r   rl   )r6   r   r*   r+   rp   r   r   r   test_rank_avg_even_vals  s   
r   rm   )rP   rX   r[   r\   r]   rc   r|   )rr   rv   ry   r   )barr   foor   bazr   r   r   c                 C   s   t dgd |d}|d  }|d}|j| |||d}| r4t dgd dtjdtjd	gd}	nt dgd g d
d}	|	d}
|
j| |||d}t|| d S )Nr      r`   ra   r   r   r   r2   r   )r   r   r2   r   r   )	r   isnar"   r   anyr   r~   r   rl   )rm   rc   r|   r   r1   r*   maskgbresdf2gb2altr   r   r   test_rank_object_dtype  s   
$
r   )Tbadr   r   r2   c                 C   sd   t dgd |d}d}tjt|d |dj| |||d W d    d S 1 s+w   Y  d S )Nr   r   r`   z3na_option must be one of 'keep', 'top', or 'bottom')matchr   r   )r   pytestraises
ValueErrorr"   r   )rm   rc   r|   r   r1   r*   msgr   r   r   test_rank_naoption_raises  s   
"r   c                  C   s   d} t g ddtjdgd}|| jjdd}tdtjdgd	d
}t|| || jdd}t d	dtjdgi}t	|| d S )NA)r   r   r   rU   rQ   r   BTr   r   r   name)
r   r   r~   r"   r   r   r   r   r%   rl   )columnr*   r+   r,   r   r   r   test_rank_empty_group  s   r   z"input_key,input_value,output_value)r   r   r2   r2   )r   r2   r   r2   )r   rU   r   rU   r   r   r   r2   c                 C   s>   t | |d}|djddd}t d|i}t|| d S )Nr   r   r]   Trb   r   r   r   )	input_keyinput_valueoutput_valuer*   r+   r,   r   r   r   test_rank_zero_div  s   r   c                  C   s   t g dttjjttjjttjjgttdddtgd} | d	 }t g dtj
dtj
gd}t|| d S )	Nr   i  r   )grpint_coldatetimeliker   )rU   rQ   rU   rU   )r   r   )r   r   iinfor   rX   r[   r   r   r"   r   NaNr   rl   r*   r+   r,   r   r   r   test_rank_min_int$  s   r   use_nanc                 C   s   | rt jnd}tddgddgd|gd|ggddgd}|dgd jdd	d
}| r7tddt jt jgdd}ntg ddd}t|| d S )Nrt   r   r2   groupra   rd   r]   Tr   r   r   )r^   r_   r   r   )r   r~   r   r"   r   r   r   r%   )r   
fill_valuer*   r+   r,   r   r   r   .test_rank_pct_equal_values_on_group_transition:  s"   	r   c                  C   s   t tddgddgdtddgdd	gd
ddd} | jddd}|jdd}t | d jdd| d jddgdddgd}t|| d S )Nrt   r   r   r2   )col1col2r   r4      r3   )col3col4)r   r   r   r   levelr   r   r   )r   keys)r   r   r"   r   r   rl   )r*   r   r+   r,   r   r   r   test_rank_multiindexS  s    r   c                  C   s   t g dg dg ddg dd} | jddd}|jd	d
}t| jd jd	d
| jd jd	d
gdd
}t|| |jdd
}||rHJ d S )Nr   rt   r   r   r2   r   r4   r3   rs   rw   g      @g      @r   r   r2   r   r   r   r   r$   r   r   r   r   r   r   )r   r"   r   r   locr   rl   equals)r*   r   r   r,   r   r   r   r   test_groupby_axis0_rank_axis1k  s   ,r   c                  C   sn   t g dg dg ddg dd} | jddd}|jd	d
}| dd	g tj}|d	 |d< t|| d S )Nr   r   r   r   r   r   r   r   r   r   r2   )r   r"   cummaxr   r   r   r   rl   )r*   r   cmaxr,   r   r   r   test_groupby_axis0_cummax_axis1  s   r   c                  C   s   t dddtjgddtjdddgd d	} | | jd
gjjddd}t	dddtjgtjdddgd dd}t
|| d S )NrU   rQ   rY   )r   r   20170101z
US/EasternrD   r   r   r   T)rc   r   r   )r$   r   )r   r   r~   pd	Timestampr"   r$   r   r   r   r   r%   r   r   r   r   test_non_unique_index  s   r   c                  C   s   t jdddtjddgdd} t jdddtjd	d
gdd}tg d| |d}|d}| }|td }t	
|| d S )Nr   r   cT)orderedr   r2   rt   r   r   )r   r   r   r   r   r   )r   r   r   r   )r   Categoricalr   r~   r   r"   r   r   objectr   rl   )catcat2r*   r   r   r,   r   r   r   test_rank_categorical  s   
r   )$r   numpyr   r   pandasr   r   r   r   r   pandas._testing_testingr   r-   markparametrizer   	to_periodrq   infr~   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sr   "&$#.2	"" "&"'"(*"029@GNUel{}                      &  (  .  0  6  7  8  9  >
	
 
		
