U
    `»{j±î  ã                   @   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 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ej d¡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(d0d1„ Z)ej d2d3gee*d4ƒƒd d5gd6d7gd8œfee*d4ƒƒ +d9d:„ ¡d7gd d6gd8œfee*d;ƒƒd d5gd6d7gd8œfg¡d<d=„ ƒZ,d>d?„ Z-d@dA„ Z.dBdC„ Z/ej dDdEdFdEgfdGdHdIgfdJdHdEgfdKdFdIgfg¡dLdM„ ƒZ0dNdO„ Z1dPdQ„ Z2dRdS„ Z3dTdU„ Z4dVdW„ Z5dXdY„ Z6dZd[„ Z7d\d]„ Z8ej d^dee
j9ed6d6d7gd_d`�d6d7d7ggdadbgdc�d6d7d5gddde�fdeed6d6d7gd_d`�d6d7d7gd6d7d5gdfœƒfg¡dgdh„ ƒZ:ej didej;ej<g¡djdk„ ƒZ=ej>dldm„ ƒZ?ej dndodpg¡dqdr„ ƒZ@ej dndodpg¡ej d$ddg¡dsdt„ ƒƒZAej dude
 9e	dvgd4 dwgd4  d_dxdy�e	dzdzd{d{dzdzd|d|gd_d}dy�e	dJdKgd4 ƒg¡d6d6d5d5d7d7d4d4gfde
jBedwdvgdd~�edzd|d{gdd~�e	dJdKgƒgdxd}dgdc�d7d7d4d4ej;ej;d6d6ej;ej;d5d5gfde
jBedwdvgdd~�edzd|d{gdd~�e	dJdKgƒgdxd}dgdc�d7d7d4d4ej;ej;d6d6ej;ej;d5d5gfg¡dd€„ ƒZCd�d‚„ ZDej dƒd6d d gd d d gg¡d„d…„ ƒZEej d†¡d‡dˆ„ ƒZFd‰dŠ„ ZGd‹dŒ„ ZHd�dŽ„ ZId�d�„ ZJej d$ddg¡d‘d’„ ƒZKd“d”„ ZLej d•ejMd6d6d7gfejNd6d7d7gfg¡d–d—„ ƒZOd˜d™„ ZPej dšdEdGg¡d›dœ„ ƒZQd�dž„ ZRdŸd „ ZSd¡d¢„ ZTd£d¤„ ZUd¥d¦„ ZVej dšdEdGg¡eWeXd§œd¨d©„ƒZYej dšdEdGg¡eWeXd§œdªd«„ƒZZd¬d­„ Z[ej dšdEdGg¡d®d¯„ ƒZ\d°d±„ Z]d²d³„ Z^dS )´é    )ÚdatetimeN)ÚCategoricalÚCategoricalIndexÚ	DataFrameÚIndexÚ
MultiIndexÚSeriesÚqcut)Úget_groupby_method_argsc                 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   úd/var/www/html/bwave/python/venv/lib/python3.8/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ÚlastÚ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>t‚d S )Né   c                 S   s   |   ¡ |  ¡ |  ¡ |  ¡ dœS )N©r,   r*   r%   r+   r5   )Úgroupr   r   r   Ú	get_statsI   s
    üz2test_apply_use_categorical_name.<locals>.get_statsF©Úobservedr   ÚC)r	   r:   ÚgroupbyÚDÚapplyr!   r   ÚAssertionError)ÚdfÚcatsr7   r   r   r   r   Útest_apply_use_categorical_nameF   s    rA   c               
   C   s¨  t dddddddddg	ddddgdd�} tddddddd	d
dg	| dœƒ}ttdƒddd�}tdddd
tjgi|d�}|jddd� ¡ }t 	||¡ t ddddgdddgdd�}t ddddgdddgdd�}t||ddd	d
gdœƒ}|jddd�}tdddgddd�}	tdt
d	ddg|	d�iƒ}d}
tjt|
d�� | ¡ }W 5 Q R X 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dd&d'giƒ}tj|jdd(d)d*d+g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/�� | d0d!„ ¡}W 5 Q R X t 	||dg ¡ t d ¡�: | d1d!„ ¡}| t¡}| tjj¡}| d2d!„ ¡}W 5 Q R X 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dd&d'd4giƒ}tj|jd5dd(d)d*d+gd,�}|jj|dd� t¡}t ||d ¡ t |jj|dd� d6d!„ ¡|d ¡ t 	|j|dd� t¡|dg ¡ t 	|j|dd� d7d!„ ¡|dg ¡ tdddddgiƒ}tj|jdddd	d
gt tdƒƒd8�}|j|dd� t ¡}t|j!j"|j!j#d9�}t
ddddg|d�}d|j_$t ||¡ d:d;d<d=g}tj%j&dd
d>d?�}t j'||dd9�} ttj% (d>d
¡ƒ}|j| dd� ¡ }|jt )| ¡dd� ¡ }t|| j"dd�}	| *|	¡}t 	||¡ |j| dd�}| +¡ }| j, -¡ }t )| ¡ .|¡}| .|¡}t |dd:d;d<d=gd@�}|j|dddA� +¡ }t 	||¡ t j't /d
¡ 0dB¡|dd9�}t|ƒ}t 1| 2¡ j 3d¡|¡ tdCdDdEdFdGdHdIdJgd
 ƒ}t 1| 2¡ j 3d¡|¡ d S )KNr   ÚbÚcÚdTr   é   é   é   r4   é   ©r   rB   Úabcd©Únamer   ©r!   Fr8   ÚzÚy©ÚAÚBÚvaluesrQ   rS   é   r   ú!The default value of numeric_only©ÚmatchzJohn P. Doez	Jane DoveZ	person_idÚperson_name©Úcolumnsc                 S   s   | S ©Nr   ©Úxr   r   r   Ú<lambda>x   ó    ztest_basic.<locals>.<lambda>c                 S   s   |   d¡jd S )NrX   r   )Údrop_duplicatesÚilocr\   r   r   r   r      s    ztest_basic.<locals>.f©rL   Úobjecté   é   é
   é   é   é(   )Úbinsc                 S   s
   t  | ¡S r[   ©r   r2   ©Zxsr   r   r   r^   ‘   r_   z
scalar max©rW   Zcheck_stacklevelc                 S   s
   t  | ¡S r[   ©r   r*   rl   r   r   r   r^   š   r_   c                 S   s   t j| dd�S )Nr   ©Zaxisrn   rl   r   r   r   r^   ž   r_   c                 S   s   t j | ¡S r[   )r   ÚmaximumÚreducerl   r   r   r   r^   ¡   r_   )Zcheck_dtypeéûÿÿÿiöÿÿÿc                 S   s
   t  | ¡S r[   rk   rl   r   r   r   r^   ³   r_   c                 S   s
   t  | ¡S r[   rk   rl   r   r   r   r^   ·   r_   )Úlabels©r   ÚfooÚbarÚbazÚquxéd   ©r0   )r   r   ©Úsortr9   é   r%   r+   r1   r,   ú25%ú50%ú75%r*   )4r   r   r   Úlistr   Únanr;   r+   ÚtmÚassert_frame_equalr   Úassert_produces_warningÚFutureWarningr2   rX   Ú	transformr`   ra   r=   Úcopyr   r!   ÚastypeÚpdÚcutr   Úassert_series_equalr*   rp   rq   Úfilterr#   r   rS   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_idxÚmsgr]   Úgr   rC   ZgbcÚresult2Zresult3Zresult4Zresult5Úlevelsr“   ÚgroupedÚdesc_resultÚidxÚ
ord_labelsÚord_dataZexp_catsÚexpcÚexpr   r   r   Ú
test_basicU   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   rB   rf   r   rH   rE   ZIndex1ZIndex2)r£   r“   r   ©rš   r!   ©Úlevelr9   é   )
r   r   r   r   r   Úranger;   Ú	get_grouprƒ   r„   )r9   r?   r¡   rœ   r   r   r   r   Útest_level_get_groupé   s&    ýþýþ
r³   c                  C   sÚ   t dgd dgd  dddgd t d¡d	œƒ} t| jdddgd
d�| _|  d¡d  ¡ }|jdd
d�}ddddddg}t|dddgd
d�}ddddddgt|ƒg}t	j
|ddgd�}tdgd |dd�}t ||¡ d S )NrQ   é   rR   ÚhighZmedÚlowr4   g      (@)r6   ÚdoseZoutcomesTr   r6   r·   r   )r¯   Zsort_remainingr   rF   ©r!   rL   )r   r   r   r   r·   r;   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   s$  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dddg|dgd�}t	j
tddd�� | dd„ ¡}W 5 Q R X t	 ||¡ | ¡ }t	 ||¡ | tj¡}t	 ||¡ tj||gdd	gd�}td|d�}| dd„ ¡}t	 ||¡ d S )NÚabcrt   Zaaar   rB   r   )ÚmissingÚdenserS   r½   r¾   Tr8   r   r   rE   ç       @rS   ©r!   rZ   zSelect only validFrm   c                 S   s
   t  | ¡S r[   )r   r+   r\   r   r   r   r^   0  r_   ztest_apply.<locals>.<lambda>rM   c                 S   s   dS ©NrE   r   r\   r   r   r   r^   <  r_   )r   r�   r   r   r   r   r;   r   r¹   rƒ   r…   r†   r=   r„   r+   Úaggr   rŒ   )	r   r¾   r½   rS   r?   r¤   r¦   rœ   r   r   r   r   Ú
test_apply  s,      ÿrÃ   z.ignore:.*value of numeric_only.*:FutureWarningc              	   C   s”  t ddddgdddgdd�}t ddddgdddgdd�}t||d	d
ddgdœƒ}ddgd
 |d< |jdddg| d�}tj||ddgd
 gdddgd�}tdtd	d
ddg|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d	d
ddgi|d�}| ¡ }| �sRt|||gt	dƒdd�}t
 ||¡ t ddddgdddgdd�d	d	d
d
gddddg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d)d*d%d+gt ddddgdddgdd�d	d
d	d
gd,œƒ d d'g¡}| �s–t||jjd	d
ggd d'gƒ}t
 ||¡ d-D ]<}|\}}| |¡}||j|k|j|k@  }t
 ||¡ �q¦dd.dd.dd	d	gddddd/d0d1gddd2ddddgd3œ}t|ƒ}t |d t ddd¡¡}||d4< |jd4d5gd6| d7�}| d(¡}|jd4d5gd| d7�}| d(¡ ¡ }t
 ||¡ d S )8Nr   rB   rN   Tr   rC   rD   rO   rE   rF   rG   r4   rP   ru   rv   r:   rQ   rR   r8   r   rS   rM   ÚABCr   r   ÚABrf   rg   rh   ri   )ÚcatÚintsÚvalrÆ   Úabr¼   )rL   r   r   g      ø?ç      4@)rÇ   rÈ   rÇ   r+   ç      $@g      >@g      D@)rÈ   rÆ   rÇ   ))r   rE   )rB   rF   )rB   rE   )r   rF   r}   é2   é<   éF   Úe©ru   rv   rw   r±   rw   F©Úas_indexr9   )r   r   r;   r   r¹   r   r   r2   r"   r�   rƒ   r„   r+   r   r   rÂ   Ú	set_indexrÆ   rS   r²   rÇ   rŠ   r‹   r   ÚlinspaceÚreset_index)r9   r�   rž   r?   rŸ   r›   rœ   r   rD   Zgroups_single_keyr!   Úgroups_double_keyÚkeyrC   ÚirÆ   ÚgroupsZgroups2r   r   r   Útest_observed@  sÀ    	 ÿ    ÿ   ÿ
  ÿ

û   ÿ   ÿ



  ÿ
ûÿø	  ÿ
ý
rÚ   c                 C   sØ   ddddgddddgdddd	gd
œ}t |ƒ}t |d ddddg¡}d|_|j|dg| d�}tj|ddddggddgd�}t ddddgddddgdœ|d�}| s¾t||jddddggddgƒ}| 	d¡}t
 ||¡ d S )NrG   r4   rH   rE   rF   rf   ry   éÈ   é"   )ÚC1ÚC2ÚC3rÝ   r´   rÆ   rÞ   r8   r   g      @g      @g      @rË   g      Y@g      i@g      A@)rÝ   rß   rM   r+   )r   rŠ   r‹   rL   r;   r   r¹   r"   rS   rÂ   rƒ   r„   )r9   rD   r?   rS   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dd	d
gdd�}| ¡ }|j	j
d  ¡ | j ¡ ksŒt‚|j	j
d  ¡ | j ¡ ksªt‚|j	j
d  ¡ | j ¡ ksÈt‚d S )Nr   éÿ   i0u  rz   é'  )rÆ   Úint_idÚother_idru   ÚcategoryrÆ   rã   rä   Tr8   rE   rF   )r   r   rŽ   r�   rÆ   r‰   Ústrr;   r%   r!   r£   r.   r>   rã   rä   )r?   r¤   r   r   r   r   Útest_observed_perfÁ  s    üÿrç   c                 C   s    t dddgdddgd�}t|dddgdœƒ}|jd	| d
�}|j}| rft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 )Nr   rC   rB   ©r   rE   rF   rG   ©rÆ   ÚvalsrÆ   r8   r   Úint64©Údtype)r   rC   ©r   rB   rC   )r   r   r;   rÙ   r   rƒ   Úassert_dict_equal)r9   rÆ   r?   r¡   r   rœ   r   r   r   Útest_observed_groupsÖ  s    "
ýrð   c                 C   s�   t tdtjdgdddgd�dddgdœƒ}|jd	| d
�}|j}| rXd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   rB   rD   rè   rE   rF   rG   ré   rÆ   r8   r   rë   rì   )r   rB   rD   )	r   r   r   r‚   r;   rÙ   r   rƒ   rï   )r9   r?   r¡   r   rœ   r   r   r   Útest_observed_groups_with_nanë  s    þÿ

ýrñ   c                  C   s˜   t dtjtjgdddgd�} tdddgƒ}t| |dœƒ}|jd	d
d�d  d¡}t dddgdddgd�}tdtjtjg|dd�}d	|j_t	 
||¡ d S )Nr   rB   rC   rè   rE   rF   rG   )rÆ   ÚserrÆ   Fr8   rò   r   r¸   )r   r   r‚   r   r   r;   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dddgd�}tddddgƒ}t||d	œƒ}|jd
| d� ¡  ¡ }| rxtt dgdddgd�dgd	œƒ}n,tt dddgdddgd�dtjtjgd	œƒ}t 	||¡ d S )Nr   rB   rC   rè   rE   rF   rG   r4   )Ús1Ús2rô   r8   )
r   r   r‚   r   r   r;   r'   rÕ   rƒ   r„   )r9   rô   rõ   r?   r   rœ   r   r   r   Ú#test_dataframe_categorical_with_nan  s    ÿþÿrö   r9   r|   c           	      C   sÀ   t ddddddgddddg| d�}tddddddgƒ}t||dœƒ}|jd||d�d	  d
¡}t|jjdd�}t|jƒ}|sˆd|| ¡ < t||kƒs¼d| › d|› d|› d|› �}ds¼t	|ƒ‚d S )NrD   r   rB   r½   r   )ÚlabelrÈ   r÷   )r9   r|   rÈ   r'   rc   rì   zDLabels and aggregation results not consistently sorted
for (ordered=z, observed=z, sort=z
)
Result:
F)
r   r   r   r;   Ú	aggregater!   ÚarrayÚisnar#   r>   )	r   r9   r|   r÷   rÈ   r?   r   Zaggrr    r   r   r   Ú0test_dataframe_categorical_ordered_observed_sort#  s     	
ý
ÿ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ddddddddgd ƒ}t | ¡ j d¡|¡ d S )Nz
2014-01-01r4   )Úperiodsr   ry   rz   Trt   Fr8   r   r}   r%   r+   r1   r,   r~   r   r€   r*   rE   )rŠ   Ú
date_ranger   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¦   r§   r¨   r©   rª   r   r   r   Útest_datetimeF  s<    
  ÿ



 
ÿrþ   c                  C   s(  t j d¡} ddddg}| 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ddddg|d
d�dd�|_t ||¡ |jddd� ¡ }|t
dƒ j|jdd� ¡ }ttjddddg|d
d�dd�|_t ||¡ d S )Ni90  ru   rv   rw   rx   r   r4   rg   rz   Trt   éÿÿÿÿrJ   rY   r@   Fr®   r8   rE   rF   rG   rb   )r   rŽ   ZRandomStater�   r   r   r   r–   r   Zreshaper�   rÓ   r;   r2   r“   r   r!   rƒ   r„   )Úsr£   r“   r@   r?   r   rœ   r   r   r   Útest_categorical_indexm  s(    & ÿ ÿr  c                  C   sz   t ddddgddddgdd�} ttj dd¡| d	�}| d
dddgd ¡ ¡ }t | 	¡ j
| ¡ t | 	¡ j
j| j¡ d S )Nrx   ru   rw   rv   Tr   rg   r4   rY   rE   rF   rG   rH   )r   r   r   rŽ   r�   r;   r’   rƒ   r—   r˜   rZ   Úassert_categorical_equalrS   )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 )Nrf   rQ   rR   rH   ZXYXXYrF   )r   ÚmediumÚartistr  rå   r  Fr8   r   ©r   rL   r´   r4   ÚXÚYrb   rM   )r   r±   r�   r‰   r;   r%   Úunstackr’   r   rƒ   r—   rZ   r  rS   r   r   rŒ   )r?   Zgcatr   Zexp_columnsrœ   r   r   r   Útest_unstack_categorical•  s    ÿr
  c                  C   s^   t tjtjddddddddg
ƒ} t |  ¡ jd¡}tjt	dd�� |  
|¡ ¡  W 5 Q R X d S )NrE   rF   rG   r4   z$Grouper and axis must be same lengthrV   )r   r   r‚   rŠ   r‹   ÚdropnarS   ÚpytestÚraisesÚ
ValueErrorr;   r+   )Úseriesrj   r   r   r   Útest_bins_unequal_len¨  s     r  r  rš   r4   rG   rE   rF   ©rQ   rR   c                 C   s   | d S rÁ   r   )r¦   r   r   r   r^   ¹  r_   r^   rT   c                 C   sD   |   ttdƒdd�¡}| t¡}t|t| ¡ ƒd�}t ||¡ d S )NZABBArå   rì   rM   )r;   r   r�   rø   r   Úkeysrƒ   rŒ   )r  rš   r;   r   rœ   r   r   r   Útest_categorical_series²  s    
r  c                     sž  t tdddgdddgƒdddgdddgd	œƒ‰ ˆ jd
dgddd� ¡ } t tddgˆ jjjd�ddgddgd	œd
ddg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	œd
ddgd�}t | |¡ tdddg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	œd
ddgd�}dD ]8}t	t
dƒ|d�ˆ _ˆ j|ddd� ¡ } t | |¡ �q`d S )NrE   rF   rG   rf   é   ée   éf   ég   )rÆ   rQ   rR   rÆ   rQ   FTrÑ   rè   éÍ   rR   rY   c                    s   ˆ j | df S )NrQ   )Úloc)Úr©r?   r   r   r^   Ý  r_   ztest_as_index.<locals>.<lambda>r¬   r   rB   rb   )Nr  rR   r¼   )r   r   r;   r2   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¼   rQ   ÚbaTr   r  Fr{   Úbac)	r�   r   r   r   rƒ   r—   r;   r'   r!   )r   r?   r!   r   Znosort_indexr   r   r   Útest_preserve_categories   s,     ÿ ÿ ÿ ÿr  c               
   C   s  t dddddgdddddg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 ]t}d}tjt|d��2 | j|d
d
d� 	¡ }| j|dd
d� 	¡  
¡ }W 5 Q R X |j|jd�}t ||¡ t ||¡ q”d S )NrE   rF   rf   é   r¬   é   rÜ   Zabaabr  Fr   T)rQ   rR   rÝ   rÞ   r¿   g      ð?g      9@rÊ   )rÝ   rÞ   rU   rV   )ÚbyrÒ   r9   rY   )r   r   r�   r   r‚   rƒ   r…   r†   r;   r+   rÕ   r   rZ   r„   )r?   Zexp_fullÚcolr    Zresult1r¢   rœ   r   r   r   Útest_preserve_categorical_dtype  s.    üÿ	

üÿÿr$  zfunc, valuesr'   Úsecondr(   ÚfourthÚthirdr,   r*   c                 C   s    t ddddgdd�}tddddg|d	œƒ}| d
¡}t|| ƒƒ }tddgt||jd�d	œƒ d
¡}t ||¡ | d
¡d }t|| ƒƒ }|d }t 	||¡ d S )Nr'   r%  r'  r&  Trt   rÿ   éþÿÿÿ)Úpayloadr#  r)  rì   r#  )
r   r   r;   Úgetattrr   rí   rÓ   rƒ   r„   rŒ   )ÚfuncrS   rC   r?   r¡   r   rœ   Zsgbr   r   r   Útest_preserve_on_ordered_ops9  s    
ÿþr,  c                  C   s’  t tj d¡ƒ} t dddddddddg	¡}tj|dddgdd�}| j|dd� ¡ }| j|dd� ¡ }t	|j
|j|jd	�|_
t ||¡ t ddddddd
d
d
g	¡}tj|dddd
gdd�}| j|dd� ¡ }| j|dd� ¡  |j¡}t	|j
|j|jd	�|_
t ||¡ tdddddddddg	ddddgdd	�}tddddddd
ddg	|dœƒ} | jddd� ¡ }|d j}t dddtjg¡}t ||¡ d S )Né	   r   rE   rF   Trt   Fr8   r   rG   r   rB   rC   rD   r4   rH   rI   )r   r   rŽ   r�   rù   r   r   r;   r+   r   r!   r   r   rƒ   rŒ   r   r   rS   r‚   Úassert_numpy_array_equal)rš   r“   r@   r   rª   r   r   r   Útest_categorical_no_compressU  s>      ÿ  ÿ
ý 
r/  c                  C   sd   t d gd tdddgƒdœƒ} |  d¡ ¡ d }ttg ddgd�tg ddd	�dd
�}t ||¡ d S )NrG   ÚtrainÚtestr  rQ   rR   rè   rc   ©rí   rL   r¸   )r   r   r;   r'   r   rƒ   rŒ   ©r?   r   rœ   r   r   r   Ú test_groupby_empty_with_categoryz  s    ýr4  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â   ry   c                 S   s   g | ]}|› d |d › �‘qS )z - ió  r   )Ú.0rØ   r   r   r   Ú
<listcomp>‘  s     ztest_sort.<locals>.<listcomp>iô  T)r"  Z	ascendingi)  F)Úrightrs   Zvalue_groupr8   c                 S   s   t |  ¡ d ƒS )Nr   )ÚfloatÚsplitr\   r   r   r   r^   š  r_   ztest_sort.<locals>.<lambda>)r×   rb   )r   r   rŽ   r�   r±   r   Zsort_valuesrŠ   r‹   r5  r;   r%   Úsortedr!   r   rL   rƒ   rŒ   )r?   rs   Z
cat_labelsÚresrª   r   r   r   Ú	test_sortˆ  s    
 
  ÿ
r=  c               
   C   sÈ  t dddgdddgdddgdd	d
gdddgdddgdddggdddgd�} t| d dd�| d< tddd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 ||¡ t| d dd�| d< tddddgdd�}t ddgddgd	d
gddggddg|d�}tddddgddddg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 )Nz	(7.5, 10]rf   r}   rg   z(2.5, 5]rH   rh   z(5, 7.5]r´   ri   r4   rÌ   z(0, 2.5]rE   rÍ   rT   rÎ   r±   ru   rv   rY   Trt   rK   )rZ   r!   Fr{   rb   ©r   rL   rÀ   )r   r   r   r;   r'   rƒ   r„   )r?   r!   Zexpected_sortr#  Úresult_sortZexpected_nosortÚresult_nosortr   r   r   Ú
test_sort2Ÿ  sj    ù	ö
  ÿ  ÿ
 ÿ  ÿ

ý  ÿrA  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ddddd	ddgdd
dddddgdœdddg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Û  rT   rE   rF   rH   rf   r}   r´   r4   rg   rh   ri   rÌ   rÍ   rÎ   )Údtru   rv   rB  ru   rv   rY   Trt   rK   )r   rL   r   Fr{   rb   r>  )	r   r   r   r   r!   rƒ   r„   r;   r'   )r?   r!   r?  r@  r#  r   r   r   Útest_sort_datetimelikeÙ  sž    






ù	õò



ü ÿ



ü ÿ   ÿ ÿ ÿ



ü ÿ



ü ÿ ÿ ÿrC  c                  C   s   t tdddgdddgd�dddgdœƒ} tdddgdd	�}| jdd
d�j ¡ }tdddg|dd	�}t ||¡ | jdd
d�jjdd�}tdddg|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 )Nr   rB   rC   rè   rE   rF   r  rQ   rb   Fr8   rG   r   rR   ©Z	min_count)r   r   r   r;   rR   r2   r   rƒ   rŒ   r   r‚   ©r?   Zexpected_idxr   rœ   r   r   r   Útest_empty_sum4  s     "ÿrF  c                  C   sä   t tdddgdddgd�dddgdœƒ} tdddgdd	�}| jdd
d�j ¡ }tdddg|dd	�}t ||¡ | jdd
d�jjdd�}tdddg|dd	�}t ||¡ | jdd
d�jjdd�}tddt	j
g|dd	�}t ||¡ d S )Nr   rB   rC   rè   rE   rF   r  rQ   rb   Fr8   rR   r   rD  )r   r   r   r;   rR   r/   r   rƒ   rŒ   r   r‚   rE  r   r   r   Útest_empty_prodP  s    "ÿrG  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d
ddgƒ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Úkey2rS   rI  rJ  r   rB   rC   r   rS   r   r4   r}   rH   r´   rF   rM   )r   r   r�   rŠ   rý   r   r   r;   r+   r   r   r‚   rƒ   r„   )r?   r   r¦   rœ   r   r   r   Ú,test_groupby_multiindex_categorical_datetimeh  s"    
ÿûÿ	þû$rK  zas_index, expectedrå   rì   r   rB   r   r]   )r!   rš   rL   ©r   rB   r]   c                 C   sV   t tdddgdd�dddgdddgdœƒ}|jddg| d	d
�d  ¡ }t ||¡ d S )NrE   rF   rå   rì   rG   rL  r   rB   TrÑ   r]   )r   r   r;   r2   rƒ   Úassert_equal)rÒ   rœ   r?   r   r   r   r   Ú,test_groupby_agg_observed_true_single_column�  s
    $ÿrN  r   c                 C   sZ   t ddddgddddgdd�}t d dddgddddgdd�}|jd| d�}t ||¡ d S )	Nr   rB   rC   rD   Fr   rE   r   )r   Úshiftrƒ   rM  )r   Úctrœ   r<  r   r   r   Ú
test_shift¥  s    
 
 ÿ
 
 ÿrQ  c                 C   s\   |   ¡ dd… }|d  d¡|d< |d  d¡|d< tddddgƒ|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
    Nr4   rQ   rå   rR   rE   rF   rG   r:   r<   ro   )rˆ   r‰   r   Zdrop)r?   Údf_catr   r   r   rR  ±  s    rR  Ú	operationrÂ   r=   c                 C   s�   t ddddg| d jdd�}t ddddg| d jdd�}t ||g¡}td	d
ddg|dd�}| jddgdd�d }t||ƒtƒ}t 	||¡ d S )Nru   rv   rQ   r2  ÚoneÚtwoÚthreerR   rE   rG   rF   r4   r:   ©rš   r!   rL   Tr8   )
r   rí   r   r¹   r   r;   r*  r2   rƒ   rŒ   )rR  rS  Zlev_aZlev_br!   rœ   r¤   r   r   r   r   Ú test_seriesgroupby_observed_trueÊ  s    rX  c                 C   s    t jtddgdd�tdddgdd�gdd	gd
� ¡ \}}tddtjdtjdg|dd�}|dkrl|jddd�}| jdd	g|d�d }t	||ƒt
ƒ}t ||¡ d S )Nrv   ru   Frt   rT  rV  rU  rQ   rR   r   rF   r4   rE   rG   r:   rW  rÂ   r   Zinfer)Zdowncastr8   )r   r   r   Z	sortlevelr   r   r‚   Zfillnar;   r*  r2   rƒ   rŒ   )rR  r9   rS  r!   Ú_rœ   r¤   r   r   r   r   Ú)test_seriesgroupby_observed_false_or_none×  s    þûrZ  zobserved, index, dataru   rv   rQ   r2  rT  rU  rV  rR   rt   c                 C   s>   t ||dd�}| jddg|d�d  dd„ ¡}t ||¡ d S )Nr:   rW  rQ   rR   r8   c                 S   s   |   ¡ |  ¡ dœS )N©r,   r*   r[  r\   r   r   r   r^     r_   z8test_seriesgroupby_observed_apply_dict.<locals>.<lambda>)r   r;   r=   rƒ   rŒ   )rR  r9   r!   rš   rœ   r   r   r   r   Ú&test_seriesgroupby_observed_apply_dictë  s
    .ÿr\  c                 C   s<   |   ddg¡d  ¡ }|   ddg¡ ¡ d }t ||¡ d S )NrQ   rR   r:   )r;   r+   rƒ   rŒ   )rR  rœ   r   r   r   r   Ú4test_groupby_categorical_series_dataframe_consistent   s    r]  Úcodec                 C   sr   t ddddgddddgd	d
ddgdœƒ}tj| tdƒd�}|j|dd� ¡ }|jj|dd� ¡ j}t ||¡ d S )NrE   rF   rG   r4   rÿ   r(  éýÿÿÿéüÿÿÿrH   r´   rT   r}   rî   r¼   rè   ro   r   )	r   r   r   r�   r;   r+   ÚTrƒ   r„   )r^  r?   rÆ   r   rœ   r   r   r   Útest_groupby_categorical_axis_1'  s
    (rb  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Gregrt   rE   rF   )ÚNameÚItemrc  rd  rY   r8   T)Zskipna)	r   r   rˆ   r;   rÂ   r2   rÕ   rƒ   r„   )r9   r   r?   rœ   r   r   r   r   Ú$test_groupby_cat_preserves_structure1  s    þ ÿÿre  c               	   C   sL   t ddddgtdƒdœƒ} tjtdd�� |  d¡ dd	„ ¡ W 5 Q R X d S )
Nr   rB   r4   ©r3   rÈ   z'vau'rV   r3   c                 S   s&   t | jd d g| jd d gdœƒS )Nrÿ   r3   Zvaurf  )r   ra   )Úrowsr   r   r   r^   H  s    ÿz/test_get_nonexistent_category.<locals>.<lambda>)r   r±   r  r  ÚKeyErrorr;   r=   r  r   r   r   Útest_get_nonexistent_categoryC  s
    
ÿri  c              	   C   sê   | dkrt  d¡ | dkr4t jjdd�}|j |¡ | dkr@tn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 }t|| ƒ}	tj|dd�� |	|Ž }
W 5 Q R X t|
ƒ|ksæt‚d S )NÚngroupúngroup is not truly a reductionr&   ú6TODO: implemented SeriesGroupBy.corrwith. See GH 32293©Úreasonr)   ÚAABBZABCDrè   rÅ   rF   çš™™™™™¹?r4   ©Úcat_1Úcat_2r5  r   rr  rs  r8   r5  úThe 'mad' method is deprecatedrV   )r  ÚskipÚmarkÚxfailÚnodeÚ
add_markerr†   r   r   r�   r
   r;   r*  rƒ   r…   r   r>   )Úreduction_funcr9   Úrequestrv  Úwarnr?   r    Zexpected_lengthÚseries_groupbyrÂ   r   r   r   r   Ú0test_series_groupby_on_2_categoricals_unobservedN  s*    
ÿýÿ

r~  c              	   C   sX  | dkrt  d¡ | dkr4t jjdd�}|j |¡ | dkr@tn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|| ƒ}tj|dd�� ||Ž }	W 5 Q R X t|  }
|D ]0}|	j| }t |
¡�rt |¡sø||
ksøt‚qø|
dk�rT| dk�rTt |	jtj¡�sTt‚d S )Nrj  rk  r&   rl  rm  r)   ro  rÄ   rè   rÅ   rF   rp  r4   rq  ZACÚBCÚCAZCBÚCCrr  rs  Fr8   r5  rt  rV   r   r2   )r  ru  rv  rw  rx  ry  r†   r   r   r�   Útupler
   r;   r*  rƒ   r…   Ú-_results_for_groupbys_with_missing_categoriesr  rŠ   rú   r>   r   Z
issubdtyperí   Úinteger)rz  r{  rv  r|  r?   Z
unobservedr    r}  rÂ   r   Zzero_or_nanr¦   rÈ   r   r   r   Ú?test_series_groupby_on_2_categoricals_unobserved_zeroes_or_nansm  s4    
ÿýÿ"


$r…  c              	   C   sÆ   | dkrt  d¡ | dkrtnd }tttdƒtdƒd�ttdƒtdƒd�d	d	d	d	gd
œƒ}ddddg}|jddgdd�}t| |ƒ}tj	|dd�� t
|| ƒ|Ž }W 5 Q R X |D ]}||jks®t‚q®d S )Nrj  ú2ngroup does not return the Categories on the indexr)   ro  rÄ   rè   Ú1111Ú12rp  rq  ©rQ   Ú2©rR   rŠ  ©r:   Ú1©r:   rŠ  rr  rs  Tr8   rt  rV   )r  ru  r†   r   r   r�   r;   r
   rƒ   r…   r*  r!   r>   )rz  r|  r?   Ú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¡ | dkrtnd }tttdƒtdƒd�ttdƒtdƒd�d	d	d	d	gd
œƒ}ddddg}|jddg|d�}t| |ƒ}tj	|dd�� t
|| ƒ|Ž }W 5 Q R X t|  }|tjkrØ|j|  ¡  ¡  ¡ sòt‚n|j| |k ¡  ¡ sòt‚d S )Nrj  r†  r)   ro  rÄ   rè   r‡  rˆ  rp  rq  r‰  r‹  rŒ  rŽ  rr  rs  r8   rt  rV   )r  ru  r†   r   r   r�   r;   r
   rƒ   r…   r*  rƒ  r   r‚   r  Zisnullr#   r>   )	rz  r9   r|  r?   r�  r�  r    r<  rœ   r   r   r   Ú?test_dataframe_groupby_on_2_categoricals_when_observed_is_false¶  s$    	

ýÿ

r’  c                  C   sŽ   ddddgddddgdd	dd	gd
œ} t | ƒ}t |d t ddd¡¡}||d< |jddgddd�}|d  d¡}| d¡d }t ||¡ d S )Nrf   r}   r4   rE   rg   rh   ri   rD   rC   rÐ   ru   r   rH   r±   rw   T)rÒ   r|   r+   )	r   rŠ   r‹   r   rÔ   r;   rÂ   rƒ   rŒ   )rD   r?   rÆ   rÙ   r   rœ   r   r   r   Ú3test_series_groupby_categorical_aggregation_getitemÚ  s    $r“  zfunc, expected_valuesc              	   C   sv   t dddddgdddddgtdddddgƒdœƒ d¡}| d¡ | ¡}t d	|itdddgdd
�d�}t ||¡ d S )Nr   rE   rF   rG   r4   )ÚidrÙ   r5  r”  rÙ   r5  rb   rM   )r   r   rÓ   r;   rÂ   r   rƒ   r„   )r+  Zexpected_valuesr?   r   rœ   r   r   r   Ú$test_groupby_agg_categorical_columnsæ  s    ýÿú ÿr•  c                  C   s€   t dtdddgdddgd�iƒ} t dddgiddgd�}|  dddg¡ tj¡}t ||¡ |  dddg¡ ¡ }t ||¡ d S )	NrQ   r   rB   rC   rè   rF   rE   rM   )r   r   r;   rÂ   r   r.   rƒ   r„   ©r?   rœ   r   r   r   r   Útest_groupby_agg_non_numericû  s     r—  r+  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Í  rB   rå   rì   r  rQ   rR   rb   ©r!   rL   rí   )
r   r   rÆ   Z
as_orderedr;   r*  r   rí   rƒ   rŒ   )r+  r?   Z
df_groupedr   rœ   r   r   r   Ú<test_groupby_first_returned_categorical_instead_of_dataframe  s        ÿr™  c                  C   s‚   t  ddg¡} d| j_tddddgtddddg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   FrG   rH   rT   rè   rI   r   r¿   g      @rB   rb   r­   ©r|   )r   rù   ÚflagsZ	writeabler   r   r   r   r;   r+   rƒ   r„   )r@   r?   rœ   r   r   r   r   Útest_read_only_category_no_sort  s    $ÿ
 ÿrœ  c               
   C   sÖ   t ddddddddgddddddddgdœƒ} | d  d¡jjd	dddgd
d�| d< t dddœdddœdddœdddœdœƒ}|jddd�}td	dddgd	dddgd
ddd�|_|  ddg¡ ¡  	¡ }t
 ||¡ d S )NÚsmallÚlarger  r:   rQ   )ru   rv   ru   rå   ÚtinyTrt   r   )rQ   r:   rE   rG   rF   )rŸ  r�  r  rž  rv   r!   ro   )r   r   rL   rí   )r   r‰   rÆ   Zset_categoriesZrename_axisr   rZ   r;   r0   r	  rƒ   r„   r–  r   r   r   Ú#test_sorted_missing_category_values#  sJ    ø
õÿÿ
 þÿüÿ

ûr   c                  C   s˜   t dddddgiƒ} | d  d¡| d< |  d¡j ¡ }tdddgtdddgdd�d| d jd�}t 	||¡ |  d¡ 
dd	i¡}| ¡ }t ||¡ d S )
NZcol_numrE   rF   rG   rå   Úcol_catrb   r˜  r'   )r   r‰   r;   r¡  r'   r   r   rí   rƒ   rŒ   rÂ   Úto_framer„   r3  r   r   r   Ú1test_agg_cython_category_not_implemented_fallbackP  s    ür£  c               	   C   s®   t ddddgddddgddtjdgddddgddddg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 )NrE   rF   rp  gš™™™™™É?g333333Ó?ru   rv   Zfee)rQ   rR   Únumerical_colÚ
object_colÚcategorical_colr¦  rå   rQ   rR   c                 S   s   |   ¡  ¡ S r[   )rú   r2   r  r   r   r   r^   t  r_   z7test_aggregate_categorical_with_isnan.<locals>.<lambda>r  r   r   )r¤  r¥  r¦  r­   )
r   r   r‚   r‰   r;   rÂ   r   r¹   rƒ   r„   rº   r   r   r   Ú%test_aggregate_categorical_with_isnanf  s&    



ûÿ
ýúr§  c               	   C   sÔ   t ddddddgddddddgdœƒ} tjdddgdd	�}| d
  |¡| d
< |  d¡d
  t¡| d< |  ¡ }t ddddddgddddddgddddddgdœƒ}|d
  |¡|d
< |d  |¡|d< t 	||¡ d S )NrE   rF   rG   ZWaitingZOnTheWayZ	Delivered)Ú
package_idÚstatusTr   r©  r¨  Úlast_status)r¨  r©  rª  )
r   rŠ   ÚCategoricalDtyper‰   r;   r‡   r*   rˆ   rƒ   r„   )r?   Zdelivery_status_typer   rœ   r   r   r   Útest_categorical_transform�  sN    úþÿ ÿú	úöÿr¬  )r+  r9   c                 C   sÒ   t ddddgƒ}ddddg}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 ©Nr   rE   rî   r   rB   r   rC   rb   )r'   r(   r8   )r   r   r   r   r   r   ÚNaNr  r‰   rë   r;   r*  rƒ   rŒ   )r+  r9   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 ddddgƒ}ddddg}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ë   r;   r*  rƒ   r„   )r+  r9   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dddgdddg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s~t‚| ¡ D ]}t	 
|| || ¡ q†d S )NrB   r   rC   rè   rG   )r×   r#  r×   Frš  r   rE   Zintprì   rF   )rB   r   rC   )r   r   r±   r;   Úindicesr   rù   r  r>   rƒ   r.  )r?   r¤   r   rœ   r×   r   r   r   Ú2test_groupby_categorical_indices_unused_categoriesè  s    þÿýr³  c                 C   sp   t ddddgiƒ}|d  d¡|d< t| d¡d | ƒƒ }ttdddgƒdtdddgdd�d�}t ||¡ d S )	Nr   rE   rF   rG   rå   rB   rb   )rL   r!   )	r   r‰   r*  r;   r   r   r   rƒ   rŒ   )r+  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   rf   r  rî   rå   rI   rì   r   rB   Tr8   rC   rb   r¸   )
r   r‰   r;   r.   r   r   r¹   r   rƒ   rŒ   r3  r   r   r   Ú)test_groupby_categorical_observed_nunique  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   rE   rF   ÚgrpÚdescriptionrY   rb   r˜  )
rŠ   r«  r   r‰   r;   r*   r   r   rƒ   rŒ   )rí   r?   r   rœ   r   r   r   Ú,test_groupby_categorical_aggregate_functions  s     ÿþür¹  )_r   Únumpyr   r  ZpandasrŠ   r   r   r   r   r   r   r	   Zpandas._testingZ_testingrƒ   Zpandas.tests.groupbyr
   r®  r"   rƒ  rA   r«   r³   r»   rv  ZparametrizerÃ   ÚfilterwarningsrÚ   rà   rç   rð   rñ   ró   rö   rû   rþ   r  r  r
  r  r±   Úrenamer  r  r  r$  r,  r/  r4  r=  rA  rC  rF  rG  rK  r¹   rN  r‚   ZNaTrQ  ZfixturerR  rX  rZ  r   r\  r]  rb  re  ri  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   r   Ú<module>   s~  $	ã! 
%

l '
$ùþ

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