U
    ¾mœdÄ  ã                   @   s\  d Z ddlZddlZddlmZ ddlZddlZddlZddlm	Z	 ddl
mZ ddlZddlmZmZmZmZmZmZ ddlmZ ddlmZ dd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!ej" #ddd„ dd„ dd„ gg¡dd„ ƒZ$d d!„ Z%d"d#„ Z&ej" #d$d%d&d'd(gd)i fd*d+gd, e'e(e(e(d-œfd.d/gd, e'e(e(e(d-œfd%d&d'd(gd0d1d)ifd*d+gd, d0e(e(e(d-œfd.d/gd, d0d2d2d2d-œfg¡d3d4„ ƒZ)ej" #d5d%d6d7gd8d9gd:d;ggd)d)d<œfd*d=gd6 gd, d2fd.d6gd6 gd, d2d2d<œfg¡d>d?„ ƒZ*d@dA„ Z+dBdC„ Z,dDdE„ Z-dFdG„ Z.dHdI„ Z/dJdK„ Z0dLdM„ Z1dNdO„ Z2dPdQ„ Z3dRdS„ Z4ej" #dTdUd„ dVd„ dWd„ dXd„ dYd„ dZd„ g¡d[d\„ ƒZ5ej" #d]d^ged_gd^d`�fd^daged_gd6ggdgdggd^dagdb�fg¡ej" #dcddded)dfd2g¡ej" #dgddded)dfd2g¡ej" #dhdidjdkg¡dldm„ ƒƒƒƒZ6ej" #d]d^ged_gd^d`�fd^daged_gd6ggdgdggd^dagdb�fg¡ej" #dndod_dpg¡ej" #dqe7e'e(g¡ej" #dhdidjdkg¡drds„ ƒƒƒƒZ8dtdu„ Z9dvdw„ Z:ej" #dqej;ej<g¡ej" #dxdydzd{d|d}d~g¡dd€„ ƒƒZ=d�d‚„ Z>ej" #dƒe ?e@d„ƒ¡e Add,¡ejBd…d,d†d‡�e Cdˆd‰dŠg¡g¡d‹dŒ„ ƒZDd�dŽ„ ZEd�d�„ ZFG d‘d’„ d’ƒZGG d“d”„ d”ƒZHej" #d•d–d—ejIfd˜d_d,gdd6gd™dšgfd—d›d„ fd—dœd„ fd˜d_d,gd_d_gd™dšgfe Jd—d|¡e Jd�ejK¡e Jd—džd„ ¡d_d,gd™dšgd_d_gfg¡dŸd „ ƒZLd¡d¢„ ZMd£d¤„ ZNej" #d¥d¦d{gig d{gd§œg¡d¨d©„ ƒZOdªd«„ ZPd¬d­„ ZQd®d¯„ ZRd°d±„ ZSej" #d²d³d„ d´d„ dµd„ g¡d¶d·„ ƒZTd¸d¹„ ZUej" #d²dºd„ eUg¡d»d¼„ ƒZVd½d¾„ ZWej"jXd¿dÀ�dÁdÂ„ ƒZYG dÃdÄ„ dÄƒZZdÅdÆ„ Z[ej" #dÇd{d{dÈœd_d&gd^d¦gdÈœfdÉd{idÉd^d¦gifdÊd{idÊd_d&gifg¡dËdÌ„ ƒZ\ej" #dÇd{d|gd{dÈœdÍdÎgfd{d{d|gdÈœdÏdÐgfdÉd{d|gidÑdÒgfg¡dÓdÔ„ ƒZ]dÕdÖ„ Z^d×dØ„ Z_dÙdÚ„ Z`dÛdÜ„ ZadÝdÞ„ Zbdßdà„ Zcej" #dádâdãdägdågfdædãdçgdègfg¡dédê„ ƒZdej" #dëd}dìdígfd%dîdïgfg¡dðdñ„ ƒZeej" #d²d{d|d.g¡dòdó„ ƒZfej" #d²d{gd}d|gdad%idôd~d§œg¡dõdö„ ƒZgej" #d÷d;døgd;dùgd8dúggd8d;gdúdødùggdûœfd;døgd;dùgdüdúggd;dügdødùgdúgdûœfd^d_gd^d_gdad6gdad,ggd^dagd_d6d,ggdûœfejhd^d_gd^d6gdad,gdad,ggd^dagd_d6gd,gdûœej"jXdý�g¡dþdÿ„ ƒZi�d �d„ Zj�d�d„ ZkdS (  zN
test .agg behavior / note that .apply is tested generally in test_groupby.py
é    N)Úpartial)ÚSpecificationError)Úis_integer_dtype)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚconcatÚto_datetime)ÚGroupingc                  C   sB   t ddddgddddgdœƒ} |  d	¡d
 }dd„ }| |¡ d S )NÚaÚbÚcé   é   é   é   )ÚkeyÚvaluer   r   c                 S   s   t | ƒdkst‚|  ¡ S ©Nr   )ÚlenÚAssertionErrorÚsum©Úx© r   úf/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/groupby/aggregate/test_aggregate.pyÚ
dummy_func"   s    z3test_groupby_agg_no_extra_calls.<locals>.dummy_func)r   ÚgroupbyÚagg)ÚdfÚgbr   r   r   r   Útest_groupby_agg_no_extra_calls   s    r"   c                 C   s:   |   dd„ dd„ g¡}| tj¡}| ¡ }t ||¡ d S )Nc                 S   s   | j S ©N©Úyearr   r   r   r   Ú<lambda>*   ó    z&test_agg_regression1.<locals>.<lambda>c                 S   s   | j S r#   ©Úmonthr   r   r   r   r&   *   r'   ©r   r   ÚnpÚmeanÚtmÚassert_frame_equal)ÚtsframeÚgroupedÚresultÚexpectedr   r   r   Útest_agg_regression1)   s    r3   c              	   C   sf   |   d¡d }d}tjt|d�� | dd„ ¡ W 5 Q R X tjt|d�� | dd„ ¡ W 5 Q R X d S )NÚAÚCzMust produce aggregated value©Úmatchc                 S   s   |   ¡ S r#   )Zdescriber   r   r   r   r&   5   r'   z#test_agg_must_agg.<locals>.<lambda>c                 S   s   | j d d… S ©Nr   ©Úindexr   r   r   r   r&   7   r'   )r   ÚpytestÚraisesÚ	Exceptionr   )r    r0   Úmsgr   r   r   Útest_agg_must_agg0   s    r?   c                 C   sH   dd„ }| j  | j| jg¡ |¡}|  ddg¡ ¡ d }t ||¡ d S )Nc                 S   s   |   ¡ S r#   ©r   r   r   r   r   r&   ;   r'   z(test_agg_ser_multi_key.<locals>.<lambda>r4   ÚBr5   )r5   r   r4   rA   Ú	aggregater   r-   Úassert_series_equal)r    ÚfÚresultsr2   r   r   r   Útest_agg_ser_multi_key:   s    rF   c                  C   s  t dddtjddddgdddtjddd	d
gdœtjddddddddgddgd�d�} t dddddddtjddddgd
ddddddtjd	dddgddddtjdddddtjd gd!d"dd#tjd$d#dddtjtjgd%œƒ}| ddg¡}|d&d'g  ¡ }t || ¡ d S )(Né   é   r   r   r   é7   éM   é!   é,   é   )Úv1Úv2)r   é_   )r   éc   )r   rP   )r   rQ   )ÚbigÚdamp)ÚblueÚdry)ÚredrV   )rV   ÚwetÚby1Úby2©Únamesr9   é   é	   éX   rQ   rV   rT   r   rR   é   rW   rU   rP   rS   )rN   rO   rX   rY   rN   rO   )	r   r+   Únanr   Úfrom_tuplesr   r,   r-   r.   )r2   r    Úgr1   r   r   r   Ú$test_groupby_aggregation_mixed_dtypeA   sN    þø
õûôüÿrc   c                  C   s”   ddddgddt jdgddt jdgddt jdgg} t| t ddddg¡d�}|jddd	�}|jdd
�}tddddgddddgdœƒ}t ||¡ d S )NTF)r4   r   )r4   r   )rA   r   )rA   r   )ÚdataÚcolumnsr   ©ÚlevelÚaxis)Znumeric_onlyç       @r   ©r   r   )	r+   r`   r   r   ra   r   r   r-   r.   )Úlstr    r!   r1   r2   r   r   r   Ú+test_groupby_aggregation_multi_level_columnr   s    
üþrl   c                 C   sê   | j | tj dd�}| jtjks$t‚tg tjtg tjd�d�}t 	| 
¡ |¡ t 	| tj
¡|¡ tj	| tj
¡|dd� |j |d tj dd�}t|jttg dtjd�d�}t | 
¡ |¡ t | tj
¡|¡ t | tj
¡|¡ d S )	NF©Z
group_keys©Údtype©ro   r:   )Zcheck_index_typer4   )Únamero   )re   ro   r:   )r   r+   r`   ro   Úfloat64r   r   r   r-   rC   r   r   Úapplyr   re   Úfloatr.   )Útsr/   r0   ÚexpZexp_dfr   r   r   Útest_agg_apply_corner†   s    ýrw   c                 C   s˜   t  ¡ }| dd„ ¡}|jjd j}t| jt|ƒƒ|jjd< | 	t
j¡}| ¡ }t  ||¡ t| jt|ƒƒ|jjd< | 	t
j¡}| ¡ }t  ||¡ d S )Nc                 S   s   | j S r#   r$   r   r   r   r   r&       r'   z1test_agg_grouping_is_list_tuple.<locals>.<lambda>r   )r-   ZmakeTimeDataFramer   ÚgrouperZ	groupingsZgrouping_vectorr   r:   Úlistr   r+   r,   r.   Útuple)ru   r    r0   rx   r1   r2   r   r   r   Útest_agg_grouping_is_list_tuple�   s    r{   c                 C   s2   |   ddg¡}| tj¡}| ¡ }t ||¡ d S )Nr4   rA   r*   )Zmframer0   r1   r2   r   r   r   Útest_agg_python_multiindex¯   s    r|   Úgroupbyfuncc                 C   s   |   ¡ S r#   )Úweekdayr   r   r   r   r&   ¸   r'   r&   c                 C   s   | j S r#   r(   r   r   r   r   r&   ¸   r'   c                 C   s¤   |   |¡}|d  d¡}|d  ¡ }t ||¡ | d¡}| ¡ }t ||¡ | dddddœ¡}t|d  ¡ |d  ¡ |d  	¡ |d	  
¡ dœƒ}t ||¡ d S )
Nr4   ÚstdÚvarr,   Úsem)r4   rA   r5   ÚDrA   r5   r‚   )r   r   r   r-   rC   rB   r€   r.   r   r,   r�   )r/   r}   r0   r1   r2   r   r   r   Útest_aggregate_str_func·   s     





üÿrƒ   c              
   C   st   t dddddddgttjddddddgdd�dœƒ}| d¡ ¡ }t ddd	gitddgdd
�dd�}t ||¡ d S )Nr   r   ZFloat64rn   ©r   r   r   r   g(µ¦yâ?r   ©rq   ©r:   ro   )	r   r   ÚpdÚNAr   r   r   r-   r.   )Úany_numeric_ea_dtyper    r1   r2   r   r   r   Útest_std_masked_dtypeÔ   s    þÿ
  ÿrŠ   c              	   C   sZ   | j dd�}|dkrt}d}nt}d|› d�}tj||d�� |j|dd	� W 5 Q R X d S )
Nr   ©rg   )ZidxmaxZidxminz3reduction operation '.*' not allowed for this dtypez
Operation z does not support axis=1r6   r   ©rh   )r   Ú	TypeErrorÚ
ValueErrorr;   r<   r   )r    Úreduction_funcr!   Úerrorr>   r   r   r   Ú%test_agg_str_with_kwarg_axis_1_raisesã   s    r‘   z(func, expected, dtype, result_dtype_dictr   rG   rH   r]   Úint64r   gÙlßÌvø @r   )ÚiÚjÚkr€   g      @ÚInt64r”   rr   c                 C   s€   t ddddddggd t ddgd	d
dgg¡d� ||dœ¡}|jddd� | ¡}t |gd d	d
dgd� |¡}t ||¡ d S )Nr   r   r   r   rG   é   r   r   r“   r”   r•   ©re   ))r   r”   )r   r”   rf   )r   r   Úfrom_productÚastyper   r   r-   r.   )Úfuncr2   ro   Úresult_dtype_dictr    r1   r   r   r   Ú(test_multiindex_groupby_mixed_cols_axis1ï   s    þýÿr�   z&func, expected_data, result_dtype_dictr   r   é
   r_   é   é   )rž   r    gÍ;fž ö?c                 C   s˜   t t d¡ dd¡tdddgdd�tdd	dd	gd
d�dd� ddi¡}|jd
dd� | ¡}t |tdddgdd�tdd	gd
d�d� |¡}t 	||¡ d S )Nr_   r   r   r   r   Úyr…   rž   r    r   r’   )r:   re   ro   r–   rŒ   )rd   r:   re   )
r   r+   ÚarangeÚreshaper   rš   r   r   r-   r.   )r›   Úexpected_datarœ   r    r1   r2   r   r   r   Útest_groupby_mixed_cols_axis1  s"    üûýür¥   c           	      C   sà   |   d¡}dd„ }| |¡}| jdk ¡ }| jdk ¡ }t|jƒ}tt |g| ¡t	dƒdd�}t
 | d¡|¡ tt |g| ¡t	dƒdd�}t
 | d¡|¡ dd	„ }tƒ   | j¡ |¡}t|tƒsÌt‚t|ƒd
ksÜt‚d S )Nr4   c                 S   s   | j S r#   ©Úsize©Zserr   r   r   r&   %  r'   z-test_aggregate_item_by_item.<locals>.<lambda>ÚfooÚbarZBCD©r:   rq   c                 S   s   | j S r#   r¦   r¨   r   r   r   Úaggfun_12  s    z-test_aggregate_item_by_item.<locals>.aggfun_1r   )r   r   r4   r   r   re   r   r+   Úarrayry   r-   rC   ZxsZassert_almost_equalr   Ú
isinstancer   )	r    r0   Zaggfun_0r1   ZfoosumZbarsumÚKrv   r¬   r   r   r   Útest_aggregate_item_by_item"  s    


r°   c              	   C   sŽ   |   ddg¡}dd„ }tjtdd�� | |¡ W 5 Q R X |dd„ | D ƒ  |¡}| jd d …| jd	kf }|  ddg¡ |¡}t ||¡ d S )
Nr4   rA   c                 S   s   | j tkrtdƒ‚|  ¡ S )NúTest error message)ro   Úobjectr�   r   r¨   r   r   r   r›   =  s    
ztest_wrap_agg_out.<locals>.funcr±   r6   c                 S   s   g | ]}|d kr|‘qS )r5   r   )Ú.0r   r   r   r   Ú
<listcomp>D  s      z%test_wrap_agg_out.<locals>.<listcomp>r5   )	r   r;   r<   r�   rB   Úlocre   r-   r.   )Zthree_groupr0   r›   r1   Zexp_groupedr2   r   r   r   Útest_wrap_agg_out:  s    r¶   c                 C   sP   dt jfdt jfdt jfg}|  d¡d  |¡}tdddgƒ}t |j	|¡ d S )Nr,   ÚmaxÚminr4   r5   )
r+   r,   r·   r¸   r   r   r   r-   Úassert_index_equalre   )r    Úfuncsr1   Zexp_colsr   r   r   Ú*test_agg_multiple_functions_maintain_orderJ  s    r»   c                     s¬   t tj dd¡tjdddd�dddgd	�‰ ˆ  d
¡ dttj	dd�ttj	dd�gi¡} tjdd
dd�}t
 ddg¡}t ‡ fdd„dD ƒ¡j}t |||d�}t | |¡ d S )Néè  r   ú1/1/2012ÚS)ÚfreqÚperiodsr4   rA   r5   ©r:   re   Ú3Tç§èH.ÿï?©Úqçâé•²q¼?r—   )r4   Úquantilec                    s"   g | ]}ˆ   d ¡jj|d�j‘qS ©rÂ   rÄ   ©Úresampler4   rÇ   Úvalues©r³   rÅ   ©r    r   r   r´   `  s     z9test_agg_multiple_functions_same_name.<locals>.<listcomp>©rÃ   rÆ   ©re   r:   )r   r+   ÚrandomÚrandnr‡   Ú
date_rangerÊ   r   r   rÇ   r   ra   r­   ÚTr-   r.   )r1   Úexpected_indexÚexpected_columnsÚexpected_valuesr2   r   rÍ   r   Ú%test_agg_multiple_functions_same_nameS  s&    ý
ÿÿ  ÿr×   c               	      sæ   t tj dd¡tjddddd�tddd	gd
d�d�‰ ˆ  d¡ ddt	tj
dd�t	tj
dd�gi¡} tjddddd�}tjddddddgd
d d gd�}t ‡ fdd„dD ƒ¡j}t ˆ  d¡j ¡ |g¡}t |||d�}t | |¡ d S )Nr¼   r   r½   r¾   Zdti)r¿   rÀ   rq   r4   rA   r5   Úalphar…   rÁ   rÂ   ÚohlcrÃ   rÄ   rÆ   r—   )r4   rÙ   Úopen)r4   rÙ   Úhigh)r4   rÙ   Úlow)r4   rÙ   Úclose)r4   rÇ   r4   rZ   c                    s"   g | ]}ˆ   d ¡jj|d�j‘qS rÈ   rÉ   rÌ   rÍ   r   r   r´   €  s     zKtest_agg_multiple_functions_same_name_with_ohlc_present.<locals>.<listcomp>rÎ   rÏ   )r   r+   rÐ   rÑ   r‡   rÒ   r   rÊ   r   r   rÇ   r   ra   r­   rÓ   Zhstackr4   rÙ   r-   r.   )r1   rÔ   rÕ   Znon_ohlc_expected_valuesrÖ   r2   r   rÍ   r   Ú7test_agg_multiple_functions_same_name_with_ohlc_presenth  s:    ý
 ÿú÷ÿ  ÿrÞ   c                 C   s„   | j ddgd�} ddg}ddg}|  d¡d  |¡}|  d¡d  |¡}t ||¡ |  d¡ |¡}|  d¡ |¡}t ||¡ d S )	NrA   r5   r˜   )r©   r,   r   )r   r   r4   r‚   )Zdropr   r   r-   r.   )r    rº   Zex_funcsr1   r2   r   r   r   Ú-test_multiple_functions_tuples_and_non_tuples‰  s    rß   c           
   	   C   s@  |   d¡}| tjtjdœ¡}| tjtjdœ¡}t||gddgdd�}|jdddd�jddd	�}tjtjgtjtjgdœ}| |¡}t	 
||¡ | tjtjtjgdœ¡}| tjtjtjgdœ¡}t	 
||¡ d
d„ }dd„ }d}	tjt|	d��& tjtjtjdœdœ}| |¡ W 5 Q R X tjg||gdœ}| |¡ d S )Nr4   ©r5   r‚   r,   r   r   )Úkeysrh   r   rŒ   rf   c                 S   s
   t  | ¡S r#   ©r+   r,   r   r   r   r   Ú	numpymean­  s    z:test_more_flexible_frame_multi_function.<locals>.numpymeanc                 S   s   t j| dd�S )Nr   )Zddof)r+   r   r   r   r   r   Únumpystd°  s    z9test_more_flexible_frame_multi_function.<locals>.numpystdúnested renamer is not supportedr6   ©r©   rª   )r   r   r+   r,   r   r	   Z	swaplevelZ
sort_indexrB   r-   r.   r;   r<   r   )
r    r0   ZexmeanZexstdr2   Údr1   rã   rä   r>   r   r   r   Ú'test_more_flexible_frame_multi_functionš  s&    

rè   c              	   C   s²   |   d¡}dddœddidœ}d}tjt|d�� | |¡ W 5 Q R X dddœddœ}tjt|d�� | |¡ W 5 Q R X dddœddœ}tjt|d�� | |¡ W 5 Q R X d S )	Nr4   r,   r   ræ   r   rà   rå   r6   )r   r;   r<   r   rB   )r    r0   rç   r>   r   r   r   Ú test_multi_function_flexible_mix¾  s    
ré   c                  C   s¦   t ddddgddddgd d ddgdœƒ} |  d¡}tddgdd�}|d  d	d
„ ¡}tddg|dd�}t ||¡ |d  dd
„ ¡}tddg|dd�}t ||¡ d S )Nr   r   r   r   ©r   r   r   r   r…   r   c                 S   s   | dk  ¡ S r   ©Úallr   r   r   r   r&   Ý  r'   z1test_groupby_agg_coercing_bools.<locals>.<lambda>FTr«   r   c                 S   s   |   ¡  ¡ S r#   )Zisnullrì   r   r   r   r   r&   á  r'   )r   r   r   rB   r   r-   rC   )ÚdatÚgpr:   r1   r2   r   r   r   Útest_groupby_agg_coercing_boolsÖ  s    (
rï   c                  C   sn   t dddddgdddddgdœƒ} |  d¡dg  ddi¡}t dddgiddgd	�jdd
d�}t ||¡ d S )Nr4   rA   r   r   ©r4   rA   r   r   r   r9   r   rŒ   )r   r   r   Zrename_axisr-   r.   )rí   r1   r2   r   r   r   Ú"test_groupby_agg_dict_with_getitemæ  s    ""rñ   Úopc                 C   s   |   ¡ S r#   r@   r   r   r   r   r&   ó  r'   c                 C   s   |   ¡ S r#   )Úcumsumr   r   r   r   r&   ô  r'   c                 C   s
   |   d¡S ©Nr   ©Ú	transformr   r   r   r   r&   õ  r'   c                 C   s
   |   d¡S ©Nró   rõ   r   r   r   r   r&   ö  r'   c                 C   s
   |   d¡S rô   ©r   r   r   r   r   r&   ÷  r'   c                 C   s
   |   d¡S r÷   rø   r   r   r   r   r&   ø  r'   c                 C   sd   t ddgddgdœƒ}| d¡d }| | d¡ƒd j}t|ƒsDt‚| | d¡ƒj}t|ƒs`t‚d S )Nr   FTr„   r   r   )r   Ú	set_indexr   ro   r   r   )rò   r    Úsr1   r   r   r   Útest_bool_agg_dtypeð  s    rû   zkeys, agg_indexr   r   r…   r   rZ   Úinput_dtypeÚboolZint32Zfloat32Úresult_dtypeÚmethodrs   rB   rö   c           
         sª   t dgdgdgdœƒ}|d  |¡|d< t| | ¡dg |ƒ}|‡ fdd„ƒ}|dkrbt d	d¡n|}t d|d jd	 gi|d
� ˆ ¡}	|dkršd	g|	j_t	 
||	¡ d S )Nr   r   Trê   r   c                    s   |   ˆ ¡jd S r   ©rš   Úilocr   ©rþ   r   r   r&     r'   z2test_callable_result_dtype_frame.<locals>.<lambda>rö   r   r9   rs   )r   rš   Úgetattrr   r‡   Ú
RangeIndexr  re   r[   r-   r.   )
rá   Ú	agg_indexrü   rþ   rÿ   r    rò   r1   rÔ   r2   r   r  r   Ú test_callable_result_dtype_frame  s    ÿ
r  ÚinputTç      ð?ro   c           
         s‚   t dgdg|gdœƒ}t| | ¡d |ƒ}|‡ fdd„ƒ}|dkrNt dd¡n|}t|d jd g|dd	� ˆ ¡}	t 	||	¡ d S )
Nr   r   rê   r   c                    s   |   ˆ ¡jd S r   r   r   rn   r   r   r&   5  r'   z3test_callable_result_dtype_series.<locals>.<lambda>rö   r   r«   )
r   r  r   r‡   r  r   r  rš   r-   rC   )
rá   r  r  ro   rÿ   r    rò   r1   rÔ   r2   r   rn   r   Ú!test_callable_result_dtype_series'  s     r	  c                  C   sf   t ddddgddddgdœƒ} |  d¡ ddd	d
dg¡}|jjd }tddd	d
dgƒ}t ||¡ d S )Nr   r   r   r   rð   r4   r   r·   r,   rÙ   r¸   )r   r   r   re   Úlevelsr   r-   r¹   )r    Úresr1   r2   r   r   r   Ú#test_order_aggregate_multiple_funcs;  s
    r  c              	   C   sÔ   t ddddddgddtjddtjgd	œ| d
�}| d¡}| ¡ }t ddddgtjgd dgd dgd gt dgddddgg¡tddddg| dd�| d�}t 	||¡ |jddd�}| ¡ }| 
¡ }t 	||¡ d S )Nr   r   r   r   é   rM   rž   r    r„   rn   r   r   rÚ   rÛ   rÜ   rÝ   ©ro   rq   )re   r:   ro   F©Zas_index)r   r‡   rˆ   r   rÙ   r   r™   r   r-   r.   Zreset_index)r‰   r    r!   r1   r2   Zgb2Úresult2Z	expected2r   r   r   Útest_ohlc_ea_dtypesG  s"    $þ
&ür  ÚhowÚfirstÚlastr¸   r·   r,   Úmedianc                 C   st   t dddgdœƒ}| d¡ d|i¡}|j | ¡|_| d¡ d|i¡}|dkr`|j tj¡|_tj||dd	� d S )
Nl   &tLWHd~ r   r   ©r   r¡   r¡   r   )r,   r  T)Zcheck_exact)	r   r   r   r   rš   r+   r’   r-   r.   )ro   r  r    r2   r1   r   r   r   Útest_uint64_type_handling]  s    r  c               	   C   sT   d} t ddddgddddgdœƒ}tjt| d�� | d	¡ d
d
g¡ W 5 Q R X d S )NzFunction namesr   r   r   r   r   rð   r6   r4   r¸   )r   r;   r<   r   r   r   )r>   r    r   r   r   Útest_func_duplicates_raisesk  s    r  r:   ÚabcZ2020r‚   )rÀ   r¿   )r   r   )r   r   )r   r   c                 C   s`   t dddgdddgdœ| d�}| d¡ dtji¡}t ddgddgdœƒ d¡}t ||¡ d S )Nr   r   r   )Úgroupr   r9   r  r   )r   r   r   r   Znuniquerù   r-   r.   )r:   r    r1   r2   r   r   r   Ú$test_agg_index_has_complex_internalss  s    r  c                  C   sr   t dddddgdddddgdddddgdœƒ} |  d¡ ¡ }t ddgddgd	œtddgdd
�d�}t ||¡ d S )Nr   r   ÚoneÚtwoÚthreeÚsix)Úkey1Úkey2Úkey3r   )r!  r"  r…   r9   )r   r   r¸   r   r-   r.   ©r    r1   r2   r   r   r   Útest_agg_split_block„  s    ýÿþr$  c               
   C   s²   t tjddd�ddddgdd	d
dgddddgtjddd�dd	d
dgdœƒ t¡} |  ddddg¡ ¡ }t t d¡gdgdgdgt d¡gdgdœt 	dg¡td�}t
 ||¡ d S )NÚ2000r   )rÀ   r   r   r   rç   r   r   r   Úe)r4   rA   r5   r‚   ÚEÚFr   r†   )r   r‡   rÒ   rš   r²   r   r¸   Ú	Timestampr+   r­   r-   r.   r#  r   r   r   Ú#test_agg_split_object_part_datetime•  s0    



úÿ	÷


ú
ör*  c                   @   sV   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	e
jd
dd�dd
dgg¡dd„ ƒZdS )ÚTestNamedAggregationSeriesc                 C   s�   t ddddgƒ}| ddddg¡}|jddd�}tdd	gddgdœd
dgt ddg¡d�}t ||¡ |jddd�}|dd
g }t ||¡ d S )Nr   r   r   r   r   r   r¸   r„   rH   r   r   rÏ   )r   r   ©r   r   r   r   r+   r­   r-   r.   )Úselfr    Úgrr1   r2   r   r   r   Útest_series_named_agg²  s      ÿz0TestNamedAggregationSeries.test_series_named_aggc              	   C   s\   t ddgƒ ddg¡}tjtdd�� | ¡  W 5 Q R X | g ¡}tg d�}t ||¡ d S )Nr   r   r   úMust provider6   r˜   )	r   r   r;   r<   r�   r   r   r-   r.   ©r-  r.  r1   r2   r   r   r   Útest_no_args_raises¿  s    

z.TestNamedAggregationSeries.test_no_args_raisesc                 C   s\   t dddgƒ dddg¡}|jddd�}tddgddgdœt ddg¡d�}t ||¡ d S )Nr   r   r   r   r   r„   r9   r,  )r-  r.  r0   r2   r   r   r   Ú*test_series_named_agg_duplicates_no_raisesÉ  s    $zETestNamedAggregationSeries.test_series_named_agg_duplicates_no_raisesc                 C   sd   t dddgƒ dddg¡}|jdd„ dd„ d�}tddgddgdœt ddg¡d	�}t ||¡ d S )
Nr   r   r   r   c                 S   s   dS r   r   r   r   r   r   r&   Ò  r'   z9TestNamedAggregationSeries.test_mangled.<locals>.<lambda>c                 S   s   dS ©Nr   r   r   r   r   r   r&   Ò  r'   r„   r9   r,  r1  r   r   r   Útest_mangledÐ  s    $z'TestNamedAggregationSeries.test_mangledÚinpÚanythingr¸   ©ÚcolumnÚaggfunc)r7  r¸   c              	   C   sZ   t ddddddddgƒ}dt|ƒj› �}tjt|d�� | |j¡j|d� W 5 Q R X d S )	Nr   r   r   r   rG   zfunc is expected but received r6   ©r   )	r   ÚtypeÚ__name__r;   r<   r�   r   rË   r   )r-  r6  rú   r>   r   r   r   Útest_named_agg_nametupleÖ  s    
z3TestNamedAggregationSeries.test_named_agg_nametupleN)r=  Ú
__module__Ú__qualname__r/  r2  r3  r5  r;   ÚmarkÚparametrizer‡   ÚNamedAggr>  r   r   r   r   r+  ±  s   
ýþr+  c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTestNamedAggregationDataFramec              	   C   s
  t ddddgddddgddd	d
gdœƒ}| d¡jddd�}t ddgdd
gdœtddgdd�ddgd�}t ||¡ tjtj	dd�}| d¡jddt
fdtjfddd|fd�}t dd	gddgddgddgdd
gddgdœtddgdd�dddddd gd�}t ||¡ d S )!Nr   r   r   r   r   r   rG   r—   rH   r\   ©r  r4   rA   r  ©r4   r·   ©rA   r·   )Úa_maxÚb_maxr…   rH  rI  rÁ   éb   rÄ   ©rA   r¸   r4   )Úb_minÚa_minÚa_meanrH  rI  Úa_98g      à?g      @g\�Âõ(\ï?g×£p=
×@rL  rM  rN  rO  )r   r   r   r   r-   r.   Ú	functoolsr   r+   Ú
percentiler¸   r,   )r-  r    r1   r2   Zp98r   r   r   Útest_agg_relabelç  s>    "ÿý
úúöz.TestNamedAggregationDataFrame.test_agg_relabelc                 C   sn   t ddddgddddgddd	d
gdœƒ}| d¡jf ddiŽ}t dddgitddgdd�d�}t ||¡ d S )Nr   r   r   r   r   r   rG   r—   rH   r\   rE  r  zmy colrF  r…   r9   ©r   r   r   r   r-   r.   ©r-  r    r1   r2   r   r   r   Útest_agg_relabel_non_identifier  s    "ÿ z=TestNamedAggregationDataFrame.test_agg_relabel_non_identifierc                 C   s  t ddddgddddgdœƒ}| d¡jddd	�}t ddgddgd	œtddgdd
�d�}t ||¡ tjtj	dd�}tjtj	dd�}d|_
d|_
t dddddgdddddgdœƒ}| d¡jd|fd|fd�}t ddgddgdœtddgdd
�d�}t ||¡ d S )Nr   r   r   r   r   rð   r4   rK  r„   r…   r9   é2   rÄ   éF   Úquant50Úquant70r   r   rG   )Úcol1Úcol2rZ  r[  )Zquantile_50Zquantile_70ç      ø?ç      @g333333û?gš™™™™™@)r   r   r   r   r-   r.   rP  r   r+   rQ  r=  )r-  r    r0   r2   rX  rY  Útestr   r   r   Útest_duplicate_no_raises  s$    &"
 ÿþz6TestNamedAggregationDataFrame.test_duplicate_no_raisesc                 C   s€   t ddddgddddgdœt ddgd	d
gg¡d�}|jdd�jdddd�}t ddgddgddgdœddgd�}t ||¡ d S )Nr   r   r   r   r   rð   r4   rA   r   r   r9   r‹   rF  )r4   r¸   )rA   r,   )ZaaZbbÚccr\  g      @)r   r   r™   r   r   r-   r.   rT  r   r   r   Útest_agg_relabel_with_level-  s    þ  ÿ ÿz9TestNamedAggregationDataFrame.test_agg_relabel_with_levelc              	   C   sœ   t dddgdddgdœƒ}| d¡}d}tjt|d�� |jdd	� W 5 Q R X tjt|d�� | ¡  W 5 Q R X tjt|d�� |jd
dd� W 5 Q R X d S )Nr   r   r   r   rð   r4   r0  r6   )r©   rG  )r   r   r   r„   )r   r   r;   r<   r�   r   )r-  r    r0   r7   r   r   r   Útest_agg_relabel_other_raises:  s    
z;TestNamedAggregationDataFrame.test_agg_relabel_other_raisesc              	   C   sP   t ddgddgdœƒ}t d¡}tjt|d�� | d¡jdd	� W 5 Q R X d S )
Nr   r   r   rð   zColumn(s) ['C'] do not existr6   r4   )r5   r   ©r   )r   ÚreÚescaper;   r<   ÚKeyErrorr   r   )r-  r    r7   r   r   r   Útest_missing_raisesG  s    
z1TestNamedAggregationDataFrame.test_missing_raisesc                 C   s`   t ddgddgdœƒ}| d¡jt dd¡tjddd	�d
�}| d¡jddd
�}t ||¡ d S )Nr   r   r   rð   r4   rA   r   Úcountr8  ©r   r   )rA   r   )rA   rh  ©r   r   r   r‡   rC  r-   r.   rT  r   r   r   Útest_agg_namedtupleM  s    

 ÿz1TestNamedAggregationDataFrame.test_agg_namedtuplec                 C   sv   t ddgddgddgdœƒ}| d¡jdd	d
„ fddd
„ fd�}t ddgddgdœtddgdd�d�}t ||¡ d S )Nr   r   r   r   r   )r4   rA   r5   r4   rA   c                 S   s   dS r   r   r   r   r   r   r&   W  r'   z<TestNamedAggregationDataFrame.test_mangled.<locals>.<lambda>r5   c                 S   s   dS r4  r   r   r   r   r   r&   W  r'   ri  r…   r9   rS  rT  r   r   r   r5  U  s    $&z*TestNamedAggregationDataFrame.test_mangledN)r=  r?  r@  rR  rU  r_  ra  rb  rg  rk  r5  r   r   r   r   rD  æ  s   $	rD  zCagg_col1, agg_col2, agg_col3, agg_result1, agg_result2, agg_result3©©r¡   r4   r·   rm  )©r¡   rA   r,   g      @ç      @c                 C   s   t | ƒS r#   )r·   r   r   r   r   r&   h  r'   c                 C   s   dS r4  r   r   r   r   r   r&   i  r'   rn  c                 C   s   dS r4  r   r   r   r   r   r&   r  r'   c           
      C   s¶   t ddddgddddgddd	d
gdœƒ}t dddg¡|_tddgdd�}| d¡jdd�}t dddgi|d�}	t ||	¡ | d¡j| ||d�}t |||dœ|d�}	t ||	¡ d S )Nr   r   r   r   r   r   rG   r—   rH   r\   rE  ©r   r  rm  rn  r…   rl  )rH  rH  r9   )Zcol_1Zcol_2Zcol_3)	r   r   ra   re   r   r   r   r-   r.   )
Zagg_col1Zagg_col2Zagg_col3Zagg_result1Zagg_result2Zagg_result3r    Úidxr1   r2   r   r   r   Ú"test_agg_relabel_multiindex_column\  s$    !"ÿ
  ÿ
 ÿrr  c               	   C   sj   t ddddgddddgddd	d
gdœƒ} t dddg¡| _tjtdd�� |  d¡jdd� W 5 Q R X d S )Nr   r   r   r   r   r   rG   r—   rH   r\   rE  rp  rm  rn  zdo not existr6   ))ÚYr   r·   r;  )	r   r   ra   re   r;   r<   rf  r   r   rÍ   r   r   r   Ú,test_agg_relabel_multiindex_raises_not_exist�  s    "ÿrt  c                  C   sˆ   t ddddgddddgddd	d
gdœƒ} t dddg¡| _|  d¡jddd�}tddgdd�}t ddgddgdœ|d�}t ||¡ d S )Nr   r   r   r   r   r   rG   r—   rH   r\   rE  rp  rm  rn  )rm  r¸   r„   r…   r9   )	r   r   ra   re   r   r   r   r-   r.   )r    r1   rq  r2   r   r   r   Ú&test_agg_relabel_multiindex_duplicates›  s    "ÿ
 ÿru  Úkwargsr   ri  c                 C   sn   t dddgdddgdddgdœƒ}| d¡ | ¡}t ddgtddgddd�t d	d
gg¡d�}t ||¡ d S )Nr   r   r   r   rê   r   r’   r  r   r¸   rÁ   )r   r   r   r   r   ra   r-   r.   )rv  r    r1   r2   r   r   r   Ú test_groupby_aggregate_empty_key¬  s    "ýrw  c                  C   sb   t dddgdddgdddgdœƒ} |  d¡ dg i¡}t tdgg gg g gd�d	�}t ||¡ d S )
Nr   r   r   r   rê   r   r   )r
  Úcodesr˜   )r   r   r   r   r-   r.   r#  r   r   r   Ú-test_groupby_aggregate_empty_key_empty_return¹  s    "ry  c                  C   sb   t dddgd�} | jddgdd�jdtfd�}t dgtg g gg g gddgd	�d
�}t ||¡ d S )Nr   r   r   r˜   Frm   )rç   rç   rZ   rÏ   )r   r   r   ry   r   r-   r.   r#  r   r   r   Ú2test_groupby_aggregate_empty_with_multiindex_frameÁ  s     ÿrz  c                  C   st   t ddddddgdddddd	gd
œƒ} | jddd�}|jtjddd�d�}t dddgddd	gdœƒ}t ||¡ d S )Nr   r¡   Úzr  çš™™™™™é?ri   ç      @çÍÌÌÌÌÌ@ç      è?)r   Úvalr   Fr  r€  r¸   r8  ©Úmin_val)r   r‚  rj  ©r    r0   r1   r2   r   r   r   Ú9test_grouby_agg_loses_results_with_as_index_false_relabelË  s     ÿr„  c               	   C   sŽ   t ddddddgddddddgdddd	d
dgdœƒ} | jddgdd�}|jtjddd�d�}t dddgdddgdddgdœƒ}t ||¡ d S )Nr   r¡   r   r   r   r  r|  ri   r}  r~  r  )r   r   r€  r   r   Fr  r€  r¸   r8  r�  )r   r   r‚  rj  rƒ  r   r   r   ÚDtest_grouby_agg_loses_results_with_as_index_false_relabel_multiindexÙ  s    ýÿÿr…  r›   c                 C   s   |   ¡ S r#   )r,   ©rú   r   r   r   r&   ï  r'   c                 C   s
   t  | ¡S r#   râ   r†  r   r   r   r&   ï  r'   c                 C   s
   t  | ¡S r#   )r+   Znanmeanr†  r   r   r   r&   ï  r'   c                 C   s    dddgdddgg}t |tjdddgdddggddgd	�d
�}| t ddg¡¡ | ¡}dddœdddœdddœdœ}t |t ddg¡|jd�}t 	||¡ d S )Nr   r   r   rG   rH   r   ZSiskoZJanewayrZ   r˜   r   r  g      @rj   r]  g      @ri   ))r   r   )r   r   )r   r   rÁ   )
r   r   Zfrom_arraysr   r+   r­   r   re   r-   r.   )r›   rd   r    r1   Úexpected_dictr2   r   r   r   Útest_multiindex_custom_funcî  s     ÿþýrˆ  c                 C   s   t j| dd�S ©NgÍÌÌÌÌÌì?rÄ   ©r+   rQ  r†  r   r   r   Úmyfunc  s    r‹  c                 C   s   t j| dd�S r‰  rŠ  r†  r   r   r   r&     r'   c                 C   sz   t ddddgddddgddd	d
gdœƒ}| d¡jdd| fd�}t ddgddggddgtddgdd�d�}t ||¡ d S )NÚcatÚdogç333333"@ç      @ç      #@ç      A@çš™™™™™@ro  çÍÌÌÌÌÌ#@ç     Àh@©ÚkindÚheightÚweightr–  )r—  r,   r—  )Úmean_heightÚperc90gš™™™™™"@g0»'5"@g      4@g5^ºI@r™  rš  r…   rÏ   rS  )r›   Zanimalsr1   r2   r   r   r   Útest_lambda_named_agg  s     


ýÿ
 ÿýr›  c                  C   s¬   t t dgd ¡ dd¡tdƒtdƒd�} dddg| d	< |  d	¡ d
d„ ¡}dgdgdggddgddgddggg}t |tddgdd	d�tdddgdd�d�}t 	||¡ d S )Nr   r]   r   ZXYZr  ©rd   re   r:   zgroup 1r   Úgroupingc                 S   s   |   ¡ S r#   )Útolistr   r   r   r   r&   %  r'   z,test_aggregate_mixed_types.<locals>.<lambda>r²   r  ÚXrs  ÚZrn   rÁ   )
r   r+   r­   r£   ry   r   rB   r   r-   r.   )r    r1   r¤   r2   r   r   r   Útest_aggregate_mixed_types  s      ÿ&ýr¡  zNot implemented;see GH 31256©Úreasonc                  C   sj   dd„ } t dt dddg¡iƒ}| dddg¡ | ¡}t dtjdtjgdd�iddgd	�}t ||¡ d S )
Nc                 S   s   t | dkƒrdS tjS d S )Nr   r   )rì   r‡   rˆ   r   r   r   r   r:  8  s    z5test_aggregate_udf_na_extension_type.<locals>.aggfuncr4   r   r   r   r–   rn   r9   )r   r‡   r­   r   r   rˆ   r-   r.   )r:  r    r1   r2   r   r   r   Ú$test_aggregate_udf_na_extension_type/  s
    	$r¤  c                   @   sB   e Zd Zdd„ Zdd„ Zejjdd�dd„ ƒZd	d
„ Z	dd„ Z
dS )ÚTestLambdaManglingc                 C   st   t ddddgddddgdœƒ}| d¡ dd	d
„ dd
„ gi¡}t ddgddgdœtddgdd�d�}t ||¡ d S )Nr   r   r   r   r   rð   r4   rA   c                 S   s   dS r   r   r   r   r   r   r&   G  r'   z/TestLambdaMangling.test_basic.<locals>.<lambda>c                 S   s   dS r4  r   r   r   r   r   r&   G  r'   ))rA   ú
<lambda_0>)rA   ú
<lambda_1>r…   r9   rS  rT  r   r   r   Ú
test_basicE  s     þzTestLambdaMangling.test_basicc                 C   sl   t ddddgƒ ddddg¡}| dd„ dd„ g¡}ddgddgd	œ}t|t ddg¡d
�}t ||¡ d S )Nr   r   r   r   r   c                 S   s   dS r   r   r   r   r   r   r&   Q  r'   z?TestLambdaMangling.test_mangle_series_groupby.<locals>.<lambda>c                 S   s   dS r4  r   r   r   r   r   r&   Q  r'   ©r¦  r§  r9   r,  )r-  r.  r1   Úexp_datar2   r   r   r   Útest_mangle_series_groupbyO  s
    z-TestLambdaMangling.test_mangle_series_groupbyzGH-26611. kwargs for multi-agg.r¢  c                 C   sœ   ddd„}ddd„}t ddgƒ ddg¡ ||gd¡}tdgdgd	œƒ}t ||¡ t ddgƒ ddg¡j||gdd
d�}tdgdgd	œƒ}t ||¡ d S )Nr   c                 S   s   |   ¡ | | S r#   r@   ©r   r¡   r   r   r   r   r&   X  r'   z5TestLambdaMangling.test_with_kwargs.<locals>.<lambda>r   c                 S   s   |   ¡ ||  S r#   r@   r¬  r   r   r   r&   Y  r'   r   r   r—   r©  rž   )r   é   é   )r   )r   )r   r   r   r   r-   r.   )r-  Úf1Úf2r1   r2   r   r   r   Útest_with_kwargsV  s    

"&z#TestLambdaMangling.test_with_kwargsc                 C   sÖ   t ddddgddddgddd	d
gdœƒ}dddg}t ddgddgd	d
gdœtddgdd�|d�}|jdd�jtjddd„ d�tjddd�tjddd�d�}t ||¡ |jdd�jddd„ fddd�}t ||¡ d S )NrŒ  r�  rŽ  r�  r�  r‘  r’  ro  r“  r”  r•  Úheight_sqr_minÚ
height_maxÚ
weight_maxç¤p=
×³T@ç      B@)r²  r³  r´  r–  r…   rÁ   ©Zbyr—  c                 S   s   t  | d ¡S r8   ©r+   r¸   r   r   r   r   r&   z  r'   z=TestLambdaMangling.test_agg_with_one_lambda.<locals>.<lambda>r8  r·   r˜  c                 S   s   t  | d ¡S r8   r¸  r   r   r   r   r&   ƒ  r'   ©r—  r·   ©r˜  r·   )r   r   r   r   r‡   rC  r-   r.   ©r-  r    re   r2   Zresult1r  r   r   r   Útest_agg_with_one_lambdab  s<    


ýÿ
ýù ÿû
ýz+TestLambdaMangling.test_agg_with_one_lambdac              	   C   s  t ddddgddddgddd	d
gdœƒ}dddddg}t ddgddgd	d
gddgddgdœtddgdd�|d�}|jdd�jddd„ fddddd„ fddd„ fd�}t ||¡ |jdd�jtjdd d„ d!�tjdd"d!�tjdd"d!�tjdd#d„ d!�tjdd$d„ d!�d�}t ||¡ d S )%NrŒ  r�  rŽ  r�  r�  r‘  r’  ro  r“  r”  r•  r²  r³  r´  Úheight_max_2Ú
weight_minrµ  r¶  )r²  r³  r´  r½  r¾  r–  r…   rÁ   r·  r—  c                 S   s   t  | d ¡S r8   r¸  r   r   r   r   r&   ¨  r'   z=TestLambdaMangling.test_agg_multiple_lambda.<locals>.<lambda>r¹  rº  c                 S   s
   t  | ¡S r#   ©r+   r·   r   r   r   r   r&   «  r'   r˜  c                 S   s
   t  | ¡S r#   r¸  r   r   r   r   r&   ¬  r'   c                 S   s   t  | d ¡S r8   r¸  r   r   r   r   r&   ³  r'   r8  r·   c                 S   s
   t  | ¡S r#   r¿  r   r   r   r   r&   ·  r'   c                 S   s
   t  | ¡S r#   r¸  r   r   r   r   r&   ¸  r'   )r   r   r   r   r-   r.   r‡   rC  r»  r   r   r   Útest_agg_multiple_lambda‰  sR    


ýÿûû÷


û ÿù	z+TestLambdaMangling.test_agg_multiple_lambdaN)r=  r?  r@  r¨  r«  r;   rA  Úxfailr±  r¼  rÀ  r   r   r   r   r¥  D  s   

'r¥  c                  C   s^   t dddgdddgdœƒ} |  d¡ ddd	„ i¡}t ddgddgdœƒ d¡}t ||¡ d S )
Nr¾   ÚWr  ri   rð   r4   rA   c                 S   s   |   | jd ¡S )Néÿÿÿÿ)Úgetr:   r   r   r   r   r&   À  r'   z+test_groupby_get_by_index.<locals>.<lambda>)r   r   r   rù   r-   r.   )r    r  r2   r   r   r   Útest_groupby_get_by_index½  s    rÅ  zgrp_col_dict, exp_data)ÚnrÚcat_ordrÇ  rÆ  c              	   C   s¶   t ddddddddgtd	ƒtd
ƒdœƒ}| dddœ¡}|d j ¡ |d< | d¡ | ¡}tjddgddgdddd�}t ||d�}d|kr¦|d j	}|d  |¡|d< t
 ||¡ d S )Nr   r   r   r   rG   r—   rH   r\   ÚaabbccddÚaaaabbbb©rÆ  rÇ  rŒ  Úcategory©rŒ  rÇ  rÇ  rŒ  r   r   F©Ú
categoriesZorderedrq   ro   )rd   r:   )r   ry   rš   rŒ  Ú
as_orderedr   r   r‡   ÚCategoricalIndexro   r-   r.   )Úgrp_col_dictrª  Úinput_dfÚ	result_dfÚ	cat_indexÚexpected_dfro   r   r   r   Ú test_groupby_single_agg_cat_colsÅ  s*    ýÿ    ÿ
rÖ  )r   r   r   )rG   r\   r   )r   r   r   )rG   r   rç   r„   )r   rç   c              	   C   s   t ddddddddgtd	ƒtd
ƒdœƒ}| dddœ¡}|d j ¡ |d< | d¡ | ¡}tjddgddgdddd�}g }|  	¡ D ]:\}}t
|tƒr®|D ]}| ||g¡ q˜q‚| ||g¡ q‚t t|ƒ¡}	t ||	|d�}
|
jD ].}t
|tƒràd|krà|
|  |d j¡|
|< qàt ||
¡ d S )Nr   r   r   r   rG   r—   rH   r\   rÈ  rÉ  rÊ  rË  rÌ  rÇ  rŒ  r   r   FrÍ  rœ  )r   ry   rš   rŒ  rÏ  r   r   r‡   rÐ  Úitemsr®   Úappendr   ra   rz   re   ro   r-   r.   )rÑ  rª  rÒ  rÓ  rÔ  Zmulti_index_listr•   Úvr   Zmulti_indexrÕ  Úcolr   r   r   Ú#test_groupby_combined_aggs_cat_colsì  s8    ýÿ    ÿ

rÛ  c                  C   s\   t ddddgddddgdœƒ} |  d¡}| dg¡}|j d¡|_| d¡}t ||¡ d S )Nr   r   r„   r   ró   rÃ  )r   r   r   re   Z	droplevelr-   r.   )r    rb   r1   r2   r   r   r   Útest_nonagg_agg  s    

rÜ  c                  C   sh   t ddgt ddddddd¡t d	dddddd¡gd
œƒ} |  d¡j ¡ }|  d¡d }t ||¡ d S )NrŸ  rs  iÕ  r   rž   r®  é   i`= i½  rð   r4   rA   )r   Údatetimer   rA   r·   rù   r-   rC   r#  r   r   r   Útest_aggregate_datetime_objects*  s    þþÿ	rß  c                  C   s‚   t dddgdddgdddgdœƒ} | j d¡| _|  dd	g¡}|j d
d„ ¡}tjddgdd�}tddg|dd�}t	 
||¡ d S )Nr   r¡   r   r   r   )Úc0Úc1ÚpÚOrà  rá  c                 S   s   t | dkƒS r   rë   r   r   r   r   r&   A  r'   z1test_groupby_index_object_dtype.<locals>.<lambda>)r   r   r  )rà  rá  rZ   FTrâ  r«   )r   r:   rš   r   râ  r   r   ra   r   r-   rC   )r    r0   r  rÔ   r2   r   r   r   Útest_groupby_index_object_dtype<  s    " ÿrä  c                  C   sT   dd„ } t dgt d¡gd�}| dd„ ¡ | ¡}t dggdgd�}t ||¡ d S )	Nc                 S   s   |   ¡  ¡ rd S t | ¡S r#   )Zisnarì   r+   r   r¨   r   r   r   r›   N  s    z)test_timeseries_groupby_agg.<locals>.funcr  z2018-01-16 00:00:00+00:00r9   c                 S   s   dS r4  r   r   r   r   r   r&   T  r'   z-test_timeseries_groupby_agg.<locals>.<lambda>r   )r   r‡   r)  r   r   r-   r.   )r›   r    r  r2   r   r   r   Útest_timeseries_groupby_aggK  s
    rå  c                 C   s„   | dkrd S t ddgdtjggƒ}| d¡ | ¡}| d¡ d| i¡}| dkrdtj||d dd� nt ||¡ t |j|j¡ d S )N)ZcorrwithZnthr   r   )r§   ZngroupF)Zcheck_names)	r   r+   r`   r   r   r-   rC   r.   Zdtypes)r�   ÚobjZresult_reduced_seriesZresult_reduced_framer   r   r   Ú test_groupby_aggregate_directoryZ  s       ÿ ÿrç  c                  C   sN   t dddgdd�} t dgdt dg¡d�}|  dddg¡ ¡ }t ||¡ d S )	Nz1 dayz3 daysÚNaTztimedelta64[ns]rn   z2 daysr   rp   )r   r+   r­   r   r,   r-   rC   )rd   r2   r1   r   r   r   Útest_group_mean_timedelta_natp  s    ré  zinput_data, expected_outputz2021-01-01T00:00rè  z2021-01-01T02:00z2021-01-01T01:00z2021-01-01T00:00-0100z2021-01-01T02:00-0100z2021-01-01T01:00-0100c                 C   sH   t t| ƒƒ}t t|t dg¡d�ƒ}| dddg¡ ¡ }t ||¡ d S )Nr   r9   )r
   r   r+   r­   r   r,   r-   rC   )Z
input_dataZexpected_outputrd   r2   r1   r   r   r   Útest_group_mean_datetime64_natz  s    rê  zfunc, outputy       @      2@y      $@      6@y      D@     €V@y      I@     €[@c                 C   sN   t t d¡ dd¡ ddg¡ƒ}| |jd ¡ | ¡}t |ƒ}t 	||¡ d S )Nr    rž   r   r   ù               @)
r   r+   r¢   r£   Údotr   r:   r   r-   rC   )r›   Úoutputrd   r1   r2   r   r   r   Útest_groupby_complex�  s     rî  c              	   C   sX   t t d¡ dd¡ ddg¡ƒ}d}tjt|d�� | |j	d ¡ 
| ¡ W 5 Q R X d S )Nr    rž   r   r   rë  zNo matching signature foundr6   )r   r+   r¢   r£   rì  r;   r<   r�   r   r:   r   )r›   rd   r>   r   r   r   Útest_groupby_complex_raises›  s     rï  Úprodc              	   C   sX   t dddgdddgdddgd	œƒ}|jd
dd�}tjtdd�� | | ¡ W 5 Q R X d S )Nr   r   r   r   rG   r—   rH   r\   rê   r   rŒ   z"axis other than 0 is not supportedr6   )r   r   r;   r<   ÚNotImplementedErrorr   )r›   r    r!   r   r   r   Útest_multi_axis_1_raises¤  s    "rò  ztest, constantr4   rA   r5   rj   r®  )Zmarksc                 C   s<   t | ƒ}| d¡ tj¡}t |ƒ}| d¡}t ||¡ d S r   )r   r   r   r   Úmoderù   r-   r.   )r^  ZconstantZdf1r1   r2   r   r   r   Útest_agg_of_mode_list¯  s
    
rô  c               	   C   sÈ   t dddgdddgdœƒ} |  d¡}dd
d„}ddd„}d}tjt|d�� |j||gdddd� W 5 Q R X |j||gddd�}t ddgddgddggtdddgdd�t ddg¡d�}t	 
||¡ d S )Nr   r   r   r   r   r   r  r¡   r   c                 S   s   |   ¡ | | S r#   r@   ©r   r   r   r   r   r   Úfoo1Í  s    zAtest__dataframe_groupy_agg_list_like_func_with_args.<locals>.foo1c                 S   s   |   ¡ | | S r#   r@   ©r   r   r   r   r   r   Úfoo2Ð  s    zAtest__dataframe_groupy_agg_list_like_func_with_args.<locals>.foo2ú/foo1\(\) got an unexpected keyword argument 'b'r6   r   ri  rc  r\   r]   rž   r…   )r   rö  )r   rø  rÁ   )r   r   )r   r   )r   r   r;   r<   r�   r   r   r   ra   r-   r.   )r    r!   rö  rø  r>   r1   r2   r   r   r   Ú3test__dataframe_groupy_agg_list_like_func_with_argsÈ  s    


 ýrú  c               	   C   s²   t dddgƒ} |  | ¡}ddd„}ddd„}d	}tjt|d
�� |j||gdddd� W 5 Q R X |j||gddd�}tddgddgddggtdddgƒddgd�}t 	||¡ d S )Nr   r   r   r   c                 S   s   |   ¡ | | S r#   r@   rõ  r   r   r   rö  å  s    z>test__series_groupy_agg_list_like_func_with_args.<locals>.foo1c                 S   s   |   ¡ | | S r#   r@   r÷  r   r   r   rø  è  s    z>test__series_groupy_agg_list_like_func_with_args.<locals>.foo2rù  r6   r   ri  rc  r\   r]   rž   rö  rø  rÁ   )r   r   )r   r   )
r   r   r;   r<   r�   r   r   r   r-   r.   )rú   Zsgbrö  rø  r>   r1   r2   r   r   r   Ú0test__series_groupy_agg_list_like_func_with_argsà  s    


   ÿrû  )lÚ__doc__rÞ  rP  r   rd  Únumpyr+   r;   Zpandas.errorsr   Zpandas.core.dtypes.commonr   Zpandasr‡   r   r   r   r   r	   r
   Zpandas._testingZ_testingr-   Zpandas.core.groupby.grouperr   r"   r3   r?   rF   rc   rl   rw   r{   r|   rA  rB  rƒ   rŠ   r‘   Úintrt   r�   r¥   r°   r¶   r»   r×   rÞ   rß   rè   ré   rï   rñ   rû   r  rý   r	  r  r  r’   Zuint64r  r  rÐ  ry   Zinterval_rangeZperiod_rangera   r  r$  r*  r+  rD  r¸   rC  r,   rr  rt  ru  rw  ry  rz  r„  r…  rˆ  r‹  r›  r¡  rÁ  r¤  r¥  rÅ  rÖ  rÛ  rÜ  rß  rä  rå  rç  ré  rê  rî  rï  rò  Úparamrô  rú  rû  r   r   r   r   Ú<module>   s¸   
1 ÿ
úþ
 üþ	
	!$
úþ
(þþ ÿ ÿ(þþ

üþ	
5vú	

ú	
úïþ


 ÿ


yýþ
ýþ
)
þþûþ
	 ÿ

 ÿ
**0ýüþ
