o
    �¨Êh" ã                   @   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 d dlmZ ejfdd„Zi dej“d	ej“d
d “dej“dej“dej“dej“dej“dej“dej“dej“dej“dej“dd “dej“dej“d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!ej d/d0g d1¢eg d2¢d0d3�fd0d4gg d5¢eg d2¢d0d3�e	g d6¢ƒgfd0d7gg d8¢eg d2¢d0d3�eg d2¢d0d3�gfg¡ej d9d#d$g¡d:d;„ ƒƒZ"d<d=„ Z#d>d?„ Z$d@dA„ Z%ej d"d#d$g¡ej dBd#d$g¡ej dCd#d$g¡dDdE„ ƒƒƒZ&dFdG„ Z'dHdI„ Z(dJdK„ Z)dLdM„ Z*dNdO„ Z+ej dPdQgee,dRƒƒd dSgdTdUgdVœfee,dRƒƒ -dWdX„ ¡dUgd dTgdVœfee,dYƒƒd dSgdTdUgdVœfg¡dZd[„ ƒZ.d\d]„ Z/d^d_„ Z0d`da„ Z1ej dbddcdgfddddegfddddgfddcdegfg¡dfdg„ ƒZ2dhdi„ Z3djdk„ Z4dldm„ Z5ej d"d#d$g¡dndo„ ƒZ6ej d"d#d$g¡dpdq„ ƒZ7drds„ Z8dtdu„ Z9dvdw„ Z:ej dxd#ee
j;eg dy¢dzd{�g d|¢gd0d4gd}�g d2¢d~d�fd$eeg dy¢dzd{�g d|¢g d2¢d€œƒfg¡d�d‚„ ƒZ<ej dƒdejej=g¡d„d…„ ƒZ>ej?d†d‡„ ƒZ@ej dˆd‰dŠg¡d‹dŒ„ ƒZAej dˆd‰dŠg¡ej dBd$dg¡d�dŽ„ ƒƒZBej d�d#e
 ;e	d�gdR d‘gdR  dzd’d“�e	g d”¢dzd•d“�e	ddgdR ƒg¡g d–¢fd$e
jCed�d‘gd$d—�eg d˜¢d$d—�e	ddgƒgg d™¢d}�dUdUdRdRejejdTdTejejdSdSgfde
jCed�d‘gd$d—�eg d˜¢d$d—�e	ddgƒgg d™¢d}�dUdUdRdRejejdTdTejejdSdSgfg¡dšd›„ ƒZDdœd�„ ZEej džg dŸ¢g d ¢g¡d¡d¢„ ƒZFd£d¤„ ZGd¥d¦„ ZHd§d¨„ ZId©dª„ ZJd«d¬„ ZKej dBd$dg¡d­d®„ ƒZLd¯d°„ ZMej d±ejNg dy¢fejOg d|¢fg¡d²d³„ ƒZPd´dµ„ ZQej d¶ddg¡d·d¸„ ƒZRd¹dº„ ZSd»d¼„ ZTd½d¾„ ZUd¿dÀ„ ZVdÁdÂ„ ZWej d¶ddg¡d¶eXdBeYfdÃdÄ„ƒZZej d¶ddg¡d¶eXdBeYfdÅdÆ„ƒZ[dÇdÈ„ Z\ej d¶ddg¡dÉdÊ„ ƒZ]dËdÌ„ Z^dÍdÎ„ Z_dÏdÐ„ Z`ej dÑg dÒ¢¡ej d"d#d$g¡dÓdÔ„ ƒƒZaej dÑdÕdÖg¡ej d"d#d$g¡d×dØ„ ƒƒZbej dÑg dÒ¢¡ej dÙdÚdÛg¡ej d"d#d$g¡dÜdÝ„ ƒƒƒZcej dÑg dÒ¢¡ej dÙg dÞ¢¡ej d"d#d$g¡dßdà„ ƒƒƒZdej dÑg dÒ¢¡dádâ„ ƒZeej dãd0d4d0d4gg¡ej däd0d4d0d4gg¡dådæ„ ƒƒZfej d9d#d$g¡ej dädçgdçd7gg¡dèdé„ ƒƒZgdS )êé    )ÚdatetimeN)ÚCategoricalÚCategoricalIndexÚ	DataFrameÚIndexÚ
MultiIndexÚSeriesÚqcut)ÚSeriesGroupBy)Ú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ƒr| j}tjt t|ƒ¡|| jd�} | S )N©Ú
categoriesÚordered)	Ú
isinstancer   r   r   Ú
from_codesÚnpÚarangeÚlenr   )Úar   © r   úW/var/www/html/env/lib/python3.10/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ÚfirstÚidxmaxÚidxminÚlastÚmaxÚmeanÚmedianÚminÚnthÚnuniqueÚprodÚquantileÚsem)ÚsizeÚ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-   r;   )Úgroupr   r   r   Ú	get_statsI   s
   üz2test_apply_use_categorical_name.<locals>.get_statsF©Úobservedr   ÚC)r	   r@   ÚgroupbyÚDÚapplyr"   r   )ÚdfÚcatsr=   r    r   r   r   Útest_apply_use_categorical_nameF   s   rF   c                  C   sV  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àw   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>w   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}w   Y  |d
g }t 	||¡ |j|dd�}| d/d!„ ¡}t 	||d
g ¡ | d0d!„ ¡}d1}tjt|d&�� | t¡}W d   ƒ n	1 �sÅw   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 �sSw   Y  t ||d
 ¡ t |jj|dd� d6d!„ ¡|d
 ¡ d.}tjt|d&�� |j|dd� t¡}W d   ƒ n	1 �s’w   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/ 0¡ }t ,|¡ 1|¡}| 1|¡}t |dg d<¢d@�}|j|dddA� .¡ }t 	||¡ t j*t 2d¡ 3dB¡|dd;�}t|ƒ}t 4|j5ddC�j 6d"¡|¡ tg dD¢d ƒ}t 4|j5ddC�j 6d¡|¡ d S )EN©	r   r   r   ÚbrH   rH   ÚcrI   rI   ©r   rH   rI   ÚdTr   ©	é   rM   rM   é   rN   rN   é   r:   é   ©r   rH   ÚabcdrH   ©Únamer   r   rM   rN   r:   ©r"   Fr>   ©r   r   rH   rH   ©r   rH   Úz©rI   rK   rI   rK   ©rI   rK   Úy©rM   rN   rO   r:   ©ÚAÚBÚvaluesr^   r`   )rO   é   r   ©Únumeric_onlyzJohn P. Doez	Jane DoveÚ	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 )Nre   r   )Údrop_duplicatesÚilocri   r   r   r   r   |   s   ztest_basic.<locals>.fú7DataFrameGroupBy.apply operated on the grouping columns©Úmatch©rT   zstring[pyarrow_numpy])rP   é   é   )r   é
   é   é   é(   )Úbinsúusing SeriesGroupBy.sumc                 S   ó
   t  | ¡S rh   ©r   r8   ©Úxsr   r   r   rk   ”   ó   
 zusing DataFrameGroupBy.sumc                 S   ó   t j| dd�S ©Nr   ©Úaxis©r   r,   r}   r   r   r   rk   ž   ó    c                 S   r€   r�   r„   r}   r   r   r   rk   ¡   r…   zusing DataFrameGroupBy.maxc                 S   s   t j | ¡S rh   )r   ÚmaximumÚreducer}   r   r   r   rk   §   ó    )Úcheck_dtype)rP   rs   rt   éûÿÿÿ)iöÿÿÿr   ru   rv   rw   rx   c                 S   r{   rh   r|   r}   r   r   r   rk   ¼   r   c                 S   r{   rh   r|   r}   r   r   r   rk   Æ   r   )rM   r   r   r   ©r   rM   rN   rO   r:   )Úlabels©r   ©ÚfooÚbarÚbazÚquxéd   ©r5   ©r“   r:   )r   r   ©Úsortr?   é   ©Úfuture_stack©r&   r-   r7   r/   z25%z50%z75%r,   )7r   r   r   Úlistr   ÚnanrA   r-   ÚtmÚassert_frame_equalr   r8   re   Ú	transformrm   rn   Úassert_produces_warningÚDeprecationWarningrC   Úcopyr   r"   ÚobjectÚastypeÚpdÚcutr   ÚFutureWarningÚassert_series_equalr,   r†   r‡   Úfilterr$   r   r`   r   r   rT   ÚrandomÚdefault_rngÚintegersr   Ústandard_normalÚasarrayr   ÚdescribeÚcodesÚargsortÚtaker   ÚrepeatÚassert_index_equalÚstackÚget_level_values) Úusing_infer_stringrE   ÚdataÚ	exp_indexÚexpectedr    Úcat1Úcat2rD   ÚgbÚexp_idxrj   Úgr   ÚmsgÚdtyperI   ÚgbcÚresult2Úresult3Úresult4Úresult5Úlevelsr±   ÚgroupedÚdesc_resultÚidxÚ
ord_labelsÚord_dataÚ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jt	|d�� | 
d¡}W d   ƒ n1 shw   Y  t ||¡ d S )NrN   é   r   rH   ru   r   rP   rM   ÚIndex1ÚIndex2)rÈ   r±   r   ©r¹   r"   ©Úlevelr?   é   z&you will need to pass a length-1 tuplerp   )r   r   r   r   r   ÚrangerA   rž   r¡   r¨   Ú	get_grouprŸ   )r?   rD   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<   ÚdoseÚoutcomes)rß   rÞ   rÝ   Tr   r<   rà   r   )r×   Úsort_remaining)rß   rÞ   rÝ   rß   rÞ   rÝ   )r^   r^   r^   r_   r_   r_   r   rN   r&   ©r"   rT   )r   r   r   r   rà   rA   Úvalue_countsr   r   r   Úfrom_arraysr   rž   r©   ©rD   r    r"   r»   r   r   r   Ú(test_sorting_with_different_categoricals  s   
ýÿrç   r   TFc           
      C   sj  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 sqw   Y  t
 ||¡ tj||gdd	gd�}td|d�}d}	t
jt|	d�� | 	dd„ ¡}W d   ƒ n1 s¨w   Y  t
 ||¡ d S )NÚabcr�   Úaaar   rH   r   )ÚmissingÚdenser`   rê   rë   Tr>   r   )r   rM   ç       @r`   )r"   rg   c                 S   r€   r�   )r   r-   ri   r   r   r   rk   @  r…   ztest_apply.<locals>.<lambda>zusing DataFrameGroupBy.meanrp   rM   rU   ro   c                 S   s   dS ©NrM   r   ri   r   r   r   rk   Q  rl   )r   rœ   r   r   r   r   rA   r   rå   rC   rž   rŸ   r-   r¡   r¨   Úaggr   r¢   r©   )
r   rë   rê   r`   rD   rÉ   rË   r»   r    rÁ   r   r   r   Ú
test_apply0  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ƒ ¡ }| ¡ }| sdt|||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�}| ¡ }| s�t|||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¡}| �s0t||jjd,dggdd'gƒ}t
 ||¡ d-D ]}|\}}| |¡}||j|k|j|k@  }t
 ||¡ �q8g d.¢g d/¢g d0¢d1œ}t|ƒ}t |d	 t dd2d3¡¡}||d4< |jd4d5gd6| d7�}| d(¡}|jd4d5gd| d7�}| d(¡ ¡ }t
 ||¡ d S )8NrV   rW   Tr   rY   rZ   r\   r]   r�   r�   rN   r@   )r^   r_   r@   r>   r   r`   rU   ÚABCr   r   r^   r_   )r�   r�   r�   r�   )r`   r@   ÚAB)r   rH   r   rH   ©r   rH   rI   ©rM   rM   rN   rN   ©ru   rv   rw   rx   )ÚcatÚintsÚvalrõ   Úabrè   )rT   r   r   g      ø?ç      4@rw   )rö   r÷   rö   r-   )ç      $@g      >@rù   g      D@©rM   rN   rM   rN   )r÷   rõ   rö   rM   ))r   rM   )rH   rN   )rH   rM   )r   rN   )ru   r˜   r:   r˜   r:   rM   rM   ©ru   rv   rw   rx   é2   é<   éF   )rK   rI   Úer   r   rK   rI   ©r�   r�   r‘   ru   rO   rÙ   r‘   F©Úas_indexr?   )r   r   rA   r   rå   r   r   r8   r#   rœ   rž   rŸ   r-   r   r   rî   Ú	set_indexrõ   r`   rÚ   rö   r¦   r§   r   ÚlinspaceÚreset_index)r?   r¼   r½   rD   r¾   rº   r»   r    rK   Úgroups_single_keyr"   Úgroups_double_keyÚkeyrI   Úirõ   ÚgroupsÚgroups2r   r   r   Útest_observedU  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�}| sOt||jg d¢gddgƒ}| 	d¡}t
 ||¡ d S )N)rO   rO   r:   rP   r\   )ru   r“   éÈ   é"   )ÚC1ÚC2ÚC3r  )rM   rN   rO   rÜ   rõ   r  r>   r   )ç      @r  g      @g      @)rú   g      Y@g      i@g      A@)r  r  rU   r-   )r   r¦   r§   rT   rA   r   rå   r#   r`   rî   rž   rŸ   )r?   rK   rD   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sNJ ‚|j
jd  ¡ | j ¡ ks]J ‚|j
jd  ¡ | j ¡ kslJ ‚d S )NrN   r   éÿ   i0u  r”   é'  )rõ   Úint_idÚother_idr�   Úcategoryrõ   )rõ   r  r  Tr>   rM   )r   r   r«   r¬   r­   rõ   r¥   ÚstrrA   r&   r"   rÈ   r1   r  r  )rD   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}| r0t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   rI   r   rò   ©r   ©rM   rN   rO   ©rõ   Úvalsrõ   r>   r   rN   Úint64©rÂ   rM   )r   rI   )r   r   rA   r  r   rž   Úassert_dict_equal)r?   rõ   rD   rÀ   r    r»   r   r   r   Útest_observed_groupsì  s   "
ýr#  z,keys, expected_values, expected_index_levelsr   )rs   é	   r   r  rr   rH   )	ra   r˜   r   r   r   r$  r   r   r   ©r:   rP   rÜ   Úa2)	rs   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r,|jd	d
�}|j| dd�}|r9|d }| ¡ }t| ƒdkrF|}ng d¢dg d¢ g}t||| d�}t d|i|d�}	|re|	d }	t 	||	¡ d S )N©rM   rM   rN   r  r  r%  )ra   r˜   r$  )r   r&  rH   rI   r   r&  rH   rf   Fr>   rI   rM   ©	r   r   r   rM   rM   rM   rN   rN   rN   rO   ©r   rM   rN   )r±   r   rU   )
r   r   r  ÚdroprA   r8   r   r   rž   Úassert_equal)
ÚkeysÚexpected_valuesÚexpected_index_levelsr'  rD   r¾   r    r"   r±   r»   r   r   r   Útest_unobserved_in_index  s6   üÿ
ùýr0  c                 C   sŒ   t tdtjdgg d¢d�g d¢dœƒ}|jd| d�}|j}| r*d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   rH   rK   r  r  r  rõ   r>   r   rN   r   r!  )	r   r   r   r�   rA   r  r   rž   r"  )r?   rD   rÀ   r    r»   r   r   r   Útest_observed_groups_with_nan7  s   þÿ

ýr1  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>   r2  r   )
r   r   r�   r   r   rA   r0   rn   rž   r©   )rõ   r2  rD   r    r»   r   r   r   Útest_observed_nthL  s   r3  c                 C   s¨   t tjdtjdgg d¢d�}tg d¢ƒ}t||dœƒ}|jd| d� ¡  ¡ }| r8t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Ús2r4  r>   rN   )
r   r   r�   r   r   rA   r(   r  rž   rŸ   )r?   r4  r5  rD   r    r»   r   r   r   Ú#test_dataframe_categorical_with_nanW  s   ÿþÿr6  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ƒ}|s:d|| ¡ < t||kƒsRd| › d|› d|› d|› �}J |ƒ‚d S )N)rK   r   rH   r   rK   rH   )r   rH   rê   rK   r   )Úlabelr÷   r7  )r?   r—   r÷   r(   r¤   r!  rê   zDLabels and aggregation results not consistently sorted
for (ordered=z, observed=z, sort=z
)
Result:
)	r   r   r   rA   Ú	aggregater"   ÚarrayÚisnar$   )	r   r?   r—   r7  r÷   rD   r    ÚaggrrÁ   r   r   r   Ú0test_dataframe_categorical_ordered_observed_sortk  s2   	ý
ÿÿÿþÿú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:   )ÚperiodsrN   r   r“   r”   Tr�   r•   Fr>   r   r˜   r™   r›   rM   )r¦   Ú
date_ranger   r«   r¬   r­   r   r   r   r®   rA   r-   r¯   r   r   r"   rž   rŸ   r°   r±   r²   r³   rµ   r·   r   r´   r¶   r   )rÈ   r±   rE   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 )NrN   rŽ   r   r:   rv   r”   Tr�   éÿÿÿÿrR   rf   rE   FrÖ   r>   ©r   rM   rN   rO   rr   )r   r«   r¬   r­   r   r   r   r´   r   Úreshaperœ   r  rA   r8   r±   r   r"   rž   rŸ   )ÚsrÈ   r±   rE   rD   r    r»   r   r   r   Útest_categorical_index¹  s$   &ÿÿrD  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   rN   )rv   r:   rf   r\   rP   r™   )r   r   r   r«   r¬   r®   rA   r°   rž   rµ   r¶   rg   Úassert_categorical_equalr`   )rE   rD   r    r   r   r   Ú!test_describe_categorical_columnsÒ  s   ýÿrF  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 )Nru   r^   r_   rP   ÚXYXXYrN   )r   ÚmediumÚartistrH  r  rI  Fr>   r   ©r   rT   rÜ   r:   ÚXÚYrr   rU   )r   rÙ   rœ   r¥   rA   r&   Úunstackr°   r   rž   rµ   rg   rE  r`   r   r   r©   )rD   Úgcatr    Úexp_columnsr»   r   r   r   Útest_unstack_categoricalâ  s   ÿrP  c                  C   st   t tjtjddddddddg
ƒ} t |  ¡ jd¡}tjt	dd�� |  
|¡ ¡  W d   ƒ d S 1 s3w   Y  d S )NrM   rN   rO   r:   z$Grouper and axis must be same lengthrp   )r   r   r�   r¦   r§   Údropnar`   ÚpytestÚraisesÚ
ValueErrorrA   r-   )Úseriesry   r   r   r   Útest_bins_unequal_lenõ  s
    "ÿrV  rU  r¹   r:   rO   rM   rN   ©r^   r_   c                 C   s   | d S rí   r   )rË   r   r   r   rk     s    rk   ra   c                 C   sH   | j ttdƒdd�dd�}| t¡}t|t| ¡ ƒd�}t ||¡ d S )NÚABBAr  r!  Fr>   rU   )rA   r   rœ   r8  r   r-  rž   r©   )rU  r¹   rA   r    r»   r   r   r   Útest_categorical_seriesÿ  s   
rY  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 sdw   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 s°w   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 ]}ttdƒ|d�ˆ _ˆ j|dd	d
� ¡ } t | |¡ qÚd S )N©rM   rN   rN   r  )ru   é   r[  )ée   éf   ég   )rõ   r^   r_   rõ   r^   FTr  rM   rN   r  ru   r[  r\  éÍ   rf   c                    s   ˆ j | df S )Nr^   )Úloc)Úr©rD   r   r   rk   *  r…   ztest_as_index.<locals>.<lambda>z*A grouping .* was excluded from the resultrp   rÒ   )r   rH   rH   rr   )NrK  r_   rè   )r   r   rA   r8   rõ   r   rž   rŸ   r¡   r¨   r   r   rœ   r"   )r    r»   r   rÁ   rC  Úgroup_columnsrT   r   rb  r   Útest_as_index  s^   ýÿýúÿýúÿýú	ü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   rJ  ÚbacFr–   )	rœ   r   r   r   rž   rµ   rA   r(   r"   )r   rD   r   Únosort_indexr   r   r   Útest_preserve_categoriesQ  s&   ÿÿÿÿrh  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
 ||¡ qDd S )N)rM   rN   rM   rM   rN   )ru   é   rÒ   é   r  Úabaabrf  Fr   T)r^   r_   r  r  rì   g      ð?g      9@rù   )r  r  ©Úbyr  r?   rb   rf   )r   r   rœ   r   r�   rA   r-   r  r   rg   rž   rŸ   )rD   Úexp_fullÚcolÚresult1rÄ   r»   r   r   r   Útest_preserve_categorical_dtypeo  s6   üÿ	

üÿÿÿýõrq  zfunc, valuesÚsecondÚfourthÚthirdc                 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(   rr  rt  rs  Tr�   )r@  éþÿÿÿr@  ru  )Úpayloadro  rv  ru  r@  r!  ro  )
r   r   rA   Úgetattrr   rÂ   r  rž   rŸ   r©   )Úfuncr`   rI   rD   rÀ   r    r»   Úsgbr   r   r   Útest_preserve_on_ordered_ops�  s   
ÿþrz  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 )NrN   r$  r)  r*  Tr�   Fr>   r   )	r   r   r   rM   rM   rM   rO   rO   rO   rA  rG   rJ   rL   rQ   rH   r   rM   r:   )r   r   r«   r¬   r®   r9  r   r   rA   r-   r   r"   r   r   rž   r©   r   r   r`   r�   Úassert_numpy_array_equal)r¹   r±   rE   r    rÐ   r   r   r   Útest_categorical_no_compress¬  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 )NrO   )Útrainr}  ÚtestrW  r^   r_   r~  r}  r  r¤   ©rÂ   rT   rã   )r   r   rA   r(   r   rž   r©   ©rD   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ÚvaluerN   r   r  r“   c                 S   s   g | ]}|› d |d › �‘qS )z - ió  r   )Ú.0r
  r   r   r   Ú
<listcomp>ç  s    ztest_sort.<locals>.<listcomp>iô  T)rm  Ú	ascendingi)  F)ÚrightrŒ   Úvalue_groupr>   c                 S   s   t |  ¡ d ƒS )Nr   )ÚfloatÚsplitri   r   r   r   rk   ð  s    ztest_sort.<locals>.<lambda>)r	  rr   )r   r   r«   r¬   r­   rÙ   r   Úsort_valuesr¦   r§   r‚  rA   r&   Úsortedr"   r   rT   rž   r©   )rD   rŒ   Ú
cat_labelsÚresrÐ   r   r   r   Ú	test_sortß  s   

ÿrŽ  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� ¡ }| rFd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]ru   ru   )r�  r˜   rv   )ú(2.5, 5]rP   rw   )ú(5, 7.5]rÜ   rx   )r�  r:   rý   )ú(0, 2.5]rM   rþ   )r‘  ra   rÿ   )rÙ   r�   r�   rf   rÙ   r�   Fr–   rM   rþ   rP   rw   rÜ   rx   ru   )r’  r�  r‘  r�  )r�  r�  r‘  r’  r�   r�   rS   ©rg   r"   )r   r   rA   r(   r   rž   rŸ   )r—   r   rD   r    Údata_valuesÚindex_valuesr»   r   r   r   Ú
test_sort2õ  s0   ù	ö
ýr–  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
< | rdd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}n$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}t |ddgt|d
|d�d�}|jd
| dd� ¡ }t ||¡ d S )NiÛ  ra   rM   rN   rP   )ru   r˜   rP   rÜ   r:   rM   ra   rü   )Údtr�   r�   rf   r—  r�   rþ   rw   rÜ   rx   ru   r�   r�   rS   r“  Fr–   )r   r   r   r   rA   r(   rž   rŸ   )r—   r   rD   r”  r•  r»   r    r   r   r   Útest_sort_datetimelike  sF   






ù	õò



ü



üý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 ||¡ | jddd	�jjdd�}tdt	j
t	j
g|dd�}t ||¡ d S )N©r   r   rH   rò   r  ©rM   rN   rM   rW  r^   rr   Fr>   )rO   rM   r   r_   r   ©Ú	min_countrM   rO   rN   )r   r   r   rA   r_   r8   r   rž   r©   r   r�   ©rD   Úexpected_idxr    r»   r   r   r   Útest_empty_sumK  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 )Nr™  rò   r  rš  rW  r^   rr   Fr>   )rN   rM   rM   r_   r   r›  rM   rN   )r   r   r   rA   r_   r2   r   rž   r©   r   r�   r�  r   r   r   Útest_empty_prodg  s   ÿr   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 )NÚ	abcbabcbaz2018-06-01 00Ú1minrO   )Úfreqr=  r$  )Úkey1Úkey2r`   r¤  r¥  Fr>   rò   r   r`   r   r:   r˜   rP   rÜ   rN   rU   )r   r   rœ   r¦   r>  r   r   rA   r-   r   r   r�   rž   rŸ   )rD   r    rË   r»   r   r   r   Ú,test_groupby_multiindex_categorical_datetime  s"   
ÿûÿ	
þû$r¦  zas_index, expectedr(  r  r!  rZ  r   rj   )r"   r¹   rT   ©r   rH   rj   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!  rZ  r  r§  r   rH   Tr  rj   )r   r   rA   r8   rž   r,  )r  r»   rD   r    r   r   r   Ú,test_groupby_agg_observed_true_single_column˜  s
   ÿr¨  r   c                 C   sJ   t g d¢g d¢dd�}t g d¢g d¢dd�}|jd| d�}t ||¡ d S )NrJ   Fr   )Nr   rH   rI   rM   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\   r@   rB   rM   r‚   )r£   r¥   r   r+  )rD   Údf_catr   r   r   r¬  È  s   r¬  Ú	operationrî   rC   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r;dnd}tjt	|d�� t
||ƒtƒ}W d   ƒ n1 sVw   Y  t ||¡ d S )N)r�   r�   r�   r�   r^   r  )ÚoneÚthreer®  Útwor_   )rN   r:   rM   rO   r@   ©r¹   r"   rT   Tr>   rC   úusing np.sumrz   rp   )r   rÂ   r   rå   r   r   rA   rž   r¡   r¨   rw  r8   r©   )	r¬  r­  Úlev_aÚ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rNd}tjt	|d�� |j
ddd�}W d   ƒ n1 sIw   Y  | jddg|d�d }|dkr_dnd}tjt	|d�� t||ƒtƒ}W d   ƒ n1 szw   Y  t ||¡ d S )Nr�   r�   Fr�   ©r®  r¯  r°  r^   r_   r   rN   r:   rM   rO   r@   r±  rî   z.The 'downcast' keyword in fillna is deprecatedrp   r   Úinfer)Údowncastr>   rz   r²  )r   r   r   Ú	sortlevelr   r   r�   rž   r¡   r¨   ÚfillnarA   rw  r8   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^   r  )r®  r®  r¯  r¯  r®  r®  r°  r°  r_   )rN   rN   r:   r:   rM   rM   rO   rO   r�   r¶  )r^   r_   Nc                 C   s>   t ||dd�}| jddg|d�d  dd„ ¡}t ||¡ d S )Nr@   r±  r^   r_   r>   c                 S   s   |   ¡ |  ¡ dœS )N©r/   r,   r½  ri   r   r   r   rk   <  s    z8test_seriesgroupby_observed_apply_dict.<locals>.<lambda>)r   rA   rC   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>   r@   )rA   r-   rž   r©   )r¬  r»   r    r   r   r   Ú4test_groupby_categorical_series_dataframe_consistentA  s   r¿  Úcode)rM   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 s3w   Y  | ¡ }d}tjt|d�� |j	j|dd
d�}W d   ƒ n1 sYw   Y  | ¡ j	}t 
||¡ d S )Nr\   )r@  ru  éýÿÿÿéüÿÿÿ)rP   rÜ   ra   r˜   rò   rè   r  z+DataFrame.groupby with axis=1 is deprecatedrp   rM   F)rƒ   r?   z5The 'axis' keyword in DataFrame.groupby is deprecatedr   )r   r   r   rœ   rž   r¡   r¨   rA   r-   ÚTrŸ   )rÀ  rD   rõ   rÁ   r¾   r    Úgb2r»   r   r   r   Útest_groupby_categorical_axis_1H  s   ÿÿ
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 )NÚBobÚGregr�   rM   rN   )ÚNameÚItemrÈ  rÉ  rf   r>   T)Úskipna)	r   r   r£   rA   rî   r8   r  rž   rŸ   )r?   r   rD   r»   r    r   r   r   Ú$test_groupby_cat_preserves_structureX  s   þÿýrË  c                  C   s^   t g d¢tdƒdœƒ} tjtdd�� |  d¡ dd„ ¡ W d   ƒ d S 1 s(w   Y  d S )	NrV   r:   ©r9   r÷   z'vau'rp   r9   c                 S   s&   t | jd d g| jd d gdœƒS )Nr@  r9   ÚvaurÌ  )r   rn   )Úrowsr   r   r   rk   n  s     ÿz/test_get_nonexistent_category.<locals>.<lambda>)r   rÙ   rR  rS  ÚKeyErrorrA   rC   rb  r   r   r   Útest_get_nonexistent_categoryi  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rIt|| ƒrGJ ‚d S t|| ƒ}|sr| dv rrt j	t
dd�� ||Ž  W d   ƒ d S 1 skw   Y  d S ||Ž }t|ƒ|ks~J ‚d S )NÚngroupúngroup is not truly a reductionÚAABBÚABCDr  rñ   rN   çš™™™™™¹?r:   ©Úcat_1Úcat_2r‚  ri  r×  rØ  r>   r‚  r'   ©r*   r)   ú(empty group due to unobserved categoriesrp   )rR  Úskipr   r   rœ   r   rA   Úhasattrrw  rS  rT  r   )Úreduction_funcr?   rD   r!   Úexpected_lengthÚseries_groupbyrî   r    r   r   r   Ú0test_series_groupby_on_2_categoricals_unobservedt  s4   
ýÿ

ÿ

ýürà  c                 C   sp  | dkr	t  d¡ | dkrt 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   ƒ d S 1 sww   Y  d S ||Ž }t|  }	|D ]}
|j|
 }t |	¡r™t |¡sŸ||	ksŸJ ‚qˆ|	dkr²| dkr´t |jtj¡s¶J ‚d S d S d S )NrÑ  rÒ  r'   z6TODO: implemented SeriesGroupBy.corrwith. See GH 32293©ÚreasonrÓ  rð   r  rñ   rN   rÕ  r:   rÖ  ÚACÚBCÚCAÚCBÚCCr×  rØ  Fr>   r‚  rÙ  rÚ  rp   r   r8   )rR  rÛ  ÚmarkÚxfailÚapplymarkerr   r   rœ   Útupler   rA   rw  rS  rT  Ú-_results_for_groupbys_with_missing_categoriesr`  r¦   r:  r   Ú
issubdtyperÂ   Úinteger)rÝ  Úrequestrè  rD   Ú
unobservedr!   rß  rî   r    Úzero_or_nanrË   r÷   r   r   r   Ú?test_series_groupby_on_2_categoricals_unobserved_zeroes_or_nansš  sH   
ÿ
ýÿ"

ÿ

ýü
 €ÿ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sGJ ‚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ø  )r@   Ú1)r@   rø  r×  rØ  Tr>   )	rR  rÛ  r   r   rœ   rA   r   rw  r"   )rÝ  rD   Ú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   ƒ d S 1 sUw   Y  d S t	|| ƒ|Ž }t
|  }|tju r{|j|  ¡  ¡  ¡ syJ ‚d S |j| |k ¡  ¡ sˆJ ‚d S )NrÑ  ró  rÓ  rð   r  rô  rõ  rö  rÖ  r÷  r×  rØ  r>   rÙ  rÚ  rp   )rR  rÛ  r   r   rœ   rA   r   rS  rT  rw  rì  r   r�   r`  Úisnullr$   )rÝ  r?   rD   rú  rû  r!   r�  r»   r   r   r   Ú?test_dataframe_groupby_on_2_categoricals_when_observed_is_falseè  s2   	
ýÿ
ÿ
ýü
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)ru   r˜   r:   rM   rô   )rK   rI   rK   rI   r  r�   r   rv   rP   rÙ   r‘   TF©r  r—   r?   r-   )	r   r¦   r§   r   r  rA   rî   rž   r©   )rK   rD   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   rM   rM   rN   rN   )r   r   r   r   rM   )Úidr  r‚  r  r  r‚  r*  rr   rU   )r   r   r  rA   rî   r   rž   rŸ   )rx  r.  rD   r    r»   r   r   r   Ú$test_groupby_agg_categorical_columns  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^   r™  rò   r  rN   rM   rU   rš  )
r   r   r   r9  rA   rî   r   r1   rž   rŸ   ©rD   r»   r    r   r   r   Útest_groupby_agg_non_numeric4  s   r  rx  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Í  rH   r  r!  rW  r^   r_   rr   ©r"   rT   rÂ   )
r   r   rõ   Ú
as_orderedrA   rw  r   rÂ   rž   r©   )rx  rD   Ú
df_groupedr    r»   r   r   r   Ú<test_groupby_first_returned_categorical_instead_of_dataframe?  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 )NrM   rN   F)rM   rO   rP   ra   ró   r  rQ   r   rì   g      @rH   rr   rÕ   r–   )r   r9  ÚflagsÚ	writeabler   r   r   r   rA   r-   rž   rŸ   )rE   rD   r»   r    r   r   r   Útest_read_only_category_no_sortN  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  rH  r  r  rH  )r@   r^   r^   r@   r^   r@   r^   r@   )r�   r�   r�   r  )Útinyr  rH  r  Tr�   r   )r^   r@   rM   rO   rN   r�   r"   r‚   )r   r   rT   rÂ   Fr>   )r   r¥   rõ   Úset_categoriesÚrename_axisr   rg   rA   r5   rM  rž   rŸ   r  r   r   r   Ú#test_sorted_missing_category_valuesZ  s6   
õÿþÿüÿû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 )	NÚcol_num©rM   rM   rN   rO   r  Úcol_catr  rr   r  r(   )r   r¥   rA   r  r(   r   r   rÂ   rž   r©   rî   Úto_framerŸ   r€  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)rM   rM   rM   rM   rû   rÕ  gš™™™™™É?g333333Ó?)r�   r�   r�   Úfee)r^   r_   Únumerical_colÚ
object_colÚcategorical_colr  r  r^   r_   c                 S   s   |   ¡  ¡ S rh   )r:  r8   rb  r   r   r   rk   «  rˆ   z7test_aggregate_categorical_with_isnan.<locals>.<lambda>rM   rN   rW  r   r   )r  r  r  rÕ   )
r   r   r�   r¥   rA   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 s=w   Y  |  
¡ }t g d¢g d¢g d¢dœƒ}|d  |¡|d< |d  |¡|d< t ||¡ d S )N)rM   rM   rM   rN   rN   rO   )ÚWaitingÚOnTheWayÚ	Deliveredr  r  r  )Ú
package_idÚstatus)r  r  r  Tr   r   zusing SeriesGroupBy.maxrp   r  Úlast_status)r  r  r  r  r  r  )r  r   r!  )r   r¦   ÚCategoricalDtyper¥   rž   r¡   r¨   rA   r    r,   r£   rŸ   )rD   Údelivery_status_typerÁ   r    r»   r   r   r   Útest_categorical_transform¸  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œ}||  }|rL| ¡  tj	¡}|j
ddg|d�d	 }	t|	| ƒƒ }
t |
|¡ d S ©N)r   r   rM   rM   )r   rM   rM   r   rò   r   rM   r   rH   r   rI   rr   )r(   r+   r>   )r   r   r   r   r   r   r�   rQ  r¥   r   rA   rw  rž   r©   )rx  r?   rõ   r÷   rD   r½   rË   Úexpected_dictr»   Ú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œ}||   ¡ }|rN| ¡  	tj
¡}|jddg|d�}	t|	| ƒƒ }
t |
|¡ d S r%  )r   r   r   r   r   r   r�   r  rQ  r¥   r   rA   rw  rž   rŸ   )rx  r?   rõ   r÷   rD   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 	|| || ¡ qBd S )N)rH   rH   r   rò   r  rO   )r	  ro  r	  Fr–   r   rM   Úintpr!  rN   )rH   r   rI   )
r   r   rÙ   rA   Úindicesr   r9  r-  rž   r{  )rD   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  rH   rr   )rT   r"   )	r   r¥   rw  rA   r   r   r   rž   r©   )rx  rD   r    r»   r   r   r   Ú1test_groupby_last_first_preserve_categoricaldtype6  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 )NrM   rN   ru   r[  rò   r  rQ   r!  r   rH   Tr>   rI   rr   rã   )
r   r¥   rA   r1   r   r   rå   r   rž   r©   r€  r   r   r   Ú)test_groupby_categorical_observed_nuniqueB  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   rM   rN   ÚgrpÚdescriptionrf   rr   r  )
r¦   r"  r   r¥   rA   r,   r   r   rž   r©   )rÂ   rD   r    r»   r   r   r   Ú,test_groupby_categorical_aggregate_functionsQ  s   ÿ
þür2  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	�}| ¡ }| r4td
ddgi|d�}ntg d¢g d¢ƒ}td
g d¢i|d�}d|j_t ||¡ d S )NrM   rN   r  r  rO   r:   )rj   r[   rj   )r?   rQ  r[   rU   )rO   r:   r   )	r   r   rA   r8   r   r"   rT   rž   rŸ   )r?   rQ  rõ   rD   r¾   r    r»   r"   r   r   r   Útest_groupby_categorical_dropnac  s   "r3  Ú
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r9dg}	n |dkrFdg}	| |	¡}n|dkrYddg}	|d |d< | |	¡}t	||ƒ}
|j
|	|||d�}|sŽ|dv rŽtjtdd�� t||ƒ|
Ž  W d   ƒ d S 1 s‡w   Y  d S t||ƒ|
Ž }|rŸ|j d¡j}n|d jj}tg d¢ƒ}t ||¡ |dkrÄ|j d¡j}t ||¡ d S d S )Nr'   zDGH#49950 - corrwith with as_index=False may not have grouping columnrá  rÙ   ú/Result doesn't have categories, nothing to test©rN   rM   rN   rO   ©rM   r:   rO   rN   r   r:   rQ   r   r5  r6  r&  rÿ  rÙ  rÚ  rp   )rê  rR  rè  ré  rÛ  r   r   rÙ   r  r   rA   rS  rT  rw  r"   r·   r   rõ   r   rž   rµ   )rï  r  r—   r?   rÝ  r4  r   rÁ   rD   r-  r!   r¾   Ú	op_resultr    r»   r   r   r   Útest_category_order_reducert  sP   þÿ

ÿ
ýüþr;  r5  r6  c                 C   s   t tg d¢g d¢|d�tdƒdœƒ}|dkrdg}| |¡}n|dkr2dd	g}|d |d	< | |¡}t||ƒ}|j|| ||d
�}	|dkrFtnd }
d}tj|
|d�� t	|	|ƒ|Ž }W d   ƒ n1 scw   Y  |j
 d¡j}tg d¢ƒ}t ||¡ |dkrŽ|j
 d	¡j}t ||¡ d S d S )Nr8  r9  r   r:   rQ   r5  r   r6  r&  rÿ  rº  z%DataFrameGroupBy.fillna is deprecatedrp   )r   r   rÙ   r  r   rA   r¨   rž   r¡   rw  r"   r·   r   r   rµ   )r  r—   r?   Útransformation_funcr4  r   rD   r-  r!   r¾   ÚwarnrÁ   r:  r    r»   r   r   r   Útest_category_order_transformer¦  s4   þÿ

ÿþr>  ÚmethodÚheadÚtailc                 C   sø   t tg d¢g d¢|d�tdƒdœƒ}|dkrdg}n |dkr'dg}| |¡}n|d	kr:dd
g}|d |d
< | |¡}|j|| ||d�}t||ƒƒ }	|dkrT|	d jj}
n|	j 	d¡j}
t
g d¢ƒ}t |
|¡ |d	krz|	j 	d
¡j}
t |
|¡ d S d S )Nr8  r9  r   r:   rQ   rÙ   r   r5  r6  r&  rÿ  )r   r   rÙ   r  rA   rw  rõ   r   r"   r·   r   rž   rµ   )r  r—   r?   r?  r4  r   rD   r-  r¾   r:  r    r»   r   r   r   Útest_category_order_head_tailÈ  s2   þÿ
þrB  )rC   rî   r    c                 C   sz  |dkr|dks| s|dkrt  d¡ ttg d¢g d¢|d�tdƒdœƒ}|dkr-d	g}n |d
kr:d	g}| |¡}n|dkrMd	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w   Y  |dksŠ| s•|dkr•|d	 jj}n|j d	¡j}tg d¢ƒ}t ||¡ |dkr»|j d¡j}t ||¡ d S d S )Nr    rÙ   z(No categories in result, nothing to testr8  r9  r   r:   rQ   r   r5  r6  r&  rÿ  rC   ro   rp   c                 S   s   | j dd�S )NTrb   )r8   ri   r   r   r   rk     rˆ   z+test_category_order_apply.<locals>.<lambda>)rR  rÛ  r   r   rÙ   r  rA   r¢   rž   r¡   rw  rõ   r   r"   r·   r   rµ   )r  r—   r?   r?  r4  r   rD   r-  r¾   r=  rÁ   r:  r    r»   r   r   r   Útest_category_order_applyì  sD   ÿ
þÿ
ÿþrC  c                 C   sV  |dkr| st jdd� t ddd¡}tg d¢||d�}t|tdƒd	œƒ}|dkr-d
g}n |dkr:d
g}| |¡}n|dkrMd
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||_n|dkrštt|ƒt|ƒ|
dœƒ}n	tt|ƒ|
d	œƒ}t |	|¡ d S )NrÙ   r7  rá  i'  r@  r8  r   r:   rQ   r   r5  r6  r&  Trÿ  )rO   rN   rM   )rN   rM   rO   )r   r   rT   rH   )r   r&  )r   r&  rH   )rR  rÛ  r   r   r   r   rÙ   r  rA   r8   r   r   r   Ú
from_framer"   r   rž   rŸ   )r  r—   r4  r   r   ÚgrouperrD   r-  r¾   r    r¹   r"   r»   r   r   r   Útest_many_categories  s:   

ÿrF  Úcat_columnsr-  c                 C   s‚   t g d¢g d¢dœƒ}||   d¡|| < d}t| ƒt|ƒ@ r tnd }tj||d�� | |¡ W d   ƒ d S 1 s:w   Y  d S )Nr  )r:   rP   rÜ   ra   rQ   r  z+The default of observed=False is deprecatedrp   )r   r¥   Úsetr¨   rž   r¡   rA   )rG  r-  rD   rÁ   Úklassr   r   r   Útest_groupby_default_depr=  s   "ÿrJ  Úa1c                 C   sÒ  |r|dkrt tdƒrJ ‚t d¡ n-|dkr$d}|  tjj|d�¡ n|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�}|rn|d }t||ƒ}	|s£|dv r£|ddgkr£tjtdd�� |j|gg|	¢R Ž  W d   ƒ d S 1 sœw   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á  r1   rM   zGH#52848 - raises a ValueError)r   r   rM   )rN   rO   rO   r%  )rK  r&  rH   r  )rK  r&  r&  rf   rl  rH   rÙ  rK  rÚ  rp   r5   c                 S   s   g | ]}|d f‘qS )Ú r   )rƒ  Úindr   r   r   r„  t  s    z!test_agg_list.<locals>.<listcomp>r@  )rÜ  r
   rR  rÛ  rê  rè  ré  r   r   r¥   r+  rA   r   rS  rT  rî   rw  r  r   Úfrom_tuplesrg   rž   r,  )rï  r  r?   rÝ  r'  r-  rÁ   rD   r¾   r!   r    r»   r   r   r   Útest_agg_listI  sX   ÿÿþ
ÿ
ýü
 ÿrO  )hr   Únumpyr   rR  Úpandasr¦   r   r   r   r   r   r   r	   Úpandas._testingÚ_testingrž   Úpandas.api.typingr
   Úpandas.tests.groupbyr   r�   r#   rì  rF   rÑ   rÛ   rç   rè  Úparametrizerï   r  r  r  r#  r0  r1  r3  r6  r<  r?  rD  rF  rP  rV  rÙ   ÚrenamerY  rd  rh  rq  rz  r|  r�  rŽ  r–  r˜  rŸ  r   r¦  rå   r¨  ÚNaTr«  Úfixturer¬  rµ  r¼  r   r¾  r¿  rÅ  rË  rÐ  rà  rò  rü  rþ  r   r1   r&   r  r  r  r  r  r  r  r$  r  Úboolr(  r)  r,  r-  r.  r2  r3  r;  r>  rB  rC  rF  rJ  rO  r   r   r   r   Ú<module>   sú   $	ùø	÷
öõôóòñðïîíìëêéä  (
$nýþýùþ" +
$ùþ

<!



üþ
	%
"
2ÿûþýÿþõþ



ýùÿó
ýú"ö
ýú"öäþ
,	
&4
*þ

-8ÿÿÿÿ
0 !&
'
