a
    oÝEb�è  ã                   @   s
  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 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ejd ejejejd ejejd ejdœZdd„ Zd	d
„ Zdd„ Zdd„ Zej dddg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Z ej dddg¡ej d"ddg¡ej d#ddg¡d$d%„ ƒƒƒZ!d&d'„ Z"d(d)„ Z#d*d+„ Z$d,d-„ Z%d.d/„ Z&ej d0d1gee'd2ƒƒd d3gd4d5gd6œfee'd2ƒƒ (d7d8„ ¡d5gd d4gd6œfee'd9ƒƒd d3gd4d5gd6œfg¡d:d;„ ƒZ)d<d=„ Z*d>d?„ Z+d@dA„ Z,ej dBdCdDdCgfdEdFdGgfdHdFdCgfdIdDdGgfg¡dJdK„ ƒZ-dLdM„ Z.dNdO„ Z/dPdQ„ Z0dRdS„ Z1dTdU„ Z2dVdW„ Z3dXdY„ Z4dZd[„ Z5ej d\dee
j6eg d]¢d^d_�g d`¢gdadbgdc�g dd¢dedf�fdeeg d]¢d^d_�g d`¢g dd¢dgœƒfg¡dhdi„ ƒZ7ej djdej8ej9g¡dkdl„ ƒZ:ej;dmdn„ ƒZ<ej dodpdqg¡drds„ ƒZ=ej dodpdqg¡ej d"ddg¡dtdu„ ƒƒZ>ej dvde
 6e	dwgd2 dxgd2  d^dydz�e	g d{¢d^d|dz�e	dHdIgd2 ƒg¡g d}¢fde
j?edxdwgdd~�eg d¢dd~�e	dHdIgƒgg d€¢dc�d5d5d2d2ej8ej8d4d4ej8ej8d3d3gfde
j?edxdwgdd~�eg d¢dd~�e	dHdIgƒgg d€¢dc�d5d5d2d2ej8ej8d4d4ej8ej8d3d3gfg¡d�d‚„ ƒZ@dƒd„„ ZAej d…g d†¢g d‡¢g¡dˆd‰„ ƒZBej CdŠ¡d‹dŒ„ ƒZDd�dŽ„ ZEd�d�„ ZFd‘d’„ ZGd“d”„ ZHej d"ddg¡d•d–„ ƒZId—d˜„ ZJej d™ejKg d]¢fejLg d`¢fg¡dšd›„ ƒZMdœd�„ ZNej dždCdEg¡dŸd „ ƒZOd¡d¢„ ZPd£d¤„ ZQd¥d¦„ ZRd§d¨„ ZSd©dª„ ZTej dždCdEg¡eUeVd«œd¬d­„ƒZWej dždCdEg¡eUeVd«œd®d¯„ƒZXd°d±„ ZYej dždCdEg¡d²d³„ ƒZZd´dµ„ Z[dS )¶é    )ÚdatetimeN)ÚCategoricalÚCategoricalIndexÚ	DataFrameÚIndexÚ
MultiIndexÚSeriesÚqcutc                 C   s.   dd„ }t jt||ƒ|d�}| 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   úe/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/groupby/test_categorical.pyÚf   s    ÿz)cartesian_product_for_groupers.<locals>.f©Únames©Ú
fill_value)r   Úfrom_productÚmapÚreindexÚ
sort_index)ÚresultÚargsr   r   r   Úindexr   r   r   Úcartesian_product_for_groupers   s    r!   )ÚallÚanyÚcountÚcorrwithÚfirstZidxmaxZidxminÚlastZmadÚmaxÚmeanZmedianÚminÚnthÚnuniqueÚprodZquantileZsemÚsizeZskewÚstdÚsumÚvarc                 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©r*   r(   r$   r)   r3   )Úgroupr   r   r   Ú	get_statsH   s
    üz2test_apply_use_categorical_name.<locals>.get_statsF©Úobservedr   ÚC)r	   r8   ÚgroupbyÚDÚapplyr    r   )ÚdfÚcatsr5   r   r   r   r   Útest_apply_use_categorical_nameE   s    r>   c                  C   sL  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ƒ}| ¡ }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#„ }| |¡}|
jd!dg  ¡ }tddgdd$�|_|d  d%¡|d< t 	||¡ td
g d&¢iƒ}tj|jg d'¢d(�}|jj|dd� t¡}t ||d
 ¡ t |jj|dd� d)d „ ¡|d
 ¡ t 	|j|dd� t¡|d
g ¡ |j|dd�}tjtd*dd+�� | d,d „ ¡}W d   ƒ n1 �s¬0    Y  t 	||d
g ¡ t d ¡�D | d-d „ ¡}| t¡}| tjj¡}| d.d „ ¡}W d   ƒ n1 �s0    Y  tj	||d
g dd/� tj	||d
g dd/� t 	||d
g ¡ t 	||d
g ¡ t |jj|dd� tj¡|d
 ¡ t 	|j|dd� tj¡|¡ td
g d0¢iƒ}tj|jg d1¢d(�}|jj|dd� t¡}t ||d
 ¡ t |jj|dd� d2d „ ¡|d
 ¡ t 	|j|dd� t¡|d
g ¡ t 	|j|dd� d3d „ ¡|d
g ¡ td
g d4¢iƒ}tj|jg d5¢t tdƒƒd6�}|j|dd� t ¡}t|j!j"|j!j#d7�}t
g d4¢|d�}d
|j_$t ||¡ g d8¢}tj%j&d!dd9d:�}t j'||dd7�} ttj% (d9d¡ƒ}|j| dd� ¡ }|jt )| ¡dd� ¡ }t|| j"dd�}	| *|	¡}t 	||¡ |j| dd�}| +¡ }| j, -¡ }t )| ¡ .|¡}| .|¡}t |dg d8¢d;�}|j|ddd<� +¡ }t 	||¡ t j't /d¡ 0d=¡|dd7�}t|ƒ}t 1| 2¡ j 3d!¡|¡ tg d>¢d ƒ}t 1| 2¡ j 3d¡|¡ d S )?N©	r   r   r   Úbr@   r@   ÚcrA   rA   ©r   r@   rA   ÚdTr
   ©	é   rE   rE   é   rF   rF   é   r2   é   ©r   r@   Úabcdr@   ©Únamer   r   rE   rF   r2   ©r    Fr6   ©r   r   r@   r@   ©r   r@   Úz©rA   rC   rA   rC   ©rA   rC   Úy©rE   rF   rG   r2   ©ÚAÚBÚvaluesrV   rX   )rG   é   r   zJohn P. Doez	Jane DoveZ	person_idÚperson_name©Úcolumnsc                 S   s   | S ©Nr   ©Úxr   r   r   Ú<lambda>u   ó    ztest_basic.<locals>.<lambda>r   c                 S   s   |   d¡jd S )NrZ   r   )Údrop_duplicatesÚilocr^   r   r   r   r   |   s    ztest_basic.<locals>.f©rL   Úobject)rH   é   é   )r   é
   é   é   é(   )Úbinsc                 S   s
   t  | ¡S r]   ©r   r0   ©Úxsr   r   r   r`   Ž   ra   z
scalar max©ÚmatchZcheck_stacklevelc                 S   s
   t  | ¡S r]   ©r   r(   rn   r   r   r   r`   —   ra   c                 S   s   t j| dd�S )Nr   ©Zaxisrr   rn   r   r   r   r`   ›   ra   c                 S   s   t j | ¡S r]   )r   ÚmaximumÚreducern   r   r   r   r`   ž   ra   )Zcheck_dtype)rH   rf   rg   éûÿÿÿ)iöÿÿÿr   rh   ri   rj   rk   c                 S   s
   t  | ¡S r]   rm   rn   r   r   r   r`   °   ra   c                 S   s
   t  | ¡S r]   rm   rn   r   r   r   r`   ´   ra   )rE   r   r   r   ©r   rE   rF   rG   r2   )Úlabels©r   ©ÚfooÚbarÚbazÚquxéd   ©r.   )r   r   ©Úsortr7   é   ©r$   r)   r/   r*   z25%z50%z75%r(   )4r   r   r   Úlistr   Únanr9   r)   ÚtmÚassert_frame_equalr   r0   rZ   Ú	transformrb   rc   r;   Úcopyr   r    ÚastypeÚpdÚcutr   Úassert_series_equalÚassert_produces_warningÚFutureWarningr(   rt   ru   Úfilterr"   r   rX   r   r   rL   ÚrandomÚrandintr   ÚrandnÚasarrayr   ÚdescribeÚcodesÚargsortÚtaker   ÚrepeatÚassert_index_equalÚstackÚget_level_values)r=   ÚdataÚ	exp_indexÚexpectedr   Úcat1Úcat2r<   ÚgbZexp_idxr_   Úgr   rA   ZgbcÚresult2Zresult3Zresult4Zresult5Úlevelsr—   ÚgroupedÚdesc_resultÚidxÚ
ord_labelsÚord_dataZexp_catsÚexpcÚexpr   r   r   Ú
test_basicT   sÌ    ýþ

ÿ"ÿ.
.$ÿ"ÿ



ÿ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 	||¡ d S )NrF   é   r   r@   rh   r   rH   rE   ZIndex1ZIndex2)r¦   r—   r   ©rž   r    ©Úlevelr7   é   )
r   r   r   r   r   Úranger9   Ú	get_groupr‡   rˆ   )r7   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 )NrV   é   rW   )ÚhighÚmedÚlowr2   g      (@)r4   ÚdoseZoutcomes)rº   r¹   r¸   Tr
   r4   r»   r   )r²   Zsort_remaining)rº   r¹   r¸   rº   r¹   r¸   )rV   rV   rV   rW   rW   rW   r   rF   ©r    rL   )r   r   r   r   r»   r9   Zvalue_countsr   r   r   Úfrom_arraysr   r‡   rŽ   ©r<   r   r    r    r   r   r   Ú(test_sorting_with_different_categoricals  s    
ýÿr¿   r   TFc           	      C   s6  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�}t	j
tddd�� | dd„ ¡}W d   ƒ n1 s´0    Y  t	 ||¡ | ¡ }t	 ||¡ | tj¡}t	 ||¡ tj||gdd	gd�}td|d�}| dd„ ¡}t	 ||¡ d S )NÚabcry   Zaaar   r@   r
   )ÚmissingÚdenserX   rÁ   rÂ   Tr6   r   )r   rE   ç       @rX   ©r    r\   zSelect only validFrp   c                 S   s
   t  | ¡S r]   )r   r)   r^   r   r   r   r`   -  ra   ztest_apply.<locals>.<lambda>rE   rM   c                 S   s   dS ©NrE   r   r^   r   r   r   r`   9  ra   )r   r…   r   r   r   r   r9   r   r½   r‡   r�   r�   r;   rˆ   r)   Úaggr   rŽ   )	r   rÂ   rÁ   rX   r<   r§   r©   r    r   r   r   r   Ú
test_apply  s(    ÿ,rÇ   c                 C   s>  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dg d¢i|d�}| ¡ }| �s6t|||gt	dƒ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
 ||¡ �qng d,¢g d-¢g d.¢d/œ}t|ƒ}t |d	 t dd0d1¡¡}||d2< |jd2d3gd4| d5�}| d&¡}|jd2d3gd| d5�}| d&¡ ¡ }t
 ||¡ d S )6NrN   rO   Tr
   rQ   rR   rT   rU   r{   r|   rF   r8   )rV   rW   r8   r6   r   rX   rM   ÚABCr   r   rV   rW   ÚAB)r   r@   r   r@   ©r   r@   rA   ©rE   rE   rF   rF   ©rh   ri   rj   rk   )ÚcatÚintsÚvalrÍ   ÚabrÀ   )rL   r   r   g      ø?ç      4@rj   )rÎ   rÏ   rÎ   r)   )ç      $@g      >@rÑ   g      D@©rE   rF   rE   rF   )rÏ   rÍ   rÎ   rE   ))r   rE   )r@   rF   )r@   rE   )r   rF   )rh   rƒ   r2   rƒ   r2   rE   rE   ©rh   ri   rj   rk   é2   é<   éF   )rC   rA   Úer   r   rC   rA   ©r{   r|   r}   rh   rG   r´   r}   F©Úas_indexr7   )r   r   r9   r   r½   r   r   r0   r!   r…   r‡   rˆ   r)   r   r   rÆ   Ú	set_indexrÍ   rX   rµ   rÎ   rŒ   r�   r   ÚlinspaceÚreset_index)r7   r¡   r¢   r<   r£   rŸ   r    r   rC   Zgroups_single_keyr    Úgroups_double_keyÚkeyrA   Ú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)rG   rG   r2   rH   rT   )rh   r   éÈ   é"   )ÚC1ÚC2ÚC3ræ   )rE   rF   rG   r·   rÍ   rç   r6   r   )ç      @ré   g      @g      @)rÒ   g      Y@g      i@g      A@)ræ   rè   rM   r)   )r   rŒ   r�   rL   r9   r   r½   r!   rX   rÆ   r‡   rˆ   )r7   rC   r<   rX   rß   r©   r    r   r   r   r   Útest_observed_codes_remap©  s    ÿÿ
rê   c                  C   sÊ   t tjjdddd�tjjdddd�tj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 )Nr   éÿ   i0u  r€   é'  )rÍ   Úint_idÚother_idr{   ÚcategoryrÍ   )rÍ   rí   rî   Tr6   rE   rF   )r   r   r’   r“   rÍ   r‹   Ústrr9   r$   r    r¦   r,   rí   rî   )r<   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   rA   r   rÊ   ©r   ©rE   rF   rG   ©rÍ   ÚvalsrÍ   r6   r   rF   Úint64©ÚdtyperE   )r   rA   )r   r   r9   râ   r   r‡   Úassert_dict_equal)r7   rÍ   r<   r¤   r   r    r   r   r   Útest_observed_groupsÒ  s    "
ý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   r@   rC   rò   ró   rô   rÍ   r6   r   rF   rö   r÷   )	r   r   r   r†   r9   râ   r   r‡   rù   )r7   r<   r¤   r   r    r   r   r   Útest_observed_groups_with_nanç  s    þÿ

ýrû   c                  C   s�   t dtjtjgg d¢d�} tg d¢ƒ}t| |dœƒ}|jddd�d	  d
¡}t g d¢g d¢d�}tdtjtjg|d	d�}d|j_t	 
||¡ d S )Nr   rÊ   rò   ró   )rÍ   ÚserrÍ   Fr6   rü   r   rE   r¼   )r   r   r†   r   r   r9   r+   r    rL   r‡   rŽ   )rÍ   rü   r<   r   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ò   rT   )Ús1Ús2rþ   r6   rF   )
r   r   r†   r   r   r9   r&   rÞ   r‡   rˆ   )r7   rþ   rÿ   r<   r   r    r   r   r   Ú#test_dataframe_categorical_with_nan  s    ÿþÿr   r7   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)rC   r   r@   r   rC   r@   )r   r@   rÁ   rC   r
   )ÚlabelrÏ   r  )r7   r‚   rÏ   r&   re   r÷   rÁ   zDLabels and aggregation results not consistently sorted
for (ordered=z, observed=z, sort=z
)
Result:
F)	r   r   r   r9   Ú	aggregater    ÚarrayÚisnar"   )	r   r7   r‚   r  rÏ   r<   r   ZaggrÚmsgr   r   r   Ú0test_dataframe_categorical_ordered_observed_sort  s0    	ý
ÿÿÿþÿr  c                  C   s|  t jddd�} tj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¡|¡ tg d¢d ƒ}t | ¡ j d¡|¡ d S )Nz
2014-01-01r2   )Úperiodsr   r   r€   Try   Fr6   r
   rƒ   r„   rE   )rŒ   Ú
date_ranger   r’   r“   r   r   r   r”   r9   r)   r•   r   r   r    r‡   rˆ   r–   r—   r˜   r™   r›   r�   r   rš   rœ   r   )r¦   r—   r=   rž   r   r    r§   r¨   r©   rª   r«   r¬   r­   r   r   r   Útest_datetimeB  s6    

ÿ


ÿ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 )Ni90  rz   r   r2   ri   r€   Try   éÿÿÿÿrJ   r[   r=   Fr±   r6   ©r   rE   rF   rG   rd   )r   r’   ZRandomStater“   r   r   r   rš   r   Zreshaper…   rÜ   r9   r0   r—   r   r    r‡   rˆ   )Úsr¦   r—   r=   r<   r   r    r   r   r   Útest_categorical_indexi  s$    &ÿÿr  c                  C   sn   t g d¢g d¢dd�} ttj dd¡| d�}| g d¢d	 ¡ ¡ }t | 	¡ j
| ¡ t | 	¡ j
j| j¡ d S )
N)r~   r{   r}   r|   rz   Tr
   ri   r2   r[   rT   rH   )r   r   r   r’   r”   r9   r–   r‡   r›   rœ   r\   Úassert_categorical_equalrX   )r=   r<   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 )Nrh   rV   rW   rH   ZXYXXYrF   )r   ÚmediumÚartistr  rï   r  Fr6   r   ©r   rL   r·   r2   ÚXÚYrd   rM   )r   r´   r…   r‹   r9   r$   Úunstackr–   r   r‡   r›   r\   r  rX   r   r   rŽ   )r<   Zgcatr   Zexp_columnsr    r   r   r   Útest_unstack_categorical‘  s    ÿr  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 )NrE   rF   rG   r2   z$Grouper and axis must be same length©rq   )r   r   r†   rŒ   r�   ÚdropnarX   ÚpytestÚraisesÚ
ValueErrorr9   r)   )Úseriesrl   r   r   r   Útest_bins_unequal_len¤  s     r  r  rž   r2   rG   rE   rF   ©rV   rW   c                 C   s   | d S rÅ   r   )r©   r   r   r   r`   µ  ra   r`   rY   c                 C   sD   |   ttdƒdd�¡}| t¡}t|t| ¡ ƒd�}t ||¡ d S )NZABBArï   r÷   rM   )r9   r   r…   r  r   Úkeysr‡   rŽ   )r  rž   r9   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„}ˆ j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 | |¡ tg d¢dd�}ˆ jd|gdd	d
� ¡ } 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 | |¡ �qPd S )N©rE   rF   rF   ró   )rh   é   r"  )ée   éf   ég   )rÍ   rV   rW   rÍ   rV   FTrÚ   rE   rF   rò   rh   r"  r#  éÍ   r[   c                    s   ˆ j | df S )NrV   )Úloc)Úr©r<   r   r   r`   Ù  ra   ztest_as_index.<locals>.<lambda>r¯   )r   r@   r@   rd   )Nr  rW   rÀ   )r   r   r9   r0   rÍ   r   r‡   rˆ   r   r   r…   r    )r   r    r   r  Zgroup_columnsrL   r   r)  r   Útest_as_indexÄ  sP    ýÿýúýúýú	r*  c                  C   sð   t dƒ} tdtt dƒ| dd�iƒ}t| | 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À   rV   ÚbaTr
   r  Fr�   Úbac)	r…   r   r   r   r‡   r›   r9   r&   r    )r   r<   r    r   Znosort_indexr   r   r   Útest_preserve_categoriesü  s$    ÿÿÿÿr-  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 ]V}| j|ddd� ¡ }| j|ddd� ¡  ¡ }|j|j	d�}t
 ||¡ t
 ||¡ qˆd S )N)rE   rF   rE   rE   rF   )rh   é   r¯   é   rå   Zabaabr,  Fr
   T)rV   rW   ræ   rç   rÃ   g      ð?g      9@rÑ   )ræ   rç   )ÚbyrÛ   r7   r[   )r   r   r…   r   r†   r9   r)   rÞ   r   r\   r‡   rˆ   )r<   Zexp_fullÚcolZresult1r¥   r    r   r   r   Útest_preserve_categorical_dtype  s(    üÿ	

üÿr2  zfunc, valuesr&   Úsecondr'   ÚfourthÚthirdr*   r(   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&   r3  r5  r4  Try   )r
  éþÿÿÿr
  r6  )Úpayloadr1  r7  r6  r
  r÷   r1  )
r   r   r9   Úgetattrr   rø   rÜ   r‡   rˆ   rŽ   )ÚfuncrX   rA   r<   r¤   r   r    Zsgbr   r   r   Útest_preserve_on_ordered_ops1  s    
ÿþr:  c                  C   sP  t tj 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 )Né	   )	r   r   r   rE   rE   rE   rF   rF   rF   ©r   rE   rF   Try   Fr6   r
   )	r   r   r   rE   rE   rE   rG   rG   rG   r  r?   rB   rD   rI   r@   r   rE   rF   r2   )r   r   r’   r”   r  r   r   r9   r)   r   r    r   r   r‡   rŽ   r   r   rX   r†   Úassert_numpy_array_equal)rž   r—   r=   r   r­   r   r   r   Útest_categorical_no_compressM  s6    ÿÿý
r>  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 )NrG   )Útrainr?  Útestr  rV   rW   r@  r?  rò   re   ©rø   rL   r¼   )r   r   r9   r&   r   r‡   rŽ   ©r<   r   r    r   r   r   Ú test_groupby_empty_with_categoryr  s    ýrC  c                  C   sº   t dtj 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Úvaluer   rì   r   c                 S   s   g | ]}|› d |d › �‘qS )z - ió  r   )Ú.0rá   r   r   r   Ú
<listcomp>‰  ra   ztest_sort.<locals>.<listcomp>iô  T)r0  Z	ascendingi)  F)Úrightrx   Zvalue_groupr6   c                 S   s   t |  ¡ d ƒS )Nr   )ÚfloatÚsplitr^   r   r   r   r`   ’  ra   ztest_sort.<locals>.<lambda>)rà   rd   )r   r   r’   r“   r´   r   Zsort_valuesrŒ   r�   rD  r9   r$   Úsortedr    r   rL   r‡   rŽ   )r<   rx   Z
cat_labelsÚresr­   r   r   r   Ú	test_sort€  s    
ÿ
rL  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�| d
< tg d¢d
dd�}t ddgddgddgddggddg|d�}d
}| j|ddd� ¡ }t ||¡ |}| j|ddd� ¡ }t ||¡ t| d
 dd�| d
< tg d¢d
d�}t ddgddgddgddggddg|d�}tg d¢g d¢d
d�}t ddgddgddgddgg|ddgd�}d
}| j|ddd� ¡ }t ||¡ | j|ddd� ¡ }t ||¡ d S )N)ú	(7.5, 10]rh   rh   )rM  rƒ   ri   )ú(2.5, 5]rH   rj   )ú(5, 7.5]r·   rk   )rN  r2   rÕ   )ú(0, 2.5]rE   rÖ   )rO  rY   r×   )r´   r{   r|   r[   r´   Try   )rP  rN  rO  rM  rK   rE   rÖ   rH   rj   r·   rk   rh   r{   r|   )r\   r    Fr�   rd   )rM  rN  rO  rP  ©r   rL   rÄ   )r   r   r   r9   r&   r‡   rˆ   )r<   r    Zexpected_sortr1  Úresult_sortZexpected_nosortÚresult_nosortr   r   r   Ú
test_sort2—  sX    ù	ö
ÿ"ÿÿ"ÿý"ÿrT  c                  C   sš  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�| d
< tdddƒtdddƒtdddƒtdddƒg}t ddgddgddgddggddgd	�}t|d
dd�|_tdddƒtdddƒtdddƒtdddƒg}t ddgddgddgddggddgd	�}t||d
dd�|_d
}t || j|ddd� ¡ ¡ t || j|ddd� ¡ ¡ t| d
 dd�| d
< tdddƒtdddƒtdddƒtdddƒg}t ddgddgddgddggddgd	�}t|d
d�|_tdddƒtdddƒtdddƒtdddƒg}t ddgddgddgddggddgd	�}t||d
d�|_d
}t || j|ddd� ¡ ¡ t || j|ddd� ¡ ¡ d S )NiÛ  rY   rE   rF   rH   )rh   rƒ   rH   r·   r2   rE   rY   rÔ   )Údtr{   r|   r[   rU  Try   rÖ   rj   r·   rk   rh   r{   r|   rK   )r   rL   r   Fr�   rd   rQ  )	r   r   r   r   r    r‡   rˆ   r9   r&   )r<   r    rR  rS  r1  r   r   r   Útest_sort_datetimelikeÑ  sˆ    






ù	õò



ü ÿ



ü ÿÿÿÿ



ü ÿ



ü ÿÿÿrV  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   r@   rÊ   rò   ©rE   rF   rE   r  rV   rd   Fr6   )rG   rE   r   rW   r   ©Z	min_countrE   rG   rF   )r   r   r   r9   rW   r0   r   r‡   rŽ   r   r†   ©r<   Zexpected_idxr   r    r   r   r   Útest_empty_sum,  s     ÿr[  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 )NrW  rÊ   rò   rX  r  rV   rd   Fr6   )rF   rE   rE   rW   r   rY  rE   rF   )r   r   r   r9   rW   r-   r   r‡   rŽ   r   r†   rZ  r   r   r   Útest_empty_prodH  s    ÿr\  c                  C   sª   t ttdƒƒtttjdddd�ƒd ƒt d¡dœƒ} |  dd	g¡ ¡ }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1TrG   )Úfreqr  r;  )Úkey1Úkey2rX   r^  r_  rÊ   r   rX   r   r2   rƒ   rH   r·   rF   rM   )r   r   r…   rŒ   r  r   r   r9   r)   r   r   r†   r‡   rˆ   )r<   r   r©   r    r   r   r   Ú,test_groupby_multiindex_categorical_datetime`  s"    
ÿûÿ	
þû$r`  zas_index, expected©rE   rE   rF   rï   r÷   r!  r   r@   r   ró   r_   )r    rž   rL   ©r   r@   r_   c                 C   sP   t tg d¢dd�g d¢g d¢dœƒ}|jddg| d	d
�d  ¡ }t ||¡ d S )Nra  rï   r÷   r!  ró   rb  r   r@   TrÚ   r_   )r   r   r9   r0   r‡   Úassert_equal)rÛ   r    r<   r   r   r   r   Ú,test_groupby_agg_observed_true_single_columny  s
    ÿrd  r   c                 C   sJ   t g d¢g d¢dd�}t g d¢g d¢dd�}|jd| d�}t ||¡ d S )NrB   Fr
   )Nr   r@   rA   rE   r   )r   Úshiftr‡   rc  )r   Úctr    rK  r   r   r   Ú
test_shift�  s    ÿÿrg  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
    Nr2   rV   rï   rW   rT   r8   r:   rE   rs   )rŠ   r‹   r   Zdrop)r<   Údf_catr   r   r   rh  ©  s    rh  Ú	operationrÆ   r;   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 }t||ƒtƒ}t 	||¡ d S )N)r{   r{   r|   r|   rV   rA  )ÚoneÚtworj  ÚthreerW   )rE   rG   rF   r2   r8   ©rž   r    rL   Tr6   )
r   rø   r   r½   r   r9   r8  r0   r‡   rŽ   )rh  ri  Zlev_aZlev_br    r    r§   r   r   r   r   Ú test_seriesgroupby_observed_trueÂ  s    rn  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rj|jddd�}| jddg|d�d }t	||ƒt
ƒ}t ||¡ d S )Nr|   r{   Fry   ©rj  rl  rk  rV   rW   r   rF   r2   rE   rG   r8   rm  rÆ   r   Zinfer)Zdowncastr6   )r   r   r   Z	sortlevelr   r   r†   Zfillnar9   r8  r0   r‡   rŽ   )rh  r7   ri  r    Ú_r    r§   r   r   r   r   Ú)test_seriesgroupby_observed_false_or_noneÏ  s    þûrq  zobserved, index, datar{   r|   rV   rA  )rj  rj  rk  rk  rj  rj  rl  rl  rW   )rE   rE   rG   rG   rF   rF   r2   r2   ry   ro  )rV   rW   Nc                 C   s>   t ||dd�}| jddg|d�d  dd„ ¡}t ||¡ d S )Nr8   rm  rV   rW   r6   c                 S   s   |   ¡ |  ¡ dœS )N©r*   r(   rr  r^   r   r   r   r`     ra   z8test_seriesgroupby_observed_apply_dict.<locals>.<lambda>)r   r9   r;   r‡   rŽ   )rh  r7   r    rž   r    r   r   r   r   Ú&test_seriesgroupby_observed_apply_dictã  s
    .ÿrs  c                 C   s<   |   ddg¡d  ¡ }|   ddg¡ ¡ d }t ||¡ d S )NrV   rW   r8   )r9   r)   r‡   rŽ   )rh  r    r   r   r   r   Ú4test_groupby_categorical_series_dataframe_consistent  s    rt  Úcode)rE   r   r   )r   r   r   c                 C   sf   t g d¢g d¢g d¢dœƒ}tj| tdƒd�}|j|dd� ¡ }|jj|d	d� ¡ j}t ||¡ d S )
NrT   )r
  r6  éýÿÿÿéüÿÿÿ)rH   r·   rY   rƒ   rÊ   rÀ   rò   rE   rs   r   )	r   r   r   r…   r9   r)   ÚTr‡   rˆ   )ru  r<   rÍ   r   r    r   r   r   Útest_groupby_categorical_axis_1  s
    ry  z(ignore:.*Select only valid:FutureWarningc                 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Gregry   rE   rF   )ÚNameÚItemrz  r{  r[   r6   T)Zskipna)	r   r   rŠ   r9   rÆ   r0   rÞ   r‡   rˆ   )r7   r   r<   r    r   r   r   r   Ú$test_groupby_cat_preserves_structure)  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 )	NrN   r2   ©r1   rÏ   z'vau'r  r1   c                 S   s&   t | jd d g| jd d gdœƒS )Nr
  r1   Zvaur}  )r   rc   )Úrowsr   r   r   r`   @  s    ÿz/test_get_nonexistent_category.<locals>.<lambda>)r   r´   r  r  ÚKeyErrorr9   r;   r)  r   r   r   Útest_get_nonexistent_category;  s
    
ÿr€  c           
      C   sÈ   | dkrt  d¡ | dkr4t jjdd�}|j |¡ tttdƒtdƒd�ttd	ƒd
 tdƒd�dgd dœƒ}ddgi 	| g ¡}|rˆdnd}|j
ddg|d�d }t|| ƒ}||Ž }	t|	ƒ|ksÄJ ‚d S )NÚngroupúngroup is not truly a reductionr%   ú6TODO: implemented SeriesGroupBy.corrwith. See GH 32293©ÚreasonÚAABBÚABCDrò   rÉ   rF   çš™™™™™¹?r2   ©Úcat_1Úcat_2rD  r+   r   r.  rŠ  r‹  r6   rD  )r  ÚskipÚmarkÚxfailÚnodeÚ
add_markerr   r   r…   Úgetr9   r8  r   )
Úreduction_funcr7   Úrequestr�  r<   r   Zexpected_lengthÚseries_groupbyrÆ   r   r   r   r   Ú0test_series_groupby_on_2_categoricals_unobservedF  s&    
ÿýÿ
r•  c                 C   s4  | dkrt  d¡ | dkr4t jjdd�}|j |¡ 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}ddgi 
| g ¡}|jddgdd�d }t|| ƒ}||Ž }t|  }	|D ].}
|j|
 }t |	¡røt |¡sÖ||	ksÖJ ‚qÖ|	dk�r0| dk�r0t |jtj¡�s0J ‚d S )Nr�  r‚  r%   rƒ  r„  r†  rÈ   rò   rÉ   rF   rˆ  r2   r‰  ZACÚBCÚCAZCBÚCCr+   r   rŠ  r‹  Fr6   rD  r0   )r  rŒ  r�  rŽ  r�  r�  r   r   r…   Útupler‘  r9   r8  Ú-_results_for_groupbys_with_missing_categoriesr'  rŒ   r  r   Z
issubdtyperø   Úinteger)r’  r“  r�  r<   Z
unobservedr   r”  rÆ   r   Zzero_or_nanr©   rÏ   r   r   r   Ú?test_series_groupby_on_2_categoricals_unobserved_zeroes_or_nansc  s0    
ÿýÿ"

"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�}dg|gdœ | g ¡}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‰  ©)rV   Ú2)rW   r¢  )r8   Ú1)r8   r¢  rŠ  r‹  Tr6   r   ©r+   r%   )	r  rŒ  r   r   r…   r9   r‘  r8  r    )r’  r<   Úunobserved_catsÚdf_grpr   rK  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�}dg|gdœ | g ¡}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‹  r6   r   r¤  )r  rŒ  r   r   r…   r9   r‘  r8  rš  r   r†   r'  Zisnullr"   )	r’  r7   r“  r<   r¥  r¦  r   rK  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 }t ||¡ d S )N)rh   rƒ   r2   rE   rÌ   )rC   rA   rC   rA   rÙ   r{   r   ri   rH   r´   r}   T)rÛ   r‚   r)   )	r   rŒ   r�   r   rÝ   r9   rÆ   r‡   rŽ   )rC   r<   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 )Nrw   )r   rE   rE   rF   rF   )r   r   r   r   rE   )Úidrâ   rD  rª  râ   rD  r<  rd   rM   )r   r   rÜ   r9   rÆ   r   r‡   rˆ   )r9  Zexpected_valuesr<   r   r    r   r   r   Ú$test_groupby_agg_categorical_columnsÖ  s    
ýÿúÿr«  c                  C   sx   t dtg d¢g d¢d�iƒ} t dddgiddgd�}|  g d¢¡ tj¡}t ||¡ |  g d¢¡ ¡ }t ||¡ d S )	NrV   rW  rÊ   rò   rF   rE   rM   rX  )r   r   r9   rÆ   r   r,   r‡   rˆ   ©r<   r    r   r   r   r   Útest_groupby_agg_non_numericë  s    r­  r9  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Í  r@   rï   r÷   r  rV   rW   rd   ©r    rL   rø   )
r   r   rÍ   Z
as_orderedr9   r8  r   rø   r‡   rŽ   )r9  r<   Z
df_groupedr   r    r   r   r   Ú;test_groupy_first_returned_categorical_instead_of_dataframeö  s     ÿr¯  c                  C   sz   t  ddg¡} d| j_tg d¢tg d¢t| ƒd�dœƒ}tdd	d
gitddgdd�d�}|jddd� 	¡ }t
 ||¡ d S )NrE   rF   F)rE   rG   rH   rY   rË   rò   rI   r   rÃ   g      @r@   rd   r°   ©r‚   )r   r  ÚflagsZ	writeabler   r   r   r   r9   r)   r‡   rˆ   )r=   r<   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�|_|  ddg¡ ¡  	¡ }t
 ||¡ d S )N)ÚsmallÚlarger´  r´  r  r´  r´  r  )r8   rV   rV   r8   rV   r8   rV   r8   )r{   r|   r{   rï   )Ztinyr³  r  r´  Try   r   )rV   r8   rE   rG   rF   r|   r    rs   )r   r   rL   rø   )r   r‹   rÍ   Zset_categoriesZrename_axisr   r\   r9   r.   r  r‡   rˆ   r¬  r   r   r   Ú#test_sorted_missing_category_values  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)rE   rE   rF   rG   rï   Úcol_catró   rd   r®  r&   )r   r‹   r9   r¶  r&   r   r   rø   r‡   rŽ   rÆ   Úto_framerˆ   rB  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)rE   rE   rE   rE   rÓ   rˆ  gš™™™™™É?g333333Ó?)r{   r|   r{   Zfee)rV   rW   Únumerical_colÚ
object_colÚcategorical_colr»  rï   rV   rW   c                 S   s   |   ¡  ¡ S r]   )r  r0   r)  r   r   r   r`   d  ra   z7test_aggregate_categorical_with_isnan.<locals>.<lambda>rE   rF   r  r   r   )r¹  rº  r»  r°   )
r   r   r†   r‹   r9   rÆ   r   r½   r‡   rˆ   r¾   r   r   r   Ú%test_aggregate_categorical_with_isnanV  s&    ûÿ
ýúr¼  c                  C   sª   t g d¢g d¢dœƒ} tjg d¢dd�}| d  |¡| d< |  d¡d  t¡| d	< |  ¡ }t g d¢g d¢g d
¢dœƒ}|d  |¡|d< |d	  |¡|d	< t 	||¡ d S )N)rE   rE   rE   rF   rF   rG   )ÚWaitingÚOnTheWayÚ	Deliveredr½  r¾  r½  )Ú
package_idÚstatus)r½  r¾  r¿  Tr
   rÁ  rÀ  Úlast_status)r¿  r¿  r¿  r¾  r¾  r½  )rÀ  rÁ  rÂ  )
r   rŒ   ZCategoricalDtyper‹   r9   r‰   r(   rŠ   r‡   rˆ   )r<   Zdelivery_status_typer   r    r   r   r   Útest_categorical_transformq  s(    þÿÿöÿrÃ  )r9  r7   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   rE   rE   )r   rE   rE   r   rÊ   r   rE   r   r@   r   rA   rd   )r&   r'   r6   )r   r   r   r   r   r   ÚNaNr  r‹   rö   r9   r8  r‡   rŽ   )r9  r7   rÍ   rÏ   r<   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·  r  r‹   rö   r9   r8  r‡   rˆ   )r9  r7   rÍ   rÏ   r<   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�}|j}tjd	d
gdd�tjdgdd�tjg dd�dœ}| ¡ | ¡ kszJ ‚| ¡ D ]}t 	|| || ¡ q‚d S )N)r@   r@   r   rÊ   rò   rG   )rà   r1  rà   Fr°  r   rE   Zintpr÷   rF   )r@   r   rA   )
r   r   r´   r9   Úindicesr   r  r  r‡   r=  )r<   r§   r   r    rà   r   r   r   Ú2test_groupby_categorical_indices_unused_categoriesØ  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ï   r@   rd   )rL   r    )	r   r‹   r8  r9   r   r   r   r‡   rŽ   )r9  r<   r   r    r   r   r   Ú1test_groupby_last_first_preserve_categoricaldtypeì  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 )NrE   rF   rh   r"  rÊ   rï   rI   r÷   r   r@   Tr6   rA   rd   r¼   )
r   r‹   r9   r,   r   r   r½   r   r‡   rŽ   rB  r   r   r   Ú)test_groupby_categorical_observed_nuniqueø  s    ÿûrÌ  )\r   Únumpyr   r  ZpandasrŒ   r   r   r   r   r   r   r	   Zpandas._testingZ_testingr‡   rÅ  r!   rš  r>   r®   r¶   r¿   r�  ZparametrizerÇ   rã   rê   rñ   rú   rû   rý   r   r  r	  r  r  r  r  r´   Úrenamer   r*  r-  r2  r:  r>  rC  rL  rT  rV  r[  r\  r`  r½   rd  r†   ZNaTrg  Zfixturerh  rn  rq  r   rs  rt  ry  Úfilterwarningsr|  r€  r•  rœ  r§  r¨  r©  r,   r$   r«  r­  r¯  r²  rµ  r¸  r¼  rÃ  rð   ÚboolrÇ  rÈ  rÊ  rË  rÌ  r   r   r   r   Ú<module>   sr  $	ã! 
%l '
$ùþ

8



üþ	
%:[ÿûþýÿþõþ



ýùÿó
ýú"ö
ýú"öäþ,
	
	

+
!þ

-5ÿÿ
