a
    é´«jD% ã                   @   sV  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	m
Z
mZmZ d dlmZ d dlmZ d dlmZ ejfdd„Zejejd ejejejejejejejejejejd ejejejd ejejd ejdœZej d	¡d
d„ ƒZdd„ Zdd„ Zdd„ Zej dddg¡dd„ ƒZej d	¡dd„ ƒZdd„ Z dd„ Z!dd„ Z"ej dd g d!¢eg d"¢d d#�fd d$gg d%¢eg d"¢d d#�e	g d&¢ƒgfd d'gg d(¢eg d"¢d d#�eg d"¢d d#�gfg¡ej d)ddg¡d*d+„ ƒƒZ#d,d-„ Z$d.d/„ Z%d0d1„ Z&ej dddg¡ej d2ddg¡ej d3ddg¡d4d5„ ƒƒƒZ'd6d7„ Z(d8d9„ Z)d:d;„ Z*d<d=„ Z+d>d?„ Z,ej d@dAgee-dBƒƒd dCgdDdEgdFœfee-dBƒƒ .dGdH„ ¡dEgd dDgdFœfee-dIƒƒd dCgdDdEgdFœfg¡dJdK„ ƒZ/dLdM„ Z0dNdO„ Z1dPdQ„ Z2ej dRdSdTdSgfdUdVdWgfdXdVdSgfdYdTdWgfg¡dZd[„ ƒZ3d\d]„ Z4d^d_„ Z5d`da„ Z6ej dddg¡dbdc„ ƒZ7ej dddg¡ddde„ ƒZ8dfdg„ Z9dhdi„ Z:djdk„ Z;ej dldee
j<eg dm¢dndo�g dp¢gd d$gdq�g d"¢drds�fdeeg dm¢dndo�g dp¢g d"¢dtœƒfg¡dudv„ ƒZ=ej dwdejej>g¡dxdy„ ƒZ?ej@dzd{„ ƒZAej d|d}d~g¡dd€„ ƒZBej d|d}d~g¡ej d2ddg¡d�d‚„ ƒƒZCej dƒde
 <e	d„gdB d…gdB  dnd†d‡�e	g dˆ¢dnd‰d‡�e	dXdYgdB ƒg¡g dŠ¢fde
jDed„d…gdd‹�eg dŒ¢dd‹�e	dXdYgƒgg d�¢dq�dEdEdBdBejejdDdDejejdCdCgfde
jDed„d…gdd‹�eg dŒ¢dd‹�e	dXdYgƒgg d�¢dq�dEdEdBdBejejdDdDejejdCdCgfg¡dŽd�„ ƒZEd�d‘„ ZFej d’g d“¢g d”¢g¡d•d–„ ƒZGd—d˜„ ZHd™dš„ ZId›dœ„ ZJd�dž„ ZKdŸd „ ZLej d2ddg¡d¡d¢„ ƒZMej d	¡d£d¤„ ƒZNej d¥ejOg dm¢fejPg dp¢fg¡d¦d§„ ƒZQd¨d©„ ZRej dªdSdUg¡d«d¬„ ƒZSd­d®„ ZTd¯d°„ ZUd±d²„ ZVd³d´„ ZWdµd¶„ ZXej dªdSdUg¡eYeZd·œd¸d¹„ƒZ[ej dªdSdUg¡eYeZd·œdºd»„ƒZ\d¼d½„ Z]ej dªdSdUg¡d¾d¿„ ƒZ^dÀdÁ„ Z_dÂdÃ„ Z`dÄdÅ„ Zaej dÆg dÇ¢¡ej dddg¡dÈdÉ„ ƒƒZbej dÆdÊdËg¡ej dddg¡dÌdÍ„ ƒƒZcej dÆg dÇ¢¡ej dÎdÏdÐg¡ej dddg¡dÑdÒ„ ƒƒƒZdej dÆg dÇ¢¡ej dÎg dÓ¢¡ej dddg¡dÔdÕ„ ƒƒƒZeej dÆg dÇ¢¡dÖd×„ ƒZfej dØd d$d d$gg¡ej dÙd d$d d$gg¡dÚdÛ„ ƒƒZgej d)ddg¡ej dÙdÜgdÜd'gg¡dÝdÞ„ ƒƒZhdS )ßé    )ÚdatetimeN)ÚCategoricalÚCategoricalIndexÚ	DataFrameÚIndexÚ
MultiIndexÚSeriesÚqcut)ÚSeriesGroupBy)Úget_groupby_method_argsc                 C   sr   dd„ }t jt||ƒ|d�}t|tƒr`i }| jD ]}| | j||| d�||< q0t||d� ¡ S | j||d� ¡ S )zpReindex to a cartesian production for the groupers,
    preserving the nature (Categorical) of each grouper
    c                 S   s4   t | ttfƒr0| j}tjt t|ƒ¡|| jd�} | S )N©Ú
categoriesÚordered)	Ú
isinstancer   r   r   Ú
from_codesÚnpÚarangeÚlenr   )Úar   © r   úd/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/groupby/test_categorical.pyÚf   s    ÿz)cartesian_product_for_groupers.<locals>.f©Únames©Ú
fill_value©Úindex)	r   Úfrom_productÚmapr   ÚdictÚcolumnsÚreindexr   Ú
sort_index)ÚresultÚargsr   r   r   r   ÚresÚcolr   r   r   Úcartesian_product_for_groupers   s    

r(   )ÚallÚanyÚcountÚcorrwithÚfirstÚidxmaxÚidxminÚlastÚmaxÚmeanZmedianÚminÚnthÚnuniqueÚprodZquantileZsemÚsizeZskewÚstdÚsumÚvarz7ignore:invalid value encountered in cast:RuntimeWarningc                 C   sB   t | jdƒ}dd„ }| j|dd�j |¡}|jjd dks>J ‚d S )Né   c                 S   s   |   ¡ |  ¡ |  ¡ |  ¡ dœS )N©r3   r1   r+   r2   r<   )Úgroupr   r   r   Ú	get_statsR   s
    üz2test_apply_use_categorical_name.<locals>.get_statsF©Úobservedr   ÚC)r	   rA   ÚgroupbyÚDÚapplyr   r   )ÚdfÚcatsr>   r$   r   r   r   Útest_apply_use_categorical_nameN   s    rG   c                  C   sZ  t g d¢g d¢dd�}tg d¢|dœƒ}ttdƒddd	�}td
dddtjgi|d�}|jddd� ¡ }t 	||¡ t g d¢g d¢dd�}t g d¢g d¢dd�}t||g d¢dœƒ}|jddd�}	tg d¢ddd	�}
tdt
g d¢|
d�iƒ}|	jdd�}t 	||¡ tddgddgddggddgd�}t |jƒ|d< |jdgdd�}| d d!„ ¡}t 	||dg ¡ | d¡}|jd"dg }t 	||¡ d#d$„ }d%}tjt|d&�� | |¡}W d   ƒ n1 �sÂ0    Y  |jd"dg  ¡ }tddgdd'�|_| �rúd(nt}|d  |¡|d< t 	||¡ td
g d)¢iƒ}tj|jg d*¢d+�}d,}tjt|d&��& |jj|dd� t¡}W d   ƒ n1 �s€0    Y  t ||d
 ¡ t |jj|dd� d-d!„ ¡|d
 ¡ d.}tjt|d&��$ |j|dd� t¡}W d   ƒ n1 �sþ0    Y  |d
g }t 	||¡ |j|dd�}| d/d!„ ¡}t 	||d
g ¡ | d0d!„ ¡}d1}tjt|d&�� | t¡}W d   ƒ n1 �sŽ0    Y  | tjj¡}| d2d!„ ¡}tj	||d
g dd3� tj	||d
g dd3� t 	||d
g ¡ t 	||d
g ¡ t |jj|dd� tj ¡|d
 ¡ t 	|j|dd� tj ¡|¡ td
g d4¢iƒ}tj|jg d5¢d+�}d,}tjt|d&��& |jj|dd� t¡}W d   ƒ n1 �sª0    Y  t ||d
 ¡ t |jj|dd� d6d!„ ¡|d
 ¡ d.}tjt|d&��$ |j|dd� t¡}W d   ƒ n1 �s(0    Y  |d
g }t 	||¡ t 	|j|dd� d7d!„ ¡|d
g ¡ td
g d8¢iƒ}tj|jg d9¢t tdƒƒd:�}|j|dd� t!¡}t|j"j#|j"j$d;�}t
g d8¢|d�}d
|j_%t ||¡ g d<¢}tj& 'd¡j(d"dd=d>�}t j)||dd;�}ttj& 'd¡ *d?¡ƒ}|j|dd� ¡ }|jt +|¡dd� ¡ }t||j#dd�}
| ,|
¡}t 	||¡ |j|dd�}| -¡ }|j. /¡ }t +|¡ 0|¡}| 0|¡}t |dg d<¢d@�}|j|dddA� -¡ }t 	||¡ t j)t 1d¡ 2dB¡|dd;�}t|ƒ}t 3|j4ddC�j 5d"¡|¡ tg dD¢d ƒ}t 3|j4ddC�j 5d¡|¡ d S )EN©	r   r   r   ÚbrI   rI   ÚcrJ   rJ   ©r   rI   rJ   ÚdTr   ©	é   rN   rN   é   rO   rO   é   r;   é   ©r   rI   ÚabcdrI   ©Únamer   r   rN   rO   r;   r   Fr?   ©r   r   rI   rI   ©r   rI   Úz©rJ   rL   rJ   rL   ©rJ   rL   Úy©rN   rO   rP   r;   ©ÚAÚBÚvaluesr^   r`   )rP   é   r   ©Znumeric_onlyzJohn P. Doez	Jane DoveZ	person_idÚperson_name©r!   c                 S   s   | S ©Nr   ©Úxr   r   r   Ú<lambda>~   ó    ztest_basic.<locals>.<lambda>r   c                 S   s   |   d¡jd S )Nrc   r   )Údrop_duplicatesÚilocrf   r   r   r   r   …   s    ztest_basic.<locals>.fú7DataFrameGroupBy.apply operated on the grouping columns©Úmatch©rU   Ústr)rQ   é   é   )r   é
   é   é   é(   )Úbinsúusing SeriesGroupBy.sumc                 S   s
   t  | ¡S re   ©r   r9   ©Úxsr   r   r   rh   �   ri   zusing DataFrameGroupBy.sumc                 S   s   t j| dd�S ©Nr   ©Úaxis©r   r1   rz   r   r   r   rh   §   ri   c                 S   s   t j| dd�S r|   r   rz   r   r   r   rh   ª   ri   zusing DataFrameGroupBy.maxc                 S   s   t j | ¡S re   )r   ÚmaximumÚreducerz   r   r   r   rh   °   ri   )Zcheck_dtype)rQ   rq   rr   éûÿÿÿ)iöÿÿÿr   rs   rt   ru   rv   c                 S   s
   t  | ¡S re   ry   rz   r   r   r   rh   Å   ri   c                 S   s
   t  | ¡S re   ry   rz   r   r   r   rh   Ï   ri   )rN   r   r   r   ©r   rN   rO   rP   r;   )Úlabels©r   ©ÚfooÚbarÚbazÚquxéd   ©r7   ©r‹   r;   )r   r   ©Úsortr@   é   ©Zfuture_stack©r+   r2   r8   r3   z25%z50%z75%r1   )6r   r   r   Úlistr   ÚnanrB   r2   ÚtmÚassert_frame_equalr   r9   rc   Ú	transformrj   rk   Úassert_produces_warningÚFutureWarningrD   Úcopyr   r   ÚobjectÚastypeÚpdÚcutr   Úassert_series_equalr1   r€   r�   Úfilterr)   r   r`   r   r   rU   ÚrandomÚdefault_rngÚintegersr   Ústandard_normalÚasarrayr"   ÚdescribeÚcodesÚargsortÚtaker   ÚrepeatÚassert_index_equalÚstackÚget_level_values) Úusing_infer_stringrF   ÚdataÚ	exp_indexÚexpectedr$   Úcat1Úcat2rE   ÚgbZexp_idxrg   Úgr   ÚmsgÚdtyperJ   ZgbcÚresult2Zresult3Zresult4Zresult5Úlevelsr§   ÚgroupedÚdesc_resultÚidxÚ
ord_labelsÚord_dataZexp_catsÚexpcÚexpr   r   r   Ú
test_basic^   sî    ýþ
*6ÿ4
*$6ÿ4
ÿ



ÿÿÿrÁ   c                 C   sê   t t ddd¡ttddgƒtdƒgdgd dgd  tdƒgd	d
gd�d�}|jd	g| d�}t t ddd¡ttddgƒtdƒgdgd tdƒgd	d
gd�d�}d}tjt	|d�� | 
d¡}W d   ƒ n1 sÐ0    Y  t ||¡ d S )NrO   é   r   rI   rs   r   rQ   rN   ZIndex1ZIndex2)r¹   r§   r   ©r¯   r   ©Úlevelr@   é   z&you will need to pass a length-1 tuplerm   )r   r   r   r   r   ÚrangerB   r•   r˜   r™   Ú	get_groupr–   )r@   rE   rµ   r±   r¶   r$   r   r   r   Útest_level_get_group  s*    ýþýþ(rÉ   c                  C   sÄ   t dgd dgd  g d¢d t d¡dœƒ} t| jg d¢d	d
�| _|  d¡d  ¡ }|jdd	d�}g d¢}t|g d¢d	d
�}g d¢t|ƒg}t	j
|ddgd�}tdgd |dd�}t ||¡ d S )Nr^   é   r_   )ÚhighÚmedÚlowr;   g      (@)r=   ÚdoseZoutcomes)rÍ   rÌ   rË   Tr   r=   rÎ   r   )rÅ   Zsort_remaining)rÍ   rÌ   rË   rÍ   rÌ   rË   )r^   r^   r^   r_   r_   r_   r   rO   r+   ©r   rU   )r   r   r   r   rÎ   rB   Zvalue_countsr#   r   r   Úfrom_arraysr   r•   rŸ   ©rE   r$   r   r±   r   r   r   Ú(test_sorting_with_different_categoricals#  s    
ýÿrÒ   r   TFc           
      C   sl  t tdƒ| d�}t tdƒddg| d�}t t|ƒ¡}t|||dœƒ}|jdd	gd
d�}tj||gdd	gd�}tg d¢|dgd�}| 	dd„ ¡}t
 ||¡ | ¡ }t
 ||¡ d}	t
jt|	d�� | tj¡}W d   ƒ n1 sâ0    Y  t
 ||¡ tj||gdd	gd�}td|d�}d}	t
jt|	d�� | 	dd„ ¡}W d   ƒ n1 �sR0    Y  t
 ||¡ d S )NÚabcr…   Zaaar   rI   r   )ÚmissingÚdenser`   rÔ   rÕ   Tr?   r   )r   rN   ç       @r`   )r   r!   c                 S   s   t j| dd�S r|   )r   r2   rf   r   r   r   rh   I  ri   ztest_apply.<locals>.<lambda>zusing DataFrameGroupBy.meanrm   rN   r   rl   c                 S   s   dS ©NrN   r   rf   r   r   r   rh   Z  ri   )r   r“   r   r   r   r   rB   r   rÐ   rD   r•   r–   r2   r˜   r™   Úaggr   rŸ   )
r   rÕ   rÔ   r`   rE   rº   r¼   r±   r$   r¶   r   r   r   Ú
test_apply9  s*    *.rÙ   c                 C   st  t g d¢g d¢dd�}t g d¢g d¢dd�}t||g d¢dœƒ}d	d
gd |d< |jg d¢| d�}tj||d	d
gd gg d¢d�}tdtg d¢|d�iƒ ¡ }| ¡ }| sÈt|||d	d
ggt	dƒdd�}t
 ||¡ |jddg| d�}tj||gddgd�}tg d¢g d¢dœ|d�}| ¡ }| �sLt|||gt	dƒ|�rDdddœndd�}t
 ||¡ |d  ¡ }|d }t
 ||¡ t g d¢g d¢dd�g d¢g d¢dœ}	t|	ƒ}|jd | d�}
|
 ¡ }tt	d!ƒd t	d"ƒdd#�}td$d$gd%d&gd'œ|d�}| �stt	d"ƒd t	d"ƒdd#�}| |¡}t
 ||¡ |jd d(g| d�}| d)¡}tg d*¢t g d¢g d¢dd�g d+¢d,œƒ d d(g¡}| �s”t||jjd-dggd d(gƒ}t
 ||¡ d.D ]<}|\}}| |¡}||j|k|j|k@  }t
 ||¡ �q¤g d/¢g d0¢g d1¢d2œ}	t|	ƒ}t |d	 t dd3d4¡¡}||d5< |jd5d6gd7| d8�}| d)¡}|jd5d6gd| d8�}| d)¡ ¡ }t
 ||¡ d S )9NrV   rW   Tr   rY   rZ   r\   r]   r‡   rˆ   rO   rA   )r^   r_   rA   r?   r   r`   r   ÚABCr   r   r^   r_   )r‡   rˆ   r‡   rˆ   )r`   rA   ÚABÚ )r   rI   r   rI   ©r   rI   rJ   ©rN   rN   rO   rO   ©rs   rt   ru   rv   )ÚcatÚintsÚvalrà   ÚabrÓ   )rU   r   r   g      ø?ç      4@ru   )rá   râ   rá   r2   )ç      $@g      >@rä   g      D@©rN   rO   rN   rO   )râ   rà   rá   rN   ))r   rN   )rI   rO   )rI   rN   )r   rO   )rs   r�   r;   r�   r;   rN   rN   ©rs   rt   ru   rv   é2   é<   éF   )rL   rJ   Úer   r   rL   rJ   ©r‡   rˆ   r‰   rs   rP   rÇ   r‰   F©Úas_indexr@   )r   r   rB   r   rÐ   r   r#   r9   r(   r“   r•   r–   rŸ   r2   r   r"   rØ   Ú	set_indexrà   r`   rÈ   rá   r�   rž   r   ÚlinspaceÚreset_index)r@   r®   r²   r³   rE   r´   r°   r±   r$   rL   Zgroups_single_keyr   Úgroups_double_keyÚkeyrJ   Úirà   ÚgroupsZgroups2r   r   r   Útest_observed^  sª    	ÿÿÿüÿûÿÿ

ÿûÿø	ÿ
ý
rö   c                 C   s¸   g d¢g d¢g d¢dœ}t |ƒ}t |d g d¢¡}d|_|j|dg| d	�}tj|g d¢gddgd
�}t g d¢g d¢dœ|d�}| sžt||jg d¢gddgƒ}| 	d¡}t
 ||¡ d S )N)rP   rP   r;   rQ   r\   )rs   r‹   éÈ   é"   )ÚC1ÚC2ÚC3rù   )rN   rO   rP   rÊ   rà   rú   r?   r   )ç      @rü   g      @g      @)rå   g      Y@g      i@g      A@)rù   rû   r   r2   )r   r�   rž   rU   rB   r   rÐ   r(   r`   rØ   r•   r–   )r@   rL   rE   r`   rò   r¼   r±   r$   r   r   r   Útest_observed_codes_remapÔ  s    ÿÿ
rý   c                  C   sÜ   t tj d¡jdddd�tj d¡jdddd�tj d¡jdddd�ddœƒ} | j t¡ d¡| d	< | jg d
¢dd�}| 	¡ }|j
jd  ¡ | j ¡ ksœJ ‚|j
jd  ¡ | j ¡ ksºJ ‚|j
jd  ¡ | j ¡ ksØJ ‚d S )NrO   r   éÿ   i0u  rŒ   é'  )rà   Úint_idÚother_idr‡   Úcategoryrà   )rà   r   r  Tr?   rN   )r   r   r¡   r¢   r£   rà   rœ   rp   rB   r+   r   r¹   r5   r   r  )rE   rº   r$   r   r   r   Útest_observed_perfè  s    üÿr  c                 C   sš   t g d¢g d¢d�}t|g d¢dœƒ}|jd| d�}|j}| r`tdd	gd
d�tdgd
d�dœ}n*tdd	gd
d�tg d
d�tdgd
d�dœ}t ||¡ d S )N)r   rJ   r   rÝ   ©r   ©rN   rO   rP   ©rà   Úvalsrà   r?   r   rO   Úint64©r·   rN   )r   rJ   )r   r   rB   rõ   r   r•   Úassert_dict_equal)r@   rà   rE   rµ   r$   r±   r   r   r   Útest_observed_groupsý  s    "
ýr  z,keys, expected_values, expected_index_levelsr   )rq   é	   r   r  ro   rI   )	ra   r�   r   r   r   r  r   r   r   ©r;   rQ   rÊ   Úa2)	rq   r   r   r   r  r   r   r   r   Útest_seriesc           
      C   sÚ   t tg d¢g d¢d�tg d¢g d¢d�g d¢g d¢dœƒ ddg¡}d	| vrX|jd	d
�}|j| dd�}|rr|d }| ¡ }t| ƒdkrŒ|}n"g d¢dg d¢ g}t||| d�}t d|i|d�}	|rÊ|	d }	t 	||	¡ d S )N©rN   rN   rO   r  r  r  )ra   r�   r  )r   r  rI   rJ   r   r  rI   rd   Fr?   rJ   rN   ©	r   r   r   rN   rN   rN   rO   rO   rO   rP   ©r   rN   rO   )r§   r   r   )
r   r   rï   ÚdroprB   r9   r   r   r•   Úassert_equal)
ÚkeysÚexpected_valuesZexpected_index_levelsr  rE   r´   r$   r   r§   r±   r   r   r   Útest_unobserved_in_index  s6    üÿùýr  c                 C   sŒ   t tdtjdgg d¢d�g d¢dœƒ}|jd| d�}|j}| rTdtdd	gd
d�i}n(tdd	gd
d�tg d
d�tg d
d�dœ}t ||¡ d S )Nr   )r   rI   rL   r  r  r  rà   r?   r   rO   r  r	  )	r   r   r   r”   rB   rõ   r   r•   r
  )r@   rE   rµ   r$   r±   r   r   r   Útest_observed_groups_with_nanH  s    þÿ

ýr  c                  C   sl   t dtjtjgg d¢d�} tg d¢ƒ}t| |dœƒ}|jddd�d	  d
¡}|d	 jd
g }t 	||¡ d S )Nr   rÝ   r  r  )rà   Úserrà   Fr?   r  r   )
r   r   r”   r   r   rB   r4   rk   r•   rŸ   )rà   r  rE   r$   r±   r   r   r   Útest_observed_nth]  s    r  c                 C   s¨   t tjdtjdgg d¢d�}tg d¢ƒ}t||dœƒ}|jd| d� ¡  ¡ }| rptt dgg d¢d�dgdœƒ}n(tt g d¢g d¢d�dtjtjgdœƒ}t 	||¡ d S )	Nr   rÝ   r  r\   )Ús1Ús2r  r?   rO   )
r   r   r”   r   r   rB   r-   rñ   r•   r–   )r@   r  r  rE   r$   r±   r   r   r   Ú#test_dataframe_categorical_with_nanh  s    ÿþÿr  r@   r�   c           	      C   s¬   t g d¢g d¢| d�}tg d¢ƒ}t||dœƒ}|jd||d�d  d¡}t|jjd	d
�}t|jƒ}|std|| ¡ < t||kƒs¨d| › d|› d|› d|› �}ds¨J |ƒ‚d S )N)rL   r   rI   r   rL   rI   )r   rI   rÔ   rL   r   )Úlabelrâ   r  )r@   r�   râ   r-   r›   r	  rÔ   zDLabels and aggregation results not consistently sorted
for (ordered=z, observed=z, sort=z
)
Result:
F)	r   r   r   rB   Ú	aggregater   ÚarrayÚisnar)   )	r   r@   r�   r  râ   rE   r$   Zaggrr¶   r   r   r   Ú0test_dataframe_categorical_ordered_observed_sort|  s0    	ý
ÿÿÿþÿr"  c                  C   sŽ  t jddd�} tj d¡jdddd�}tj|| dd	�}ttj d¡ 	d
¡ƒ}|j
|dd� ¡ }|j
t |¡dd� ¡ }| | ¡}t|j|jdd�|_t ||¡ |j
|dd�}| ¡ }|j ¡ }| |¡}	| |¡}
|
j
|	dd� ¡ }t ||¡ t |j|j¡ t |j d¡|j d¡¡ tjt d¡ d¡| dd	�}t|ƒ}t |jdd�j d¡|¡ tg d¢d ƒ}t |jdd�j d¡|¡ d S )Nz
2014-01-01r;   )ÚperiodsrO   r   r‹   rŒ   Tr…   r�   Fr?   r   r�   r‘   r’   rN   )r�   Ú
date_ranger   r¡   r¢   r£   r   r   r   r¤   rB   r2   r¥   r"   r   r   r•   r–   r¦   r§   r¨   r©   r«   r­   r   rª   r¬   r   )r¹   r§   rF   r¯   r$   r±   rº   r»   r¼   r½   r¾   r¿   rÀ   r   r   r   Útest_datetimeŸ  s>    

ÿ


ÿÿÿr%  c                  C   s  t j d¡} g d¢}| jdddd�}tj||dd�}tt  t  d¡d¡ 	d	d¡t
d
ƒd�}||d< | d¡jddd� ¡ }|t
d
ƒ j|jdd� ¡ }ttjg d¢|dd�dd�|_t ||¡ |jddd� ¡ }|t
d
ƒ j|jdd� ¡ }ttjg d¢|dd�dd�|_t ||¡ d S )NrO   r†   r   r;   rt   rŒ   Tr…   éÿÿÿÿrS   rd   rF   FrÄ   r?   ©r   rN   rO   rP   ro   )r   r¡   r¢   r£   r   r   r   rª   r   Zreshaper“   rï   rB   r9   r§   r   r   r•   r–   )Úsr¹   r§   rF   rE   r$   r±   r   r   r   Útest_categorical_indexÊ  s$    &ÿÿr)  c                  C   sz   t g d¢g d¢dd�} ttj d¡ d¡| d�}| g d¢d	 ¡ ¡ }t 	|j
dd
�j| ¡ t |j
dd
�jj| j¡ d S )N)rŠ   r‡   r‰   rˆ   r†   Tr   rO   )rt   r;   rd   r\   rQ   r‘   )r   r   r   r¡   r¢   r¤   rB   r¦   r•   r«   r¬   r!   Úassert_categorical_equalr`   )rF   rE   r$   r   r   r   Ú!test_describe_categorical_columnsã  s    ýÿr+  c                  C   sÊ   t tdƒddgd tdƒd dœƒ} | d  d	¡| d< | jd
dgdd�d  ¡  ¡ }| ¡ }tddgddd�}t	 
|j|¡ t	 |jj|j¡ |d |d  }tddgtddgd
d�d�}t	 ||¡ d S )Nrs   r^   r_   rQ   ZXYXXYrO   )r   ÚmediumÚartistr,  r  r-  Fr?   r   ©r   rU   rÊ   r;   ÚXÚYro   r   )r   rÇ   r“   rœ   rB   r+   Úunstackr¦   r   r•   r«   r!   r*  r`   r   r   rŸ   )rE   Zgcatr$   Zexp_columnsr±   r   r   r   Útest_unstack_categoricaló  s    ÿr2  c                  C   sr   t tjtjddddddddg
ƒ} t |  ¡ jd¡}tjt	dd�� |  
|¡ ¡  W d   ƒ n1 sd0    Y  d S )NrN   rO   rP   r;   z$Grouper and axis must be same lengthrm   )r   r   r”   r�   rž   Údropnar`   ÚpytestÚraisesÚ
ValueErrorrB   r2   )Úseriesrw   r   r   r   Útest_bins_unequal_len  s     r8  r7  r¯   r;   rP   rN   rO   ©r^   r_   c                 C   s   | d S r×   r   )r¼   r   r   r   rh     ri   rh   ra   c                 C   sH   | j ttdƒdd�dd�}| t¡}t|t| ¡ ƒd�}t ||¡ d S )NZABBAr  r	  Fr?   r   )rB   r   r“   r  r   r  r•   rŸ   )r7  r¯   rB   r$   r±   r   r   r   Útest_categorical_series  s    
r:  c                     sô  t tg d¢g d¢ƒg d¢g d¢dœƒ‰ ˆ jddgdd	d
� ¡ } t tddgˆ jjjd�ddgddgdœg d¢d�}t | |¡ ‡ fdd„}d}tjt	|d��( ˆ jd|gdd	d
� ¡ } W d   ƒ n1 sÈ0    Y  t tddgˆ jjjd�ddgddgdœg d¢d�}t | |¡ t
g d¢dd�}d}tjt	|d��( ˆ jd|gdd	d
� ¡ } W d   ƒ n1 �sb0    Y  t | |¡ ddg}t tddgˆ jjjd�ddgddgdœg d¢d�}dD ]8}ttdƒ|d�ˆ _ˆ j|dd	d
� ¡ } t | |¡ �q¶d S )N©rN   rO   rO   r  )rs   é   r<  )ée   éf   ég   )rà   r^   r_   rà   r^   FTrí   rN   rO   r  rs   r<  r=  éÍ   rd   c                    s   ˆ j | df S )Nr^   )Úloc)Úr©rE   r   r   rh   ;  ri   ztest_as_index.<locals>.<lambda>z*A grouping .* was excluded from the resultrm   rÂ   )r   rI   rI   ro   )Nr/  r_   rÓ   )r   r   rB   r9   rà   r   r•   r–   r˜   r™   r   r   r“   r   )r$   r±   r   r¶   r(  Zgroup_columnsrU   r   rC  r   Útest_as_index&  sX    ýÿýú6ýú8ýú	rD  c                  C   s  t dƒ} tdtt dƒ| dd�iƒ}t| | ddd�}tt dƒ| ddd�}t |jdddd	� ¡ j|¡ t |jdddd	� ¡ j|¡ tdtt dƒ| dd�iƒ}t| | ddd�}tt dƒt dƒddd�}t |jdddd	� ¡ j|¡ t |jdddd	� ¡ j|¡ d S )
NrÓ   r^   ÚbaTr   r.  ÚbacFrŽ   )	r“   r   r   r   r•   r«   rB   r-   r   )r   rE   r#   Znosort_indexr   r   r   Útest_preserve_categoriesb  s&    ÿÿÿÿrG  c               	   C   sì   t g d¢g d¢ttdƒtdƒdd�ttdƒtdƒdd�dœƒ} t d	d
tjgddtjgttdƒtdƒdd�ttdƒtdƒdd�dœƒ}dD ]^}| j|ddd�jdd�}| j|ddd�jdd� ¡ }|j|j	d�}t
 ||¡ t
 ||¡ qˆd S )N)rN   rO   rN   rN   rO   )rs   é   rÂ   é   rø   ZabaabrF  Fr   T)r^   r_   rù   rú   rÖ   g      ð?g      9@rä   )rù   rú   ©Úbyrî   r@   rb   rd   )r   r   r“   r   r”   rB   r2   rñ   r"   r!   r•   r–   )rE   Zexp_fullr'   Zresult1r¸   r±   r   r   r   Útest_preserve_categorical_dtype€  s2    üÿ	

üÿÿÿÿrL  zfunc, valuesr-   Úsecondr0   ÚfourthÚthirdr3   r1   c                 C   s˜   t g d¢dd�}tg d¢|dœƒ}| d¡}t|| ƒƒ }tddgt||jd	�dœƒ d¡}t ||¡ | d¡d
 }t|| ƒƒ }|d
 }t 	||¡ d S )N)r-   rM  rO  rN  Tr…   )r&  éþÿÿÿr&  rP  )Úpayloadr'   rQ  rP  r&  r	  r'   )
r   r   rB   Úgetattrr   r·   rï   r•   r–   rŸ   )Úfuncr`   rJ   rE   rµ   r$   r±   Zsgbr   r   r   Útest_preserve_on_ordered_ops¡  s    
ÿþrT  c                  C   sV  t tj d¡ d¡ƒ} t g d¢¡}tj|g d¢dd�}| j|dd� 	¡ }| j|dd� 	¡ }t
|j|j|jd	�|_t ||¡ t g d
¢¡}tj|g d¢dd�}| j|dd� 	¡ }| j|dd� 	¡  |j¡}t
|j|j|jd	�|_t ||¡ tg d¢g d¢dd	�}tg d¢|dœƒ} | jddd� 	¡ }|d j}t dddtjg¡}t ||¡ d S )NrO   r  r  r  Tr…   Fr?   r   )	r   r   r   rN   rN   rN   rP   rP   rP   r'  rH   rK   rM   rR   rI   r   rN   r;   )r   r   r¡   r¢   r¤   r   r   r   rB   r2   r   r   r   r   r•   rŸ   r"   r   r`   r”   Úassert_numpy_array_equal)r¯   r§   rF   r$   rÀ   r   r   r   Útest_categorical_no_compress½  s6    ÿÿý
rV  c                  C   sb   t d gd tg d¢ƒdœƒ} |  d¡ ¡ d }ttg ddgd�tg d	dd
�dd�}t ||¡ d S )NrP   )ÚtrainrW  Útestr9  r^   r_   rX  rW  r  r›   ©r·   rU   rÏ   )r   r   rB   r-   r   r•   rŸ   ©rE   r$   r±   r   r   r   Ú test_groupby_empty_with_categoryâ  s    ýr[  c                  C   sÀ   t dtj d¡ ddd¡iƒ} dd„ tdddƒD ƒ}t||ƒ}| jdgd	d
�} tj	| j
tdddƒd|d�| d< | jdgdd�d  ¡ }|t|jdd„ d� }t|j|jjd�|_t ||¡ d S )NÚvaluerO   r   rÿ   r‹   c                 S   s   g | ]}|› d |d › �‘qS )z - ió  r   )Ú.0rô   r   r   r   Ú
<listcomp>ø  ri   ztest_sort.<locals>.<listcomp>iô  T)rK  Z	ascendingi)  F)Úrightr„   Zvalue_groupr?   c                 S   s   t |  ¡ d ƒS )Nr   )ÚfloatÚsplitrf   r   r   r   rh     ri   ztest_sort.<locals>.<lambda>)ró   ro   )r   r   r¡   r¢   r£   rÇ   r   Zsort_valuesr�   rž   r\  rB   r+   Úsortedr   r   rU   r•   rŸ   )rE   r„   Z
cat_labelsr&   rÀ   r   r   r   Ú	test_sortð  s    
ÿ
rc  c              	   C   sÜ   t g d¢g d¢g d¢g d¢g d¢g d¢g d¢gg d¢d	�}t|d
 |d�|d
< |jd
| dd� ¡ }| rŒddgddgddgddgg}g d¢}n$ddgddgddgddgg}g d¢}t |ddgt|d
|d�d�}t ||¡ d S )N)ú	(7.5, 10]rs   rs   )rd  r�   rt   )ú(2.5, 5]rQ   ru   )ú(5, 7.5]rÊ   rv   )re  r;   rè   )ú(0, 2.5]rN   ré   )rf  ra   rê   )rÇ   r‡   rˆ   rd   rÇ   r…   FrŽ   rN   ré   rQ   ru   rÊ   rv   rs   )rg  re  rf  rd  )rd  re  rf  rg  r‡   rˆ   rT   ©r!   r   )r   r   rB   r-   r   r•   r–   )r�   r   rE   r$   Údata_valuesÚindex_valuesr±   r   r   r   Ú
test_sort2  s0    ù	ö
ýrk  c                 C   sP  t tdddƒtdddƒtdddƒtdddƒtdddƒtdddƒtdddƒgg d¢g d¢dœg d¢d	�}t|d
 |d�|d
< | rÈddgddgddgddgg}tdddƒtdddƒtdddƒtdddƒg}nHddgddgddgddgg}tdddƒtdddƒtdddƒtdddƒg}t |ddgt|d
|d�d�}|jd
| dd� ¡ }t ||¡ d S )NiÛ  ra   rN   rO   rQ   )rs   r�   rQ   rÊ   r;   rN   ra   rç   )Údtr‡   rˆ   rd   rl  r…   ré   ru   rÊ   rv   rs   r‡   rˆ   rT   rh  FrŽ   )r   r   r   r   rB   r-   r•   r–   )r�   r   rE   ri  rj  r±   r$   r   r   r   Útest_sort_datetimelike)  sF    






ù	õò



ü



üýrm  c                  C   s  t tg d¢g d¢d�g d¢dœƒ} tg d¢dd�}| jddd	�j ¡ }tg d
¢|dd�}t ||¡ | jddd	�jjdd�}tg d
¢|dd�}t ||¡ | jddd	�jjdd�}tddt	j
g|dd�}t ||¡ | jddd	�jjdd�}tdt	j
t	j
g|dd�}t ||¡ d S )N©r   r   rI   rÝ   r  ©rN   rO   rN   r9  r^   ro   Fr?   )rP   rN   r   r_   r   ©Z	min_countrN   rP   rO   )r   r   r   rB   r_   r9   r   r•   rŸ   r   r”   ©rE   Zexpected_idxr$   r±   r   r   r   Útest_empty_sum\  s     ÿrr  c                  C   sØ   t tg d¢g d¢d�g d¢dœƒ} tg d¢dd�}| jddd	�j ¡ }tg d
¢|dd�}t ||¡ | jddd	�jjdd�}tg d
¢|dd�}t ||¡ | jddd	�jjdd�}tddt	j
g|dd�}t ||¡ d S )Nrn  rÝ   r  ro  r9  r^   ro   Fr?   )rO   rN   rN   r_   r   rp  rN   rO   )r   r   r   rB   r_   r6   r   r•   rŸ   r   r”   rq  r   r   r   Útest_empty_prodx  s    ÿrs  c                  C   s®   t ttdƒƒtttjdddd�ƒd ƒt d¡dœƒ} | jdd	gd
d� ¡ }t	j
tg d¢ƒttjdddd�ƒgdd	gd�}t ddddddddtjdg	i|d�}t ||¡ d S )NZ	abcbabcbaz2018-06-01 00Z1minrP   )Úfreqr#  r  )Úkey1Úkey2r`   ru  rv  Fr?   rÝ   r   r`   r   r;   r�   rQ   rÊ   rO   r   )r   r   r“   r�   r$  r   r   rB   r2   r   r   r”   r•   r–   )rE   r$   r¼   r±   r   r   r   Ú,test_groupby_multiindex_categorical_datetime�  s"    
ÿûÿ	
þû$rw  zas_index, expectedr  r  r	  r;  r   rg   )r   r¯   rU   ©r   rI   rg   c                 C   sP   t tg d¢dd�g d¢g d¢dœƒ}|jddg| d	d
�d  ¡ }t ||¡ d S )Nr  r  r	  r;  r  rx  r   rI   Trí   rg   )r   r   rB   r9   r•   r  )rî   r±   rE   r$   r   r   r   Ú,test_groupby_agg_observed_true_single_column©  s
    ÿry  r   c                 C   sJ   t g d¢g d¢dd�}t g d¢g d¢dd�}|jd| d�}t ||¡ d S )NrK   Fr   )Nr   rI   rJ   rN   r   )r   Úshiftr•   r  )r   Úctr±   r&   r   r   r   Ú
test_shiftÍ  s    ÿÿr|  c                 C   sX   |   ¡ dd… }|d  d¡|d< |d  d¡|d< tg d¢ƒ|d< |jdgd	d
�}|S )a¥  
    DataFrame with multiple categorical columns and a column of integers.
    Shortened so as not to contain all possible combinations of categories.
    Useful for testing `observed` kwarg functionality on GroupBy objects.

    Parameters
    ----------
    df: DataFrame
        Non-categorical, longer DataFrame from another fixture, used to derive
        this one

    Returns
    -------
    df_cat: DataFrame
    Nr;   r^   r  r_   r\   rA   rC   rN   r}   )rš   rœ   r   r  )rE   Údf_catr   r   r   r}  Ù  s    r}  Ú	operationrØ   rD   c           	      C   sÆ   t g d¢| d jdd�}t g d¢| d jdd�}t ||g¡}tg d¢|dd� ¡ }| jddgd	d
�d }|dkrvdnd}tjt	|d�� t
||ƒtƒ}W d   ƒ n1 s¬0    Y  t ||¡ d S )N)rˆ   rˆ   r‡   r‡   r^   rY  )ÚoneÚthreer  Útwor_   )rO   r;   rN   rP   rA   ©r¯   r   rU   Tr?   rD   úusing np.sumrx   rm   )r   r·   r   rÐ   r   r#   rB   r•   r˜   r™   rR  r9   rŸ   )	r}  r~  Zlev_aZlev_br   r±   rº   r¶   r$   r   r   r   Ú test_seriesgroupby_observed_trueò  s    ,r„  c           	      C   s  t jtddgdd�tg d¢dd�gddgd� ¡ \}}td	d
tjdtjdg|dd�}|dkrœd}tjt	|d�� |j
ddd�}W d   ƒ n1 s’0    Y  | jddg|d�d }|dkr¾dnd}tjt	|d�� t||ƒtƒ}W d   ƒ n1 sô0    Y  t ||¡ d S )Nrˆ   r‡   Fr…   ©r  r€  r�  r^   r_   r   rO   r;   rN   rP   rA   r‚  rØ   z.The 'downcast' keyword in fillna is deprecatedrm   r   Zinfer)Zdowncastr?   rx   rƒ  )r   r   r   Z	sortlevelr   r   r”   r•   r˜   r™   ÚfillnarB   rR  r9   rŸ   )	r}  r@   r~  r   Ú_r±   r¶   rº   r$   r   r   r   Ú)test_seriesgroupby_observed_false_or_none  s     þû,,rˆ  zobserved, index, datarˆ   r‡   r^   rY  )r  r  r€  r€  r  r  r�  r�  r_   )rO   rO   r;   r;   rN   rN   rP   rP   r…   r…  )r^   r_   Nc                 C   s>   t ||dd�}| jddg|d�d  dd„ ¡}t ||¡ d S )NrA   r‚  r^   r_   r?   c                 S   s   |   ¡ |  ¡ dœS )N©r3   r1   r‰  rf   r   r   r   rh   M  ri   z8test_seriesgroupby_observed_apply_dict.<locals>.<lambda>)r   rB   rD   r•   rŸ   )r}  r@   r   r¯   r±   r$   r   r   r   Ú&test_seriesgroupby_observed_apply_dict  s
    .ÿrŠ  c                 C   sD   | j ddgdd�d  ¡ }| j ddgdd� ¡ d }t ||¡ d S )Nr^   r_   Fr?   rA   )rB   r2   r•   rŸ   )r}  r±   r$   r   r   r   Ú4test_groupby_categorical_series_dataframe_consistentR  s    r‹  Úcode)rN   r   r   )r   r   r   c                 C   sÖ   t g d¢g d¢g d¢dœƒ}tj| tdƒd�}d}tjt|d��  |j|d	d
d�}W d   ƒ n1 sf0    Y  | ¡ }d}tjt|d��" |j	j|dd
d�}W d   ƒ n1 s²0    Y  | ¡ j	}t 
||¡ d S )Nr\   )r&  rP  éýÿÿÿéüÿÿÿ)rQ   rÊ   ra   r�   rÝ   rÓ   r  z+DataFrame.groupby with axis=1 is deprecatedrm   rN   F)r~   r@   z5The 'axis' keyword in DataFrame.groupby is deprecatedr   )r   r   r   r“   r•   r˜   r™   rB   r2   ÚTr–   )rŒ  rE   rà   r¶   r´   r$   Zgb2r±   r   r   r   Útest_groupby_categorical_axis_1Y  s    .0
r�  c                 C   s\   t tddg|d�ddgdœddgd	�}| ¡ }|jd| d
�jt jdd� ¡ }t ||¡ d S )NZBobZGregr…   rN   rO   )ÚNameÚItemr‘  r’  rd   r?   T)Zskipna)	r   r   rš   rB   rØ   r9   rñ   r•   r–   )r@   r   rE   r±   r$   r   r   r   Ú$test_groupby_cat_preserves_structurei  s    þÿÿr“  c                  C   s\   t g d¢tdƒdœƒ} tjtdd��$ |  d¡ dd„ ¡ W d   ƒ n1 sN0    Y  d S )	NrV   r;   ©r:   râ   z'vau'rm   r:   c                 S   s&   t | jd d g| jd d gdœƒS )Nr&  r:   Zvaur”  )r   rk   )Úrowsr   r   r   rh     s    ÿz/test_get_nonexistent_category.<locals>.<lambda>)r   rÇ   r4  r5  ÚKeyErrorrB   rD   rC  r   r   r   Útest_get_nonexistent_categoryz  s
    
ÿr—  c                 C   sþ   | dkrt  d¡ tttdƒtdƒd�ttdƒd tdƒd�dgd	 d
œƒ}t| |ƒ}|r^d	nd}|jddg|d�d }| dkr’t|| ƒrŽJ ‚d S t|| ƒ}|sâ| dv rât j	t
dd�� ||Ž  W d   ƒ n1 sÔ0    Y  d S ||Ž }t|ƒ|ksúJ ‚d S )NÚngroupúngroup is not truly a reductionÚAABBÚABCDr  rÛ   rO   çš™™™™™¹?r;   ©Úcat_1Úcat_2r\  rH  rž  rŸ  r?   r\  r,   ©r/   r.   ú(empty group due to unobserved categoriesrm   )r4  Úskipr   r   r“   r   rB   ÚhasattrrR  r5  r6  r   )Úreduction_funcr@   rE   r%   Zexpected_lengthÚseries_groupbyrØ   r$   r   r   r   Ú0test_series_groupby_on_2_categoricals_unobserved…  s.    
ýÿ

ÿ&r¦  c                 C   st  | dkrt  d¡ | dkr2t jjdd�}| |¡ tttdƒtdƒd�ttd	ƒd
 tdƒd�dgd dœƒ}tdƒtdƒtdƒtdƒtdƒg}t	| |ƒ}|j
ddgdd�d }t|| ƒ}| dv rút jtdd�� ||Ž  W d   ƒ n1 sì0    Y  d S ||Ž }t|  }	|D ]6}
|j|
 }t |	¡�r4t |¡�s||	k�sJ ‚�q|	dk�rp| dk�rpt |jtj¡�spJ ‚d S )Nr˜  r™  r,   z6TODO: implemented SeriesGroupBy.corrwith. See GH 32293©Úreasonrš  rÚ   r  rÛ   rO   rœ  r;   r�  ZACÚBCÚCAZCBÚCCrž  rŸ  Fr?   r\  r   r¡  rm   r   r9   )r4  r¢  ÚmarkÚxfailÚapplymarkerr   r   r“   Útupler   rB   rR  r5  r6  Ú-_results_for_groupbys_with_missing_categoriesrA  r�   r!  r   Z
issubdtyper·   Úinteger)r¤  Úrequestr¬  rE   Z
unobservedr%   r¥  rØ   r$   Zzero_or_nanr¼   râ   r   r   r   Ú?test_series_groupby_on_2_categoricals_unobserved_zeroes_or_nans«  s<    
ÿ
ýÿ"

ÿ&
*r³  c                 C   s”   | dkrt  d¡ tttdƒtdƒd�ttdƒtdƒd�g d¢d	œƒ}g d
¢}|jddgdd�}t| |ƒ}t|| ƒ|Ž }|D ]}||jvs|J ‚q|d S )Nr˜  ú2ngroup does not return the Categories on the indexrš  rÚ   r  Ú1111Ú12©rœ  rœ  rœ  rœ  r�  ©)r^   Ú2)r_   r¹  )rA   Ú1)rA   r¹  rž  rŸ  Tr?   )	r4  r¢  r   r   r“   rB   r   rR  r   )r¤  rE   Úunobserved_catsÚdf_grpr%   r&   rà   r   r   r   Ú>test_dataframe_groupby_on_2_categoricals_when_observed_is_trueß  s    
ýÿ
r½  c                 C   s  | dkrt  d¡ tttdƒtdƒd�ttdƒtdƒd�g d¢d	œƒ}g d
¢}|jddg|d�}t| |ƒ}|s¶| dv r¶t jtdd�� t	|| ƒ|Ž  W d   ƒ n1 s¨0    Y  d S t	|| ƒ|Ž }t
|  }|tju rò|j|  ¡  ¡  ¡ sðJ ‚n|j| |k ¡  ¡ �sJ ‚d S )Nr˜  r´  rš  rÚ   r  rµ  r¶  r·  r�  r¸  rž  rŸ  r?   r   r¡  rm   )r4  r¢  r   r   r“   rB   r   r5  r6  rR  r°  r   r”   rA  Zisnullr)   )r¤  r@   rE   r»  r¼  r%   r&   r±   r   r   r   Ú?test_dataframe_groupby_on_2_categoricals_when_observed_is_falseù  s,    	
ýÿ
ÿ,
r¾  c                  C   s„   g d¢g d¢g d¢dœ} t | ƒ}t |d t ddd¡¡}||d	< |jd	d
gdddd�}|d  d¡}| d¡d }t ||¡ d S )N)rs   r�   r;   rN   rß   )rL   rJ   rL   rJ   rì   r‡   r   rt   rQ   rÇ   r‰   TF©rî   r�   r@   r2   )	r   r�   rž   r   rð   rB   rØ   r•   rŸ   )rL   rE   rà   rõ   r$   r±   r   r   r   Ú3test_series_groupby_categorical_aggregation_getitem$  s    rÀ  zfunc, expected_valuesc                 C   sb   t g d¢g d¢tg d¢ƒdœƒ d¡}| d¡ | ¡}t d|itg d¢dd	�d
�}t ||¡ d S )Nrƒ   )r   rN   rN   rO   rO   )r   r   r   r   rN   )Úidrõ   r\  rÁ  rõ   r\  r  ro   r   )r   r   rï   rB   rØ   r   r•   r–   )rS  r  rE   r$   r±   r   r   r   Ú$test_groupby_agg_categorical_columns1  s    
ýÿúÿrÂ  c                  C   s~   t dtg d¢g d¢d�iƒ} t dddgit ddg¡d�}|  g d¢¡ tj¡}t 	||¡ |  g d¢¡ ¡ }t 	||¡ d S )	Nr^   rn  rÝ   r  rO   rN   r   ro  )
r   r   r   r   rB   rØ   r   r5   r•   r–   ©rE   r±   r$   r   r   r   Útest_groupby_agg_non_numericF  s    rÄ  rS  c                 C   sl   t dgtdgdd�j ¡ dœƒ}| d¡d }t|| ƒƒ }tdgtdgdd�d|d jd	�}t 	||¡ d S )
NiÍ  rI   r  r	  r9  r^   r_   ro   ©r   rU   r·   )
r   r   rà   Z
as_orderedrB   rR  r   r·   r•   rŸ   )rS  rE   Z
df_groupedr$   r±   r   r   r   Ú<test_groupby_first_returned_categorical_instead_of_dataframeQ  s     ÿrÆ  c                  C   sx   t  ddg¡} d| j_tg d¢tg d¢t| ƒd�dœƒ}tdd	d
git| dd�d�}|jdddd� 	¡ }t
 ||¡ d S )NrN   rO   F)rN   rP   rQ   ra   rÞ   r  rR   r   rÖ   g      @rI   ro   rÃ   rŽ   )r   r   ÚflagsZ	writeabler   r   r   r   rB   r2   r•   r–   )rF   rE   r±   r$   r   r   r   Útest_read_only_category_no_sort`  s    ÿrÈ  c                  C   s¶   t g d¢g d¢dœƒ} | d  d¡jjg d¢dd�| d< t d	d	d
œd	dd
œddd
œddd
œdœƒ}|jddd�}tg d¢g d¢dddd�|_| jddgdd� ¡  	¡ }t
 ||¡ d S )N)ÚsmallÚlargerÊ  rÊ  r,  rÊ  rÊ  r,  )rA   r^   r^   rA   r^   rA   r^   rA   )r‡   rˆ   r‡   r  )ZtinyrÉ  r,  rÊ  Tr…   r   )r^   rA   rN   rP   rO   rˆ   r   r}   )r   r   rU   r·   Fr?   )r   rœ   rà   Zset_categoriesZrename_axisr   r!   rB   r7   r1  r•   r–   rÃ  r   r   r   Ú#test_sorted_missing_category_valuesl  s8    
õÿÿþÿüÿûrË  c                  C   s�   t dg d¢iƒ} | d  d¡| d< |  d¡j ¡ }tg d¢tg d¢dd�d| d jd�}t 	||¡ |  d¡ 
ddi¡}| ¡ }t ||¡ d S )	NZcol_num©rN   rN   rO   rP   r  Úcol_catr  ro   rÅ  r-   )r   rœ   rB   rÍ  r-   r   r   r·   r•   rŸ   rØ   Úto_framer–   rZ  r   r   r   Ú1test_agg_cython_category_not_implemented_fallback™  s    ürÏ  c                  C   sž   t g d¢g d¢ddtjdgg d¢g d¢dœƒ} |  dd	i¡} |  d
dg¡ dd„ ¡}tjddgddggdd�}t ddgddgddgdœ|d�}t 	||¡ d S )N)rN   rN   rN   rN   ræ   rœ  gš™™™™™É?g333333Ó?)r‡   rˆ   r‡   Zfee)r^   r_   Únumerical_colÚ
object_colÚcategorical_colrÒ  r  r^   r_   c                 S   s   |   ¡  ¡ S re   )r!  r9   rC  r   r   r   rh   ½  ri   z7test_aggregate_categorical_with_isnan.<locals>.<lambda>rN   rO   r9  r   r   )rÐ  rÑ  rÒ  rÃ   )
r   r   r”   rœ   rB   rØ   r   rÐ   r•   r–   rÑ   r   r   r   Ú%test_aggregate_categorical_with_isnan¯  s&    ûÿ
ýúrÓ  c                  C   sÜ   t g d¢g d¢dœƒ} tjg d¢dd�}| d  |¡| d< d}tjt|d	��( |  d
¡d  t	¡| d< W d   ƒ n1 sz0    Y  |  
¡ }t g d¢g d¢g d¢dœƒ}|d  |¡|d< |d  |¡|d< t ||¡ d S )N)rN   rN   rN   rO   rO   rP   )ÚWaitingÚOnTheWayÚ	DeliveredrÔ  rÕ  rÔ  )Ú
package_idÚstatus)rÔ  rÕ  rÖ  Tr   rØ  zusing SeriesGroupBy.maxrm   r×  Úlast_status)rÖ  rÖ  rÖ  rÕ  rÕ  rÔ  )r×  rØ  rÙ  )r   r�   ÚCategoricalDtyperœ   r•   r˜   r™   rB   r—   r1   rš   r–   )rE   Zdelivery_status_typer¶   r$   r±   r   r   r   Útest_categorical_transformÊ  s,    þÿÿ6öÿrÛ  )rS  r@   c                 C   sÊ   t g d¢ƒ}g d¢}t|||dœƒ}t ddgƒ}tj||gddgd�}tdtjtjdg|d	d
�tdtjtjdg|d	d
�dœ}||  }|r˜| ¡  tj	¡}|j
ddg|d�d	 }	t|	| ƒƒ }
t |
|¡ d S ©N)r   r   rN   rN   )r   rN   rN   r   rÝ   r   rN   r   rI   r   rJ   ro   )r-   r0   r?   )r   r   r   r   r   r   r”   r3  rœ   r  rB   rR  r•   rŸ   )rS  r@   rà   râ   rE   r³   r¼   Úexpected_dictr±   Zsrs_grpr$   r   r   r   ÚFtest_series_groupby_first_on_categorical_col_grouped_on_2_categoricals  s    þrÞ  c                 C   sÊ   t g d¢ƒ}g d¢}t|||dœƒ}t ddgƒ}tj||gddgd�}tdtjtjdg|d	d
�tdtjtjdg|d	d
�dœ}||   ¡ }|rœ| ¡  	tj
¡}|jddg|d�}	t|	| ƒƒ }
t |
|¡ d S rÜ  )r   r   r   r   r   r   r”   rÎ  r3  rœ   r  rB   rR  r•   r–   )rS  r@   rà   râ   rE   r³   r¼   rÝ  r±   r¼  r$   r   r   r   ÚBtest_df_groupby_first_on_categorical_col_grouped_on_2_categoricals  s    þrß  c                  C   s¢   t tg d¢g d¢d�tdƒdœƒ} | jdddd�}|j}tjd	d
gdd�tjdgdd�tjg dd�dœ}| ¡ | ¡ ks|J ‚| ¡ D ]}t 	|| || ¡ q„d S )N)rI   rI   r   rÝ   r  rP   )ró   r'   ró   FrŽ   r   rN   Zintpr	  rO   )rI   r   rJ   )
r   r   rÇ   rB   Úindicesr   r   r  r•   rU  )rE   rº   r$   r±   ró   r   r   r   Ú2test_groupby_categorical_indices_unused_categories4  s    þÿýrá  c                 C   sj   t dg d¢iƒ}|d  d¡|d< t| d¡d | ƒƒ }ttg d¢ƒdtg d¢dd�d�}t ||¡ d S )Nr   r  r  rI   ro   )rU   r   )	r   rœ   rR  rB   r   r   r   r•   rŸ   )rS  rE   r$   r±   r   r   r   Ú1test_groupby_last_first_preserve_categoricaldtypeH  s    ÿrâ  c               	   C   sŒ   t ddgddgddgdœƒ} | jdddœd�} | jd	d
gdd� ¡ d }tddgt tddgd	d�tddgd
d�g¡dd�}t 	||¡ d S )NrN   rO   rs   r<  rÝ   r  rR   r	  r   rI   Tr?   rJ   ro   rÏ   )
r   rœ   rB   r5   r   r   rÐ   r   r•   rŸ   rZ  r   r   r   Ú)test_groupby_categorical_observed_nuniqueT  s    ÿûrã  c                  C   sŽ   t jddgdd�} tddgddgddggddgd	� d| i¡}| d¡d  ¡ }tddgtddgdd
�dt jddgdd�d�}t 	||¡ d S )NrÉ  ÚbigTr   rN   rO   ÚgrpÚdescriptionrd   ro   rÅ  )
r�   rÚ  r   rœ   rB   r1   r   r   r•   rŸ   )r·   rE   r$   r±   r   r   r   Ú,test_groupby_categorical_aggregate_functionsc  s    ÿþürç  c                 C   s¦   t ddgg d¢d�}tt ddgg d¢d�ddgdœƒ}|jd| |d	�}| ¡ }| rhtd
ddgi|d�}n&tg d¢g d¢ƒ}td
g d¢i|d�}d|j_t ||¡ d S )NrN   rO   r  r  rP   r;   )rg   r[   rg   )r@   r3  r[   r   )rP   r;   r   )	r   r   rB   r9   r   r   rU   r•   r–   )r@   r3  rà   rE   r´   r$   r±   r   r   r   r   Útest_groupby_categorical_dropnau  s    "rè  Ú
index_kind)rÇ   ÚsingleÚmultic                 C   s�  |dkr&|s&d}|   tjj|d�¡ n|dkr>|s>tjdd� ttg d¢g d¢|d�td	ƒd
œƒ}|dkrrdg}	n@|dkrŒdg}	| |	¡}n&|dkr²ddg}	|d |d< | |	¡}t	||ƒ}
|j
|	|||d�}|�s |dv �r tjtdd�� t||ƒ|
Ž  W d   ƒ n1 �s0    Y  d S t||ƒ|
Ž }|�rD|j d¡j}n|d jj}tg d¢ƒ}t ||¡ |dk�rŒ|j d¡j}t ||¡ d S )Nr,   zDGH#49950 - corrwith with as_index=False may not have grouping columnr§  rÇ   ú/Result doesn't have categories, nothing to test©rO   rN   rO   rP   ©rN   r;   rP   rO   r   r;   rR   r   rê  rë  r  r¿  r   r¡  rm   )r®  r4  r¬  r­  r¢  r   r   rÇ   rï   r   rB   r5  r6  rR  r   r­   r   rà   r   r•   r«   )r²  rî   r�   r@   r¤  ré  r   r¶   rE   r  r%   r´   Ú	op_resultr$   r±   r   r   r   Útest_category_order_reducer†  sH    þÿ

ÿ.
rð  rê  rë  c                 C   s  t tg d¢g d¢|d�tdƒdœƒ}|dkr>dg}| |¡}n&|dkrddd	g}|d |d	< | |¡}t||ƒ}|j|| ||d
�}	|dkrŒtnd }
d}tj|
|d�� t	|	|ƒ|Ž }W d   ƒ n1 sÆ0    Y  |j
 d¡j}tg d¢ƒ}t ||¡ |dk�r|j
 d	¡j}t ||¡ d S )Nrí  rî  r   r;   rR   rê  r   rë  r  r¿  r†  z%DataFrameGroupBy.fillna is deprecatedrm   )r   r   rÇ   rï   r   rB   r™   r•   r˜   rR  r   r­   r   r   r«   )rî   r�   r@   Ztransformation_funcré  r   rE   r  r%   r´   Úwarnr¶   rï  r$   r±   r   r   r   Útest_category_order_transformer¸  s0    þÿ

,
rò  ÚmethodÚheadÚtailc                 C   sô   t tg d¢g d¢|d�tdƒdœƒ}|dkr4dg}n@|dkrNdg}| |¡}n&|d	krtdd
g}|d |d
< | |¡}|j|| ||d�}t||ƒƒ }	|dkr¨|	d jj}
n|	j 	d¡j}
t
g d¢ƒ}t |
|¡ |d	krð|	j 	d
¡j}
t |
|¡ d S )Nrí  rî  r   r;   rR   rÇ   r   rê  rë  r  r¿  )r   r   rÇ   rï   rB   rR  rà   r   r   r­   r   r•   r«   )rî   r�   r@   ró  ré  r   rE   r  r´   rï  r$   r±   r   r   r   Útest_category_order_head_tailÚ  s0    þÿ
rö  )rD   rØ   r—   c                 C   s~  |dkr|dks| s&|dkr&t  d¡ ttg d¢g d¢|d�tdƒdœƒ}|dkrZd	g}n@|d
krtd	g}| |¡}n&|dkršd	dg}|d	 |d< | |¡}|j|| ||d�}|dkrÀ|dkrÀtnd }	d}
tj	|	|
d��" t
||ƒdd„ ƒ}W d   ƒ n1 sþ0    Y  |dk�s| �s0|dk�r0|d	 jj}n|j d	¡j}tg d¢ƒ}t ||¡ |dk�rz|j d¡j}t ||¡ d S )Nr—   rÇ   z(No categories in result, nothing to testrí  rî  r   r;   rR   r   rê  rë  r  r¿  rD   rl   rm   c                 S   s   | j dd�S )NTrb   )r9   rf   r   r   r   rh     ri   z+test_category_order_apply.<locals>.<lambda>)r4  r¢  r   r   rÇ   rï   rB   r™   r•   r˜   rR  rà   r   r   r­   r   r«   )rî   r�   r@   ró  ré  r   rE   r  r´   rñ  r¶   rï  r$   r±   r   r   r   Útest_category_order_applyþ  sB    ÿÿ
þÿ
0
r÷  c                 C   s\  |dkr| st jdd� t ddd¡}tg d¢||d�}t|tdƒd	œƒ}|dkrZd
g}n@|dkrtd
g}| |¡}n&|dkršd
dg}|d
 |d< | |¡}|j|| |dd�}| 	¡ }	|rÀg d¢ng d¢}
t
|
|j|d
d�}| �rtd|
iƒ}|dk�rt t||dœƒ¡|_n||_n6|dk�r:tt|ƒt|ƒ|
dœƒ}ntt|ƒ|
d	œƒ}t |	|¡ d S )NrÇ   rì  r§  i'  r&  rí  r   r;   rR   r   rê  rë  r  Tr¿  )rP   rO   rN   )rO   rN   rP   )r   r   rU   rI   )r   r  )r   r  rI   )r4  r¢  r   r   r   r   rÇ   rï   rB   r9   r   r   r   Z
from_framer   r   r•   r–   )rî   r�   ré  r   r   ZgrouperrE   r  r´   r$   r¯   r   r±   r   r   r   Útest_many_categories'  s:    

ÿ

rø  Úcat_columnsr  c                 C   s€   t g d¢g d¢dœƒ}||   d¡|| < d}t| ƒt|ƒ@ r@tnd }tj||d�� | |¡ W d   ƒ n1 sr0    Y  d S )NrÌ  )r;   rQ   rÊ   ra   rR   r  z+The default of observed=False is deprecatedrm   )r   rœ   Úsetr™   r•   r˜   rB   )rù  r  rE   r¶   Úklassr   r   r   Útest_groupby_default_deprO  s    rü  Úa1c                 C   sâ  |r&|dkr&t tdƒrJ ‚t d¡ nZ|dkrHd}|  tjj|d�¡ n8|dkr€|s€t|ƒdkr€|s€|s€d}|  tjj|d�¡ tg d¢g d	¢g d
¢dœƒ}| 	dddœ¡}d|vrÀ|j
dd�}|j|||d�}|rÜ|d }t||ƒ}	|�sL|dv �rL|ddgk�rLtjtdd��$ |j|gg|	¢R Ž  W d   ƒ n1 �s>0    Y  d S |j|gg|	¢R Ž }
t||ƒ|	Ž }|�rŽ|�s„|dk�rŽ| |¡}|�sÀt dd„ |jd d… D ƒd|fg ¡|_n|�sÒ||g |_t |
|¡ d S )Nr,   z*corrwith not implemented for SeriesGroupByz1GH#32293: attempts to call SeriesGroupBy.corrwithr§  r5   rN   zGH#52848 - raises a ValueError)r   r   rN   )rO   rP   rP   r  )rý  r  rI   r  )rý  r  r  rd   rJ  rI   r   rý  r¡  rm   r7   c                 S   s   g | ]}|d f‘qS )rÜ   r   )r]  Úindr   r   r   r^  †  ri   z!test_agg_list.<locals>.<listcomp>r&  )r£  r
   r4  r¢  r®  r¬  r­  r   r   rœ   r  rB   r   r5  r6  rØ   rR  rÎ  r   Úfrom_tuplesr!   r•   r  )r²  rî   r@   r¤  r  r  r¶   rE   r´   r%   r$   r±   r   r   r   Útest_agg_list[  sV    ÿþ
ýüû
ÿ4
 ÿr   )ir   Únumpyr   r4  Zpandasr�   r   r   r   r   r   r   r	   Zpandas._testingZ_testingr•   Zpandas.api.typingr
   Zpandas.tests.groupbyr   r”   r(   r°  r¬  ÚfilterwarningsrG   rÁ   rÉ   rÒ   ZparametrizerÙ   rö   rý   r  r  r  r  r  r  r"  r%  r)  r+  r2  r8  rÇ   Úrenamer:  rD  rG  rL  rT  rV  r[  rc  rk  rm  rr  rs  rw  rÐ   ry  ZNaTr|  Zfixturer}  r„  rˆ  r   rŠ  r‹  r�  r“  r—  r¦  r³  r½  r¾  rÀ  r5   r+   rÂ  rÄ  rÆ  rÈ  rË  rÏ  rÓ  rÛ  rp   ÚboolrÞ  rß  rá  râ  rã  rç  rè  rð  rò  rö  r÷  rø  rü  r   r   r   r   r   Ú<module>   sÎ  $	 ä 

 (
$

uýþýùþ" +
$ùþ

<!



üþ	
%
"
2ÿûþýÿþõþ



ýùÿó
ýú"ö
ýú"öäþ,
	
&4
*

þ

-8ÿÿ
0 !&
'
