o
    Û­jD% ã                   @   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ej d¡dd„ ƒZdd„ Zdd „ Zd!d"„ Zej d#d$d%g¡d&d'„ ƒZej d¡d(d)„ ƒZd*d+„ Z d,d-„ Z!d.d/„ Z"ej d0d1g d2¢eg d3¢d1d4�fd1d5gg d6¢eg d3¢d1d4�e	g d7¢ƒgfd1d8gg d9¢eg d3¢d1d4�eg d3¢d1d4�gfg¡ej d:d$d%g¡d;d<„ ƒƒZ#d=d>„ Z$d?d@„ Z%dAdB„ Z&ej d#d$d%g¡ej dCd$d%g¡ej dDd$d%g¡dEdF„ ƒƒƒZ'dGdH„ Z(dIdJ„ Z)dKdL„ Z*dMdN„ Z+dOdP„ Z,ej dQdRgee-dSƒƒd dTgdUdVgdWœfee-dSƒƒ .dXdY„ ¡dVgd dUgdWœfee-dZƒƒd dTgdUdVgdWœfg¡d[d\„ ƒZ/d]d^„ Z0d_d`„ Z1dadb„ Z2ej dcddddgfddedfgfddedgfddddfgfg¡dgdh„ ƒZ3didj„ Z4dkdl„ Z5dmdn„ Z6ej d#d$d%g¡dodp„ ƒZ7ej d#d$d%g¡dqdr„ ƒZ8dsdt„ Z9dudv„ Z:dwdx„ Z;ej dyd$ee
j<eg dz¢d{d|�g d}¢gd1d5gd~�g d3¢dd€�fd%eeg dz¢d{d|�g d}¢g d3¢d�œƒfg¡d‚dƒ„ ƒZ=ej d„dejej>g¡d…d†„ ƒZ?ej@d‡dˆ„ ƒZAej d‰dŠd‹g¡dŒd�„ ƒZBej d‰dŠd‹g¡ej dCd%dg¡dŽd�„ ƒƒZCej d�d$e
 <e	d‘gdS d’gdS  d{d“d”�e	g d•¢d{d–d”�e	ddgdS ƒg¡g d—¢fd%e
jDed‘d’gd%d˜�eg d™¢d%d˜�e	ddgƒgg dš¢d~�dVdVdSdSejejdUdUejejdTdTgfde
jDed‘d’gd%d˜�eg d™¢d%d˜�e	ddgƒgg dš¢d~�dVdVdSdSejejdUdUejejdTdTgfg¡d›dœ„ ƒZEd�dž„ ZFej dŸg d ¢g d¡¢g¡d¢d£„ ƒZGd¤d¥„ ZHd¦d§„ ZId¨d©„ ZJdªd«„ ZKd¬d­„ ZLej dCd%dg¡d®d¯„ ƒZMej d¡d°d±„ ƒZNej d²ejOg dz¢fejPg d}¢fg¡d³d´„ ƒZQdµd¶„ ZRej d·ddg¡d¸d¹„ ƒZSdºd»„ ZTd¼d½„ ZUd¾d¿„ ZVdÀdÁ„ ZWdÂdÃ„ ZXej d·ddg¡d·eYdCeZfdÄdÅ„ƒZ[ej d·ddg¡d·eYdCeZfdÆdÇ„ƒZ\dÈdÉ„ Z]ej d·ddg¡dÊdË„ ƒZ^dÌdÍ„ Z_dÎdÏ„ Z`dÐdÑ„ Zaej dÒg dÓ¢¡ej d#d$d%g¡dÔdÕ„ ƒƒZbej dÒdÖd×g¡ej d#d$d%g¡dØdÙ„ ƒƒZcej dÒg dÓ¢¡ej dÚdÛdÜg¡ej d#d$d%g¡dÝdÞ„ ƒƒƒZdej dÒg dÓ¢¡ej dÚg dß¢¡ej d#d$d%g¡dàdá„ ƒƒƒZeej dÒg dÓ¢¡dâdã„ ƒZfej däd1d5d1d5gg¡ej dåd1d5d1d5gg¡dædç„ ƒƒZgej d:d$d%g¡ej dådègdèd8gg¡dédê„ ƒƒZhdS )ëé    )ÚdatetimeN)ÚCategoricalÚCategoricalIndexÚ	DataFrameÚIndexÚ
MultiIndexÚSeriesÚqcut)ÚSeriesGroupBy)Úget_groupby_method_argsc                 C   sr   dd„ }t jt||ƒ|d�}t|tƒr0i }| jD ]}| | j||| d�||< qt||d� ¡ S | j||d� ¡ S )zpReindex to a cartesian production for the groupers,
    preserving the nature (Categorical) of each grouper
    c                 S   s4   t | ttfƒr| j}tjt t|ƒ¡|| jd�} | S )N©Ú
categoriesÚordered)	Ú
isinstancer   r   r   Ú
from_codesÚnpÚarangeÚlenr   )Úar   © r   úb/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/groupby/test_categorical.pyÚf   s   ÿz)cartesian_product_for_groupers.<locals>.f©Únames©Ú
fill_value©Úindex)	r   Úfrom_productÚmapr   ÚdictÚcolumnsÚreindexr   Ú
sort_index)ÚresultÚargsr   r   r   r   ÚresÚcolr   r   r   Úcartesian_product_for_groupers   s   

r(   ÚallÚanyÚcountÚcorrwithÚfirstÚidxmaxÚidxminÚlastÚmaxÚmeanÚmedianÚminÚnthÚnuniqueÚprodÚquantileÚsem)ÚsizeÚskewÚstdÚsumÚvarz7ignore:invalid value encountered in cast:RuntimeWarningc                 C   sB   t | jdƒ}dd„ }| j|dd�j |¡}|jjd dksJ ‚d S )Né   c                 S   s   |   ¡ |  ¡ |  ¡ |  ¡ dœS )N©r4   r1   r+   r2   r@   )Úgroupr   r   r   Ú	get_statsR   s
   üz2test_apply_use_categorical_name.<locals>.get_statsF©Úobservedr   ÚC)r	   rE   ÚgroupbyÚDÚapplyr   r   )ÚdfÚcatsrB   r$   r   r   r   Útest_apply_use_categorical_nameN   s   rK   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. /¡ }t +|¡ 0|¡}| 0|¡}t |dg d<¢d@�}|j|dddA� -¡ }t 	||¡ t j)t 1d¡ 2dB¡|dd;�}t|ƒ}t 3|j4ddC�j 5d"¡|¡ tg dD¢d ƒ}t 3|j4ddC�j 5d¡|¡ d S )EN©	r   r   r   ÚbrM   rM   ÚcrN   rN   ©r   rM   rN   ÚdTr   ©	é   rR   rR   é   rS   rS   é   r?   é   ©r   rM   ÚabcdrM   ©Únamer   r   rR   rS   r?   r   FrC   ©r   r   rM   rM   ©r   rM   Úz©rN   rP   rN   rP   ©rN   rP   Úy©rR   rS   rT   r?   ©ÚAÚBÚvaluesrb   rd   )rT   é   r   ©Únumeric_onlyzJohn P. Doez	Jane DoveÚ	person_idÚperson_name©r!   c                 S   s   | S ©Nr   ©Úxr   r   r   Ú<lambda>~   ó    ztest_basic.<locals>.<lambda>r   c                 S   s   |   d¡jd S )Nri   r   )Údrop_duplicatesÚilocrl   r   r   r   r   …   s   ztest_basic.<locals>.fú7DataFrameGroupBy.apply operated on the grouping columns©Úmatch©rY   Ústr)rU   é   é   )r   é
   é   é   é(   )Úbinsúusing SeriesGroupBy.sumc                 S   ó
   t  | ¡S rk   ©r   r=   ©Úxsr   r   r   rn   �   ó   
 zusing DataFrameGroupBy.sumc                 S   ó   t j| dd�S ©Nr   ©Úaxis©r   r1   r�   r   r   r   rn   §   ó    c                 S   r„   r…   rˆ   r�   r   r   r   rn   ª   r‰   zusing DataFrameGroupBy.maxc                 S   s   t j | ¡S rk   )r   ÚmaximumÚreducer�   r   r   r   rn   °   ó    )Úcheck_dtype)rU   rw   rx   éûÿÿÿ)iöÿÿÿr   ry   rz   r{   r|   c                 S   r   rk   r€   r�   r   r   r   rn   Å   rƒ   c                 S   r   rk   r€   r�   r   r   r   rn   Ï   rƒ   )rR   r   r   r   ©r   rR   rS   rT   r?   )Úlabels©r   ©ÚfooÚbarÚbazÚquxéd   ©r:   ©r—   r?   )r   r   ©ÚsortrD   é   ©Úfuture_stack©r+   r2   r<   r4   z25%z50%z75%r1   )6r   r   r   Úlistr   ÚnanrF   r2   ÚtmÚassert_frame_equalr   r=   ri   Ú	transformrp   rq   Úassert_produces_warningÚFutureWarningrH   Úcopyr   r   ÚobjectÚastypeÚpdÚcutr   Úassert_series_equalr1   rŠ   r‹   Úfilterr)   r   rd   r   r   rY   ÚrandomÚdefault_rngÚintegersr   Ústandard_normalÚasarrayr"   ÚdescribeÚcodesÚargsortÚtaker   ÚrepeatÚassert_index_equalÚstackÚget_level_values) Úusing_infer_stringrJ   ÚdataÚ	exp_indexÚexpectedr$   Úcat1Úcat2rI   ÚgbÚexp_idxrm   Úgr   ÚmsgÚdtyperN   ÚgbcÚresult2Úresult3Úresult4Úresult5Úlevelsr´   ÚgroupedÚdesc_resultÚidxÚ
ord_labelsÚord_dataÚexp_catsÚexpcÚexpr   r   r   Ú
test_basic^   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 )NrS   é   r   rM   ry   r   rU   rR   ÚIndex1ÚIndex2)rË   r´   r   ©r¼   r   ©ÚlevelrD   é   z&you will need to pass a length-1 tuplers   )r   r   r   r   r   ÚrangerF   r¢   r¥   r¦   Ú	get_groupr£   )rD   rI   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 )Nrb   é   rc   )ÚhighÚmedÚlowr?   g      (@)rA   ÚdoseÚoutcomes)râ   rá   rà   Tr   rA   rã   r   )rÚ   Úsort_remaining)râ   rá   rà   râ   rá   rà   )rb   rb   rb   rc   rc   rc   r   rS   r+   ©r   rY   )r   r   r   r   rã   rF   Úvalue_countsr#   r   r   Úfrom_arraysr   r¢   r¬   ©rI   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   rM   r   )ÚmissingÚdenserd   rí   rî   TrC   r   )r   rR   ç       @rd   )r   r!   c                 S   r„   r…   )r   r2   rl   r   r   r   rn   I  r‰   ztest_apply.<locals>.<lambda>zusing DataFrameGroupBy.meanrs   rR   r   rr   c                 S   s   dS ©NrR   r   rl   r   r   r   rn   Z  ro   )r   r    r   r   r   r   rF   r   rè   rH   r¢   r£   r2   r¥   r¦   Úaggr   r¬   )
r   rî   rí   rd   rI   rÌ   rÎ   r¾   r$   rÄ   r   r   r   Ú
test_apply9  s.   þÿrò   c                 C   sp  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ƒ|r dddœndd�}t
 ||¡ |d  ¡ }|d }t
 ||¡ t g d¢g d¢dd�g d¢g d¢dœ}	t|	ƒ}|jd | d�}
|
 ¡ }tt	d!ƒd t	d"ƒdd#�}td$d$gd%d&gd'œ|d�}| �s	tt	d"ƒd t	d"ƒdd#�}| |¡}t
 ||¡ |jd d(g| d�}| d)¡}tg d*¢t g d¢g d¢dd�g d+¢d,œƒ d d(g¡}| �sHt||jjd-dggd d(gƒ}t
 ||¡ d.D ]}|\}}| |¡}||j|k|j|k@  }t
 ||¡ �qPg d/¢g d0¢g d1¢d2œ}	t|	ƒ}t |d	 t dd3d4¡¡}||d5< |jd5d6gd7| d8�}| d)¡}|jd5d6gd| d8�}| d)¡ ¡ }t
 ||¡ d S )9NrZ   r[   Tr   r]   r^   r`   ra   r“   r”   rS   rE   )rb   rc   rE   rC   r   rd   r   ÚABCr   r   rb   rc   )r“   r”   r“   r”   )rd   rE   ÚABÚ )r   rM   r   rM   ©r   rM   rN   ©rR   rR   rS   rS   ©ry   rz   r{   r|   )ÚcatÚintsÚvalrù   Úabrë   )rY   r   r   g      ø?ç      4@r{   )rú   rû   rú   r2   )ç      $@g      >@rý   g      D@©rR   rS   rR   rS   )rû   rù   rú   rR   ))r   rR   )rM   rS   )rM   rR   )r   rS   )ry   rœ   r?   rœ   r?   rR   rR   ©ry   rz   r{   r|   é2   é<   éF   )rP   rN   Úer   r   rP   rN   ©r“   r”   r•   ry   rT   rÜ   r•   F©Úas_indexrD   )r   r   rF   r   rè   r   r#   r=   r(   r    r¢   r£   r¬   r2   r   r"   rñ   Ú	set_indexrù   rd   rÝ   rú   rª   r«   r   ÚlinspaceÚreset_index)rD   r»   r¿   rÀ   rI   rÁ   r½   r¾   r$   rP   Úgroups_single_keyr   Úgroups_double_keyÚkeyrN   Úirù   ÚgroupsÚ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�}| sOt||jg d¢gddgƒ}| 	d¡}t
 ||¡ d S )N)rT   rT   r?   rU   r`   )ry   r—   éÈ   é"   )ÚC1ÚC2ÚC3r  )rR   rS   rT   rß   rù   r  rC   r   )ç      @r  g      @g      @)rþ   g      Y@g      i@g      A@)r  r  r   r2   )r   rª   r«   rY   rF   r   rè   r(   rd   rñ   r¢   r£   )rD   rP   rI   rd   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 )NrS   r   éÿ   i0u  r˜   é'  )rù   Úint_idÚother_idr“   Úcategoryrù   )rù   r  r  TrC   rR   )r   r   r®   r¯   r°   rù   r©   rv   rF   r+   r   rË   r6   r  r  )rI   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   rN   r   rö   ©r   ©rR   rS   rT   ©rù   Úvalsrù   rC   r   rS   Úint64©rÅ   rR   )r   rN   )r   r   rF   r  r   r¢   Úassert_dict_equal)rD   rù   rI   rÃ   r$   r¾   r   r   r   Útest_observed_groupsý  s   "
ýr&  z,keys, expected_values, expected_index_levelsr   )rw   é	   r   r   ru   rM   )	re   rœ   r   r   r   r'  r   r   r   ©r?   rU   rß   Úa2)	rw   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©rR   rR   rS   r   r  r(  )re   rœ   r'  )r   r)  rM   rN   r   r)  rM   rj   FrC   rN   rR   ©	r   r   r   rR   rR   rR   rS   rS   rS   rT   ©r   rR   rS   )r´   r   r   )
r   r   r  ÚdroprF   r=   r   r   r¢   Úassert_equal)
ÚkeysÚexpected_valuesÚexpected_index_levelsr*  rI   rÁ   r$   r   r´   r¾   r   r   r   Útest_unobserved_in_index  s6   üÿ
ùýr3  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   rM   rP   r  r   r!  rù   rC   r   rS   r#  r$  )	r   r   r   r¡   rF   r  r   r¢   r%  )rD   rI   rÃ   r$   r¾   r   r   r   Útest_observed_groups_with_nanH  s   þÿ

ýr4  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ù   FrC   r5  r   )
r   r   r¡   r   r   rF   r5   rq   r¢   r¬   )rù   r5  rI   r$   r¾   r   r   r   Útest_observed_nth]  s   r6  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Ús2r7  rC   rS   )
r   r   r¡   r   r   rF   r-   r
  r¢   r£   )rD   r7  r8  rI   r$   r¾   r   r   r   Ú#test_dataframe_categorical_with_nanh  s   ÿþÿr9  rD   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)rP   r   rM   r   rP   rM   )r   rM   rí   rP   r   )Úlabelrû   r:  )rD   r›   rû   r-   r¨   r$  rí   zDLabels and aggregation results not consistently sorted
for (ordered=z, observed=z, sort=z
)
Result:
)	r   r   r   rF   Ú	aggregater   ÚarrayÚisnar)   )	r   rD   r›   r:  rû   rI   r$   ÚaggrrÄ   r   r   r   Ú0test_dataframe_categorical_ordered_observed_sort|  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?   )ÚperiodsrS   r   r—   r˜   Tr‘   r™   FrC   r   rœ   r�   rŸ   rR   )rª   Ú
date_ranger   r®   r¯   r°   r   r   r   r±   rF   r2   r²   r"   r   r   r¢   r£   r³   r´   rµ   r¶   r¸   rº   r   r·   r¹   r   )rË   r´   rJ   r¼   r$   r¾   rÌ   rÍ   rÎ   rÏ   rÐ   rÒ   rÓ   r   r   r   Útest_datetimeŸ  s>   

ÿ


ÿÿÿrB  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 )NrS   r’   r   r?   rz   r˜   Tr‘   éÿÿÿÿrW   rj   rJ   FrÙ   rC   ©r   rR   rS   rT   ru   )r   r®   r¯   r°   r   r   r   r·   r   Úreshaper    r  rF   r=   r´   r   r   r¢   r£   )ÚsrË   r´   rJ   rI   r$   r¾   r   r   r   Útest_categorical_indexÊ  s$   &ÿÿrG  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   rS   )rz   r?   rj   r`   rU   r�   )r   r   r   r®   r¯   r±   rF   r³   r¢   r¸   r¹   r!   Úassert_categorical_equalrd   )rJ   rI   r$   r   r   r   Ú!test_describe_categorical_columnsã  s   ýÿrI  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 )Nry   rb   rc   rU   ÚXYXXYrS   )r   ÚmediumÚartistrK  r  rL  FrC   r   ©r   rY   rß   r?   ÚXÚYru   r   )r   rÜ   r    r©   rF   r+   Úunstackr³   r   r¢   r¸   r!   rH  rd   r   r   r¬   )rI   Úgcatr$   Úexp_columnsr¾   r   r   r   Útest_unstack_categoricaló  s   ÿrS  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 )NrR   rS   rT   r?   z$Grouper and axis must be same lengthrs   )r   r   r¡   rª   r«   Údropnard   ÚpytestÚraisesÚ
ValueErrorrF   r2   )Úseriesr}   r   r   r   Útest_bins_unequal_len  s
    "ÿrY  rX  r¼   r?   rT   rR   rS   ©rb   rc   c                 C   s   | d S rð   r   )rÎ   r   r   r   rn     s    rn   re   c                 C   sH   | j ttdƒdd�dd�}| t¡}t|t| ¡ ƒd�}t ||¡ d S )NÚABBAr  r$  FrC   r   )rF   r   r    r;  r   r0  r¢   r¬   )rX  r¼   rF   r$   r¾   r   r   r   Útest_categorical_series  s   
r\  c                     sð  t tg d¢g d¢ƒg d¢g d¢dœƒ‰ ˆ jddgdd	d
� ¡ } t tddgˆ jjjd�ddgddgdœg d¢d�}t | |¡ ‡ fdd„}d}tjt	|d�� ˆ jd|gdd	d
� ¡ } W d   ƒ n1 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©rR   rS   rS   r   )ry   é   r^  )ée   éf   ég   )rù   rb   rc   rù   rb   FTr  rR   rS   r  ry   r^  r_  éÍ   rj   c                    s   ˆ j | df S )Nrb   )Úloc)Úr©rI   r   r   rn   ;  r‰   ztest_as_index.<locals>.<lambda>z*A grouping .* was excluded from the resultrs   rÕ   )r   rM   rM   ru   )NrN  rc   rë   )r   r   rF   r=   rù   r   r¢   r£   r¥   r¦   r   r   r    r   )r$   r¾   r   rÄ   rF  Úgroup_columnsrY   r   re  r   Útest_as_index&  s^   ýÿýúÿýúÿýú	ürg  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ë   rb   ÚbaTr   rM  ÚbacFrš   )	r    r   r   r   r¢   r¸   rF   r-   r   )r   rI   r#   Únosort_indexr   r   r   Útest_preserve_categoriesb  s&   ÿÿÿÿrk  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)rR   rS   rR   rR   rS   )ry   é   rÕ   é   r  Úabaabri  Fr   T)rb   rc   r  r  rï   g      ð?g      9@rý   )r  r  ©Úbyr  rD   rf   rj   )r   r   r    r   r¡   rF   r2   r
  r"   r!   r¢   r£   )rI   Úexp_fullr'   Úresult1rÇ   r¾   r   r   r   Útest_preserve_categorical_dtype€  s6   üÿ	

üÿÿÿýõrs  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-   rt  rv  ru  Tr‘   )rC  éþÿÿÿrC  rw  )Úpayloadr'   rx  rw  rC  r$  r'   )
r   r   rF   Úgetattrr   rÅ   r  r¢   r£   r¬   )Úfuncrd   rN   rI   rÃ   r$   r¾   Úsgbr   r   r   Útest_preserve_on_ordered_ops¡  s   
ÿþr|  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 )NrS   r'  r,  r-  Tr‘   FrC   r   )	r   r   r   rR   rR   rR   rT   rT   rT   rD  rL   rO   rQ   rV   rM   r   rR   r?   )r   r   r®   r¯   r±   r<  r   r   rF   r2   r   r   r   r   r¢   r¬   r"   r   rd   r¡   Úassert_numpy_array_equal)r¼   r´   rJ   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 )NrT   )Útrainr  ÚtestrZ  rb   rc   r€  r  r  r¨   ©rÅ   rY   ræ   )r   r   rF   r-   r   r¢   r¬   ©rI   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ÚvaluerS   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)rp  Ú	ascendingi)  F)Úrightr�   Úvalue_grouprC   c                 S   s   t |  ¡ d ƒS )Nr   )ÚfloatÚsplitrl   r   r   r   rn     s    ztest_sort.<locals>.<lambda>)r  ru   )r   r   r®   r¯   r°   rÜ   r   Úsort_valuesrª   r«   r„  rF   r+   Úsortedr   r   rY   r¢   r¬   )rI   r�   Ú
cat_labelsr&   rÓ   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]ry   ry   )r�  rœ   rz   )ú(2.5, 5]rU   r{   )ú(5, 7.5]rß   r|   )r‘  r?   r  )ú(0, 2.5]rR   r  )r’  re   r  )rÜ   r“   r”   rj   rÜ   r‘   Frš   rR   r  rU   r{   rß   r|   ry   )r“  r‘  r’  r�  )r�  r‘  r’  r“  r“   r”   rX   ©r!   r   )r   r   rF   r-   r   r¢   r£   )r›   r   rI   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Û  re   rR   rS   rU   )ry   rœ   rU   rß   r?   rR   re   r   )Údtr“   r”   rj   r˜  r‘   r  r{   rß   r|   ry   r“   r”   rX   r”  Frš   )r   r   r   r   rF   r-   r¢   r£   )r›   r   rI   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   rM   rö   r  ©rR   rS   rR   rZ  rb   ru   FrC   )rT   rR   r   rc   r   ©Ú	min_countrR   rT   rS   )r   r   r   rF   rc   r=   r   r¢   r¬   r   r¡   ©rI   Ú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 )Nrš  rö   r  r›  rZ  rb   ru   FrC   )rS   rR   rR   rc   r   rœ  rR   rS   )r   r   r   rF   rc   r7   r   r¢   r¬   r   r¡   rž  r   r   r   Útest_empty_prodx  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Ú1minrT   )Úfreqr@  r'  )Úkey1Úkey2rd   r¥  r¦  FrC   rö   r   rd   r   r?   rœ   rU   rß   rS   r   )r   r   r    rª   rA  r   r   rF   r2   r   r   r¡   r¢   r£   )rI   r$   rÎ   r¾   r   r   r   Ú,test_groupby_multiindex_categorical_datetime�  s"   
ÿûÿ	
þû$r§  zas_index, expectedr+  r  r$  r]  r   rm   )r   r¼   rY   ©r   rM   rm   c                 C   sP   t tg d¢dd�g d¢g d¢dœƒ}|jddg| d	d
�d  ¡ }t ||¡ d S )Nr+  r  r$  r]  r   r¨  r   rM   Tr  rm   )r   r   rF   r=   r¢   r/  )r  r¾   rI   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 )NrO   Fr   )Nr   rM   rN   rR   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?   rb   r  rc   r`   rE   rG   rR   r†   )r§   r©   r   r.  )rI   Údf_catr   r   r   r­  Ù  s   r­  Ú	operationrñ   rH   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“   rb   r�  )ÚoneÚthreer¯  Útworc   )rS   r?   rR   rT   rE   ©r¼   r   rY   TrC   rH   úusing np.sumr~   rs   )r   rÅ   r   rè   r   r#   rF   r¢   r¥   r¦   ry  r=   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±  rb   rc   r   rS   r?   rR   rT   rE   r²  rñ   z.The 'downcast' keyword in fillna is deprecatedrs   r   Úinfer)ÚdowncastrC   r~   r³  )r   r   r   Ú	sortlevelr   r   r¡   r¢   r¥   r¦   ÚfillnarF   ry  r=   r¬   )	r­  rD   r®  r   Ú_r¾   rÄ   rÌ   r$   r   r   r   Ú)test_seriesgroupby_observed_false_or_none  s(   þûúÿþr½  zobserved, index, datar”   r“   rb   r�  )r¯  r¯  r°  r°  r¯  r¯  r±  r±  rc   )rS   rS   r?   r?   rR   rR   rT   rT   r‘   r·  )rb   rc   Nc                 C   s>   t ||dd�}| jddg|d�d  dd„ ¡}t ||¡ d S )NrE   r²  rb   rc   rC   c                 S   s   |   ¡ |  ¡ dœS )N©r4   r1   r¾  rl   r   r   r   rn   M  s    z8test_seriesgroupby_observed_apply_dict.<locals>.<lambda>)r   rF   rH   r¢   r¬   )r­  rD   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 )Nrb   rc   FrC   rE   )rF   r2   r¢   r¬   )r­  r¾   r$   r   r   r   Ú4test_groupby_categorical_series_dataframe_consistentR  s   rÀ  Úcode)rR   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`   )rC  rw  éýÿÿÿéüÿÿÿ)rU   rß   re   rœ   rö   rë   r  z+DataFrame.groupby with axis=1 is deprecatedrs   rR   F)r‡   rD   z5The 'axis' keyword in DataFrame.groupby is deprecatedr   )r   r   r   r    r¢   r¥   r¦   rF   r2   ÚTr£   )rÁ  rI   rù   rÄ   rÁ   r$   Úgb2r¾   r   r   r   Útest_groupby_categorical_axis_1Y  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‘   rR   rS   )ÚNameÚItemrÉ  rÊ  rj   rC   T)Úskipna)	r   r   r§   rF   rñ   r=   r
  r¢   r£   )rD   r   rI   r¾   r$   r   r   r   Ú$test_groupby_cat_preserves_structurei  s   þÿýrÌ  c                  C   s^   t g d¢tdƒdœƒ} tjtdd�� |  d¡ dd„ ¡ W d   ƒ d S 1 s(w   Y  d S )	NrZ   r?   ©r>   rû   z'vau'rs   r>   c                 S   s&   t | jd d g| jd d gdœƒS )NrC  r>   ÚvaurÍ  )r   rq   )Úrowsr   r   r   rn     s     ÿz/test_get_nonexistent_category.<locals>.<lambda>)r   rÜ   rU  rV  ÚKeyErrorrF   rH   re  r   r   r   Útest_get_nonexistent_categoryz  s   
ÿ"ÿrÑ  c                 C   s   | dkr	t  d¡ tttdƒtdƒd�ttdƒd tdƒd�dgd	 d
œƒ}t| |ƒ}|r/d	nd}|jddg|d�d }| dk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ô   rS   çš™™™™™¹?r?   ©Úcat_1Úcat_2r„  rl  rØ  rÙ  rC   r„  r,   ©r/   r.   ú(empty group due to unobserved categoriesrs   )rU  Úskipr   r   r    r   rF   Úhasattrry  rV  rW  r   )Úreduction_funcrD   rI   r%   Úexpected_lengthÚseries_groupbyrñ   r$   r   r   r   Ú0test_series_groupby_on_2_categoricals_unobserved…  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ô   rS   rÖ  r?   r×  ÚACÚBCÚCAÚCBÚCCrØ  rÙ  FrC   r„  rÚ  rÛ  rs   r   r=   )rU  rÜ  ÚmarkÚxfailÚapplymarkerr   r   r    Útupler   rF   ry  rV  rW  Ú-_results_for_groupbys_with_missing_categoriesrc  rª   r=  r   Ú
issubdtyperÅ   Úinteger)rÞ  Úrequestré  rI   Ú
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×  ©)rb   Ú2)rc   rù  )rE   Ú1)rE   rù  rØ  rÙ  TrC   )	rU  rÜ  r   r   r    rF   r   ry  r   )rÞ  rI   Ú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Ù  rC   rÚ  rÛ  rs   )rU  rÜ  r   r   r    rF   r   rV  rW  ry  rí  r   r¡   rc  Úisnullr)   )rÞ  rD   rI   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)ry   rœ   r?   rR   rø   )rP   rN   rP   rN   r  r“   r   rz   rU   rÜ   r•   TF©r  r›   rD   r2   )	r   rª   r«   r   r	  rF   rñ   r¢   r¬   )rP   rI   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   rR   rR   rS   rS   )r   r   r   r   rR   )Úidr  r„  r  r  r„  r-  ru   r   )r   r   r  rF   rñ   r   r¢   r£   )rz  r1  rI   r$   r¾   r   r   r   Ú$test_groupby_agg_categorical_columns1  s   
ýÿúÿr  c                  C   s~   t dtg d¢g d¢d�iƒ} t dddgit ddg¡d�}|  g d¢¡ tj¡}t 	||¡ |  g d¢¡ ¡ }t 	||¡ d S )	Nrb   rš  rö   r  rS   rR   r   r›  )
r   r   r   r<  rF   rñ   r   r6   r¢   r£   ©rI   r¾   r$   r   r   r   Útest_groupby_agg_non_numericF  s   r  rz  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Í  rM   r  r$  rZ  rb   rc   ru   ©r   rY   rÅ   )
r   r   rù   Ú
as_orderedrF   ry  r   rÅ   r¢   r¬   )rz  rI   Ú
df_groupedr$   r¾   r   r   r   Ú<test_groupby_first_returned_categorical_instead_of_dataframeQ  s    ÿr	  c                  C   sx   t  ddg¡} d| j_tg d¢tg d¢t| ƒd�dœƒ}tdd	d
git| dd�d�}|jdddd� 	¡ }t
 ||¡ d S )NrR   rS   F)rR   rT   rU   re   r÷   r  rV   r   rï   g      @rM   ru   rØ   rš   )r   r<  ÚflagsÚ	writeabler   r   r   r   rF   r2   r¢   r£   )rJ   rI   r¾   r$   r   r   r   Útest_read_only_category_no_sort`  s   ÿr  c                  C   s¶   t g d¢g d¢dœƒ} | d  d¡jjg d¢dd�| d< t d	d	d
œd	dd
œddd
œddd
œdœƒ}|jddd�}tg d¢g d¢dddd�|_| jddgdd� ¡  	¡ }t
 ||¡ d S )N)ÚsmallÚlarger  r  rK  r  r  rK  )rE   rb   rb   rE   rb   rE   rb   rE   )r“   r”   r“   r  )Útinyr  rK  r  Tr‘   r   )rb   rE   rR   rT   rS   r”   r   r†   )r   r   rY   rÅ   FrC   )r   r©   rù   Úset_categoriesÚrename_axisr   r!   rF   r:   rP  r¢   r£   r  r   r   r   Ú#test_sorted_missing_category_valuesl  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©rR   rR   rS   rT   r  Úcol_catr   ru   r  r-   )r   r©   rF   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)rR   rR   rR   rR   rÿ   rÖ  gš™™™™™É?g333333Ó?)r“   r”   r“   Úfee)rb   rc   Únumerical_colÚ
object_colÚcategorical_colr  r  rb   rc   c                 S   s   |   ¡  ¡ S rk   )r=  r=   re  r   r   r   rn   ½  rŒ   z7test_aggregate_categorical_with_isnan.<locals>.<lambda>rR   rS   rZ  r   r   )r  r  r  rØ   )
r   r   r¡   r©   rF   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)rR   rR   rR   rS   rS   rT   )ÚWaitingÚOnTheWayÚ	Deliveredr  r  r  )Ú
package_idÚstatus)r  r  r  Tr   r!  zusing SeriesGroupBy.maxrs   r   Úlast_status)r  r  r  r  r  r  )r   r!  r"  )r   rª   ÚCategoricalDtyper©   r¢   r¥   r¦   rF   r¤   r1   r§   r£   )rI   Ú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   rR   rR   )r   rR   rR   r   rö   r   rR   r   rM   r   rN   ru   )r-   r0   rC   )r   r   r   r   r   r   r¡   rT  r©   r#  rF   ry  r¢   r¬   )rz  rD   rù   rû   rI   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  rT  r©   r#  rF   ry  r¢   r£   )rz  rD   rù   rû   rI   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)rM   rM   r   rö   r  rT   )r  r'   r  Frš   r   rR   Úintpr$  rS   )rM   r   rN   )
r   r   rÜ   rF   Úindicesr   r<  r0  r¢   r}  )rI   rÌ   r$   r¾   r  r   r   r   Ú2test_groupby_categorical_indices_unused_categories4  s   þÿýÿr-  c                 C   sj   t dg d¢iƒ}|d  d¡|d< t| d¡d | ƒƒ }ttg d¢ƒdtg d¢dd�d�}t ||¡ d S )Nr   r   r  rM   ru   )rY   r   )	r   r©   ry  rF   r   r   r   r¢   r¬   )rz  rI   r$   r¾   r   r   r   Ú1test_groupby_last_first_preserve_categoricaldtypeH  s   ÿr.  c               	   C   sŒ   t ddgddgddgdœƒ} | jdddœd�} | jd	d
gdd� ¡ d }tddgt tddgd	d�tddgd
d�g¡dd�}t 	||¡ d S )NrR   rS   ry   r^  rö   r  rV   r$  r   rM   TrC   rN   ru   ræ   )
r   r©   rF   r6   r   r   rè   r   r¢   r¬   r‚  r   r   r   Ú)test_groupby_categorical_observed_nuniqueT  s   ÿûr/  c                  C   sŽ   t jddgdd�} tddgddgddggddgd	� d| i¡}| d¡d  ¡ }tddgtddgdd
�dt jddgdd�d�}t 	||¡ d S )Nr  ÚbigTr   rR   rS   ÚgrpÚdescriptionrj   ru   r  )
rª   r#  r   r©   rF   r1   r   r   r¢   r¬   )rÅ   rI   r$   r¾   r   r   r   Ú,test_groupby_categorical_aggregate_functionsc  s   ÿ
þür3  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 )NrR   rS   r   r  rT   r?   )rm   r_   rm   )rD   rT  r_   r   )rT   r?   r   )	r   r   rF   r=   r   r   rY   r¢   r£   )rD   rT  rù   rI   rÁ   r$   r¾   r   r   r   r   Útest_groupby_categorical_dropnau  s   "r4  Ú
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©rS   rR   rS   rT   ©rR   r?   rT   rS   r   r?   rV   r   r6  r7  r)  r   rÚ  rÛ  rs   )rë  rU  ré  rê  rÜ  r   r   rÜ   r  r   rF   rV  rW  ry  r   rº   r   rù   r   r¢   r¸   )rð  r  r›   rD   rÞ  r5  r   rÄ   rI   r0  r%   rÁ   Ú	op_resultr$   r¾   r   r   r   Útest_category_order_reducer†  sP   þÿ

ÿ
ýüþr<  r6  r7  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 )Nr9  r:  r   r?   rV   r6  r   r7  r)  r   r»  z%DataFrameGroupBy.fillna is deprecatedrs   )r   r   rÜ   r  r   rF   r¦   r¢   r¥   ry  r   rº   r   r   r¸   )r  r›   rD   Útransformation_funcr5  r   rI   r0  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 )Nr9  r:  r   r?   rV   rÜ   r   r6  r7  r)  r   )r   r   rÜ   r  rF   ry  rù   r   r   rº   r   r¢   r¸   )r  r›   rD   r@  r5  r   rI   r0  rÁ   r;  r$   r¾   r   r   r   Útest_category_order_head_tailÚ  s2   þÿ
þrC  )rH   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 testr9  r:  r   r?   rV   r   r6  r7  r)  r   rH   rr   rs   c                 S   s   | j dd�S )NTrf   )r=   rl   r   r   r   rn     rŒ   z+test_category_order_apply.<locals>.<lambda>)rU  rÜ  r   r   rÜ   r  rF   r¦   r¢   r¥   ry  rù   r   r   rº   r   r¸   )r  r›   rD   r@  r5  r   rI   r0  rÁ   r>  rÄ   r;  r$   r¾   r   r   r   Útest_category_order_applyþ  sD   ÿ
þÿ
ÿþrD  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Ü   r8  râ  i'  rC  r9  r   r?   rV   r   r6  r7  r)  Tr   )rT   rS   rR   )rS   rR   rT   )r   r   rY   rM   )r   r)  )r   r)  rM   )rU  rÜ  r   r   r   r   rÜ   r  rF   r=   r   r   r   Ú
from_framer   r   r¢   r£   )r  r›   r5  r   r   ÚgrouperrI   r0  rÁ   r$   r¼   r   r¾   r   r   r   Útest_many_categories'  s:   

ÿrG  Úcat_columnsr0  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?   rU   rß   re   rV   r  z+The default of observed=False is deprecatedrs   )r   r©   Úsetr¦   r¢   r¥   rF   )rH  r0  rI   rÄ   Úklassr   r   r   Útest_groupby_default_deprO  s   "ÿrK  Ú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â  r6   rR   zGH#52848 - raises a ValueError)r   r   rR   )rS   rT   rT   r(  )rL  r)  rM   r  )rL  r)  r)  rj   ro  rM   rÚ  rL  rÛ  rs   r:   c                 S   s   g | ]}|d f‘qS )rõ   r   )r…  Úindr   r   r   r†  †  s    z!test_agg_list.<locals>.<listcomp>rC  )rÝ  r
   rU  rÜ  rë  ré  rê  r   r   r©   r.  rF   r   rV  rW  rñ   ry  r  r   Úfrom_tuplesr!   r¢   r/  )rð  r  rD   rÞ  r*  r0  rÄ   rI   rÁ   r%   r$   r¾   r   r   r   Útest_agg_list[  sX   ÿÿþ
ÿ
ýü
 ÿrO  )ir   Únumpyr   rU  Úpandasrª   r   r   r   r   r   r   r	   Úpandas._testingÚ_testingr¢   Úpandas.api.typingr
   Úpandas.tests.groupbyr   r¡   r(   rí  ré  ÚfilterwarningsrK   rÔ   rÞ   rê   Úparametrizerò   r  r  r  r&  r3  r4  r6  r9  r?  rB  rG  rI  rS  rY  rÜ   Úrenamer\  rg  rk  rs  r|  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  r6   r+   r  r  r	  r  r  r  r  r%  rv   Úboolr)  r*  r-  r.  r/  r3  r4  r<  r?  rC  rD  rG  rK  rO  r   r   r   r   Ú<module>   s    $	ùø	÷
öõôóòñðïîíìëêéä
 
 (

$
uýþýùþ" +
$ùþ

<!



üþ
	%
"
2ÿûþýÿþõþ



ýùÿó
ýú"ö
ýú"öäþ
,	
&4

*
þ

-8ÿÿÿÿ
0 !&
'
