a
    é´«jþØ  ã                   @   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%g d&¢d'i fd(d)gd* e'e(e(e(d+œfd,d-gd* e'e(e(e(d+œfd%g d&¢d.d/d'ifd(d)gd* d.e(e(e(d+œfd,d-gd* d.d0d0d0d+œfg¡d1d2„ ƒZ)ej" #d3d%d4d5gd6d7gd8d9ggd'd'd:œfd(d;gd4 gd* d0fd,d4gd4 gd* d0d0d:œfg¡d<d=„ ƒZ*d>d?„ Z+d@dA„ Z,dBdC„ Z-dDdE„ Z.dFdG„ Z/dHdI„ Z0dJdK„ Z1dLdM„ Z2dNdO„ Z3dPdQ„ Z4dRdS„ Z5dTdU„ Z6ej" #dVdWd„ dXd„ dYd„ dZd„ d[d„ d\d„ g¡d]d^„ ƒZ7ej" #d_d`gedagd`db�fd`dcgedagd4ggdgdggd`dcgdd�fg¡ej" #deg df¢¡ej" #dgg df¢¡ej" #dhg di¢¡djdk„ ƒƒƒƒZ8ej" #d_d`gedagd`db�fd`dcgedagd4ggdgdggd`dcgdd�fg¡ej" #dlg dm¢¡ej" #dne9e'e(g¡ej" #dhg di¢¡dodp„ ƒƒƒƒZ:dqdr„ Z;dsdt„ Z<ej" #dnej=ej>g¡ej" #dug dv¢¡dwdx„ ƒƒZ?dydz„ Z@ej" #d{e AeBd|ƒ¡e Cdd*¡ejDd}d*d~d�e Eg d€¢¡g¡d�d‚„ ƒZFdƒd„„ ZGd…d†„ ZHG d‡dˆ„ dˆƒZIG d‰dŠ„ dŠƒZJej" #d‹dŒd�ejKfdŽdad*gd�d�gd‘d’gfd�d“d„ fd�d”d„ fd•ejKfdad*gdadagd‘d’gfe Ld�d–¡e Ld•ejK¡e Ld�d—d„ ¡dad*gd‘d’gdadagfg¡d˜d™„ ƒZMdšd›„ ZNdœd�„ ZOej" #dždŸd gig d gd¡œg¡d¢d£„ ƒZPd¤d¥„ ZQd¦d§„ ZRd¨d©„ ZSdªd«„ ZTej" #d¬d­d„ d®d„ d¯d„ g¡d°d±„ ƒZUd²d³„ ZVej" #d¬d´d„ eVg¡dµd¶„ ƒZWd·d¸„ ZXej"jYd¹dº�d»d¼„ ƒZZG d½d¾„ d¾ƒZ[d¿dÀ„ Z\ej" #dÁd d dÂœdadÃgd`dŸgdÂœfdÄd idÄd`dŸgifdÅd idÅdadÃ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Õ„ ZadÖd×„ ZbdØdÙ„ ZcdÚdÛ„ ZddÜdÝ„ Zeej" #dÞg dß¢dàgfg dá¢dâgfg¡dãdä„ ƒZfej" #dådædçdègfd%dédêgfg¡dëdì„ ƒZgej" #d¬g dí¢¡dîdï„ ƒZhej" #d¬d gdæd–gdcd%idðdñd¡œg¡dòdó„ ƒZiej" #dôd9dõgd9dögd6d÷ggd6d9gd÷dõdöggdøœfd9dõgd9dögdùd÷ggd9dùgdõdögd÷gdøœfd`dagd`dagdcd4gdcd*ggd`dcgdad4d*ggdøœfejjd`dagd`d4gdcd*gdcd*ggd`dcgdad4gd*gdøœej"jYdú�g¡dûdü„ ƒZkdýdþ„ Zldÿ�d „ Zm�d�d„ Zn�d�d„ Zo�d�d„ Zp�d�d„ Zq�d	�d
„ Zrd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   s:   t g d¢g d¢dœƒ} |  d¡d }dd„ }| |¡ d S )N©ÚaÚbÚcr   ©é   é   é   é   )ÚkeyÚvaluer   r   c                 S   s   t | ƒdksJ ‚|  ¡ S ©Nr   )ÚlenÚsum©Úx© r   úl/var/www/html/laksyashrimp/venv/lib/python3.9/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   s8   |   dd„ dd„ g¡}| d¡}| ¡ }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(   Úmean©r   r    r+   ÚtmÚassert_frame_equal)ÚtsframeÚgroupedÚresultÚexpectedr   r   r   Útest_agg_regression1)   s    
r3   c                 C   sŽ   |   d¡d }d}tjt|d�� | dd„ ¡ W d   ƒ n1 sD0    Y  tjt|d�� | dd„ ¡ W d   ƒ n1 s€0    Y  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g d¢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   ÚnpÚnanr   Úfrom_tuplesr   r+   r-   r.   )r2   r!   Úgr1   r   r   r   Ú$test_groupby_aggregation_mixed_dtypeA   s>    þ
õûôüÿrd   c                  C   s¶   g d¢ddt jdgddt jdgddt jdgg} t| t g d¢¡d�}d}tjt|d�� |jddd	�}W d   ƒ n1 sz0    Y  |j	dd
�}tg d¢g d¢dœƒ}t 
||¡ d S )N)TTTFTF))r4   r   )r4   r   )rA   r   )rA   r   ©ÚdataÚcolumnsú+DataFrame.groupby with axis=1 is deprecatedr6   r   ©ÚlevelÚaxis)Znumeric_only)ç       @TTT)r   r   r   r   ©r   r   )r`   ra   r   r   rb   r-   Úassert_produces_warningÚFutureWarningr   r   r.   )Úlstr!   r>   r"   r1   r2   r   r   r   Ú+test_groupby_aggregation_multi_level_columnr   s    üþ,rq   c                 C   s  | j | tj dd�}| jtjks$J ‚tg tjtg tjd�d�}t | 	¡ |¡ t | 
d¡|¡ tj| d¡|dd� |j |d tj dd�}t|jttg dtjd�d	�}t | 	¡ |¡ t | 
d¡|¡ d
}tjt|dd�� | tj	¡}W d   ƒ n1 �s0    Y  t ||¡ d S )NF©Z
group_keys©Údtype©rt   r:   r   )Zcheck_index_typer4   )Únamert   )rg   rt   r:   z:The behavior of DataFrame.sum with axis=None is deprecated)r7   Zcheck_stacklevel)r   r`   ra   rt   Úfloat64r   r   r-   rC   r   r    Úapplyr   rg   Úfloatr.   rn   ro   )Útsr/   r0   ÚexpZexp_dfr>   Úresr   r   r   Útest_agg_apply_cornerˆ   s$    ý,r}   c                 C   sÀ   t tj d¡ d¡ttdƒtd�tj	dddd�d	�}| 
d
d„ ¡}|jjd j}t| jt|ƒƒ|jjd< | d¡}| ¡ }t ||¡ t| jt|ƒƒ|jjd< | d¡}| ¡ }t ||¡ d S )Nr   )é   r   ÚABCDrs   z
2000-01-01r~   rA   ©ÚperiodsÚfreq©rg   r:   c                 S   s   | j S r$   r%   r   r   r   r   r'   ª   r(   z1test_agg_grouping_is_list_tuple.<locals>.<lambda>r   r+   )r   r`   ÚrandomÚdefault_rngÚstandard_normalr   ÚlistÚobjectÚpdÚ
date_ranger   Ú_grouperZ	groupingsZgrouping_vectorr   r:   r    r+   r-   r.   Útuple)rz   r!   r0   Zgrouperr1   r2   r   r   r   Útest_agg_grouping_is_list_tuple£   s    ý

r�   c                 C   s0   |   ddg¡}| d¡}| ¡ }t ||¡ d S )Nr4   rA   r+   r,   )Z multiindex_dataframe_random_datar0   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   sj   t g d¢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 )N)r   r   r   r   r   r   r   r   r   ZFloat64rs   ©r   r   r   r   g(µ¦yâ?r   ©rv   ©r:   rt   )	r   r   r‰   ÚNAr   r‘   r   r-   r.   )Úany_numeric_ea_dtyper!   r1   r2   r   r   r   Útest_std_masked_dtypeÞ   s    þÿÿr›   c              	   C   s°   | j dd�}d|› d�}|dv r.t}d}t}nt}d|› d�}d }tj||d	��L tj||d	�� |j|d
d� W d   ƒ n1 s„0    Y  W d   ƒ n1 s¢0    Y  d S )Nr   ©rj   zDataFrameGroupBy.z with axis=1 is deprecated)ZidxmaxZidxminz;'[<>]' not supported between instances of 'float' and 'str'z
Operation z does not support axis=1r6   r   ©rk   )	r   Ú	TypeErrorro   Ú
ValueErrorr;   r<   r-   rn   r    )r!   Úreduction_funcr"   Zwarn_msgÚerrorr>   Úwarnr   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§   rw   c                 C   sª   t g d¢gd t ddgg d¢g¡d� ||dœ¡}d}tjt|d	�� |jd
d
d�}W d   ƒ n1 sj0    Y  | | ¡}t |gd g d¢d� |¡}t 	||¡ d S )N)r   r   r   r   rG   é   r   r   r   r¥   ©rg   ))r   r§   )r   r§   rh   r6   r   ri   )
r   r   Úfrom_productÚastyper-   rn   ro   r   r    r.   )Úfuncr2   rt   Úresult_dtype_dictr!   r>   r"   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g d¢dd�tg d¢dd�d	d
� ddi¡}d}tjt|d�� |j	ddd�}W d   ƒ n1 sv0    Y  | 
| ¡}t |tg d¢dd�tddgdd�d� |¡}t ||¡ d S )Nr_   r   r   ©r   r   r   Úyr—   )r±   r³   r±   r³   r   r¤   )r:   rg   rt   r±   r©   rh   r6   r   r�   r³   )rf   r:   rg   )r   r`   ÚarangeÚreshaper   r­   r-   rn   ro   r   r    r.   )r®   Úexpected_datar¯   r!   r>   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ÌJ ‚t|ƒd
ksÜJ ‚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:   rv   c                 S   s   | j S r$   rº   r¼   r   r   r   Úaggfun_1H  s    z-test_aggregate_item_by_item.<locals>.aggfun_1r   )r   r    r4   r   r   rg   r   r`   Úarrayr‡   r-   rC   ÚxsZassert_almost_equalr   Ú
isinstance)	r!   r0   Zaggfun_0r1   ZfoosumZbarsumÚKr{   rÀ   r   r   r   Útest_aggregate_item_by_item8  s    


rÅ   c                 C   sš   |   ddg¡}dd„ }tjtdd�� | |¡ W d   ƒ n1 sD0    Y  |g d¢  |¡}| jd d …g d¢f }|  ddg¡ |¡}t ||¡ d S )	Nr4   rA   c                 S   s   | j tdfv rtdƒ‚|  ¡ S )NÚstringúTest error message)rt   rˆ   rž   r   r¼   r   r   r   r®   S  s    ztest_wrap_agg_out.<locals>.funcrÇ   r6   )r”   ÚEÚF)r4   rA   r”   rÈ   rÉ   )r   r;   r<   rž   rB   Úlocr-   r.   )Zthree_groupr0   r®   r1   Zexp_groupedr2   r   r   r   Útest_wrap_agg_outP  s    (rË   c                 C   s€   dt jfdt jfdt jfg}d}tjt|d��$ |  d¡d  |¡}W d   ƒ n1 sX0    Y  t	g d¢ƒ}t 
|j|¡ d S )	Nr+   ÚmaxÚminú%is currently using SeriesGroupBy.meanr6   r4   r5   )r+   rÌ   rÍ   )r`   r+   rÌ   rÍ   r-   rn   ro   r   r    r   Úassert_index_equalrg   )r!   Úfuncsr>   r1   Zexp_colsr   r   r   Ú*test_agg_multiple_functions_maintain_order`  s    2rÑ   c                 C   s@   | j d d …dgf  | d ¡}| dd„ ¡}|jjdks<J ‚d S )Nr5   r4   c                 S   s   |   ¡ S r$   ©r+   r   r   r   r   r'   m  r(   z(test_series_index_name.<locals>.<lambda>)rÊ   r   r    r:   rv   )r!   r0   r1   r   r   r   Útest_series_index_namek  s    rÓ   c                     s®   t tj d¡ d¡tjdddd�g d¢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 )Nr   ©éè  r   ú1/1/2012ÚsrÕ   )r‚   r�   ©r4   rA   r5   ©r:   rg   Ú3minr4   ç§èH.ÿï?©Úqçâé•²q¼?rª   )r4   Úquantilec                    s"   g | ]}ˆ   d ¡jj|d�j‘qS ©rÚ   rÜ   ©Úresampler4   rß   Úvalues©Ú.0rÝ   ©r!   r   r   Ú
<listcomp>~  r(   z9test_agg_multiple_functions_same_name.<locals>.<listcomp>©rÛ   rÞ   rƒ   )r   r`   r„   r…   r†   r‰   rŠ   râ   r    r   rß   r   rb   rÁ   ÚTr-   r.   )r1   Úexpected_indexÚexpected_columnsÚexpected_valuesr2   r   ræ   r   Ú%test_agg_multiple_functions_same_nameq  s"    ý
ÿÿÿrí   c               	      sÞ   t tj d¡ d¡tjddddd�tg d¢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g d¢g d¢d�}t ‡ fdd„dD ƒ¡j}t ˆ  d¡j ¡ |g¡}t |||d�}t | |¡ d S )Nr   rÔ   rÖ   r×   rÕ   Zdti)r‚   r�   rv   rØ   Úalphar—   rÙ   rÚ   r4   ÚohlcrÛ   rÜ   rÞ   rª   ))r4   rï   Úopen)r4   rï   Úhigh)r4   rï   Úlow)r4   rï   Úclose©r4   rß   r4   rô   )rî   NNrZ   c                    s"   g | ]}ˆ   d ¡jj|d�j‘qS rà   rá   rä   ræ   r   r   rç   ž  r(   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ß   r   rb   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_present†  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   s2  |   d¡}| dddœ¡}| dddœ¡}t||gddgdd�}|jdddd�jddd	�}ddgddgdœ}| |¡}t ||¡ | dddgdœ¡}| dddgdœ¡}t ||¡ d
d„ }dd„ }d}	tj	t
|	d��* ddddœdœ}| |¡ W d   ƒ n1 �s
0    Y  dg||gdœ}| |¡ d S )Nr4   r+   ©r5   r”   r‘   r   )Úkeysrk   r   r�   ri   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	   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 d   ƒ n1 sP0    Y  dddœddœ}tjt|d�� | |¡ W d   ƒ n1 s˜0    Y  dddœddœ}tjt|d�� | |¡ W d   ƒ n1 sà0    Y  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 g d¢g d¢g d¢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 )N©r   r   r   r   ©r   r   r   r   )NNr   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   sb   t g d¢g d¢dœƒ} |  d¡dg  ddi¡}t dddgiddgd	�jdd
d�}t ||¡ d S )N)r4   r4   rA   rA   rA   )r   r   r   r   r   ©r4   rA   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
  c                  C   sj   t g d¢g d¢g d¢gg d¢d�} |  d¡}| ddi¡}t dd	d
gitddgdd�d�}t ||¡ d S )Nr   )r   r   r   rG   )r   r   rG   rª   r   r«   r   r   r   rG   r   r   r   r—   r9   ©r   r   r    r   r-   r.   ©r!   r"   r1   r2   r   r   r   Ú!test_groupby_agg_dict_dup_columns  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|ƒsDJ ‚| | d¡ƒj}t|ƒs`J ‚d S )Nr   FTr–   r   r   )r   Ú	set_indexr   rt   r   )r  r!   r×   r1   r   r   r   Útest_bool_agg_dtype  s    r  zkeys, agg_indexr   r   r—   r   rZ   Úinput_dtype)ÚboolZint32r¤   Zfloat32rw   Úresult_dtypeÚmethod)rx   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'   I  r(   z2test_callable_result_dtype_frame.<locals>.<lambda>r  r   r9   rx   )r   r­   Úgetattrr   r‰   Ú
RangeIndexr  rg   r[   r-   r.   )
rø   Ú	agg_indexr  r  r  r!   r  r1   rê   r2   r   r  r   Ú test_callable_result_dtype_frame4  s    ÿ
r!  Úinput)Tr   ç      ð?rt   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   rs   r   r   r'   a  r(   z3test_callable_result_dtype_series.<locals>.<lambda>r  r   r¿   )
r   r  r   r‰   r  r   r  r­   r-   rC   )
rø   r   r"  rt   r  r!   r  r1   rê   r2   r   rs   r   Ú!test_callable_result_dtype_seriesS  s     r$  c                  C   sR   t g d¢g d¢dœƒ} |  d¡ g d¢¡}|jjd }tg d¢ƒ}t ||¡ d S )Nr  r   r	  r4   )r   rÌ   r+   rï   rÍ   r   )r   r   r    rg   Úlevelsr   r-   rÏ   )r!   r|   r1   r2   r   r   r   Ú#test_order_aggregate_multiple_funcsg  s
    r&  c                 C   sÀ   t g d¢ddtjddtjgdœ| d�}| d¡}| ¡ }t g d	¢tjgd
 dgd
 dgd
 gt dgg d¢g¡tg d¢| dd�| d�}t 	||¡ |jddd�}| ¡ }| 
¡ }t 	||¡ d S )N)r   r   r   r   r   r   é   rM   r±   r³   r–   rs   r   )r'  r'  rM   rM   r   r   )rð   rñ   rò   ró   r   ©rt   rv   )rg   r:   rt   F©Ú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_dtypess  s"    þ
"ür,  Úhow)ÚfirstÚlastrÍ   rÌ   r+   Úmedianc                 C   st   t dddgdœƒ}| d¡ d|i¡}|j | ¡|_| d¡ d|i¡}|dvr`|j tj¡|_tj||dd	� d S )
Nl   &tLWHd~ r   r   ©r   rµ   rµ   r   )r+   r0  T)Zcheck_exact)	r   r   r    r   r­   r`   r¤   r-   r.   )rt   r-  r!   r2   r1   r   r   r   Útest_uint64_type_handling‰  s    r2  c                  C   s`   d} t g d¢g d¢dœƒ}tjt| d��$ | d¡ ddg¡ W d   ƒ n1 sR0    Y  d S )NzFunction names©r   r   r   r   r   r	  r6   r4   rÍ   )r   r;   r<   r   r   r    )r>   r!   r   r   r   Útest_func_duplicates_raises—  s    r4  r:   ÚabcZ2020r”   r€   ))r   r   )r   r   )r   r   c                 C   s\   t g d¢g d¢dœ| d�}| d¡ dtji¡}t ddgddgdœƒ d¡}t ||¡ d S )	N©r   r   r   r´   )Úgroupr   r9   r7  r   r   r   )r   r   r    r   Znuniquer  r-   r.   )r:   r!   r1   r2   r   r   r   Ú$test_agg_index_has_complex_internalsŸ  s    r8  c                  C   s`   t g d¢g d¢g d¢dœƒ} |  d¡ ¡ }t ddgddgdœtd	d
gdd�d�}t ||¡ d S )N)r   r   r   r   r   )ÚoneÚtwor9  r:  r9  )Úthreer;  r;  Úsixr<  ©Úkey1Úkey2Úkey3r>  r9  r<  )r?  r@  r   r   r—   r9   )r   r   rÍ   r   r-   r.   ©r!   r1   r2   r   r   r   Útest_agg_split_block°  s    ýÿþrB  c               	   C   sž   t tjddd�g d¢g d¢g d¢tjddd�g d¢dœƒ t¡} |  g d¢¡ ¡ }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   rþ   Úe)r4   rA   r5   r”   rÈ   rÉ   )r   r   r   r   r   r   r   r   r˜   )r   r‰   rŠ   r­   rˆ   r   rÍ   Ú	Timestampr`   rÁ   r-   r.   rA  r   r   r   Ú#test_agg_split_object_part_datetimeÁ  s0    úÿ	÷


ú
örF  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 g d¢ƒ}| g d¢¡}|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   r3  r   rÍ   r–   r   rH   r   r   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   sp   t ddgƒ ddg¡}tjtdd�� | ¡  W d   ƒ n1 sB0    Y  | g ¡}tg d�}t ||¡ d S )Nr   r   r   úMust provider6   r«   )	r   r   r;   r<   rž   r    r   r-   r.   ©rI  rJ  r1   r2   r   r   r   Útest_no_args_raisesë  s    &

z.TestNamedAggregationSeries.test_no_args_raisesc                 C   sX   t g d¢ƒ g d¢¡}|jddd�}tddgddgdœt ddg¡d�}t ||¡ d S )	N©r   r   r   ©r   r   r   r   r–   r   r   r   r9   rH  )rI  rJ  r0   r2   r   r   r   Ú*test_series_named_agg_duplicates_no_raisesõ  s    $zETestNamedAggregationSeries.test_series_named_agg_duplicates_no_raisesc                 C   s`   t g d¢ƒ g d¢¡}|jdd„ dd„ d�}tddgddgdœt ddg¡d	�}t ||¡ d S )
NrO  rP  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–   r   r   r9   rH  rM  r   r   r   Útest_mangledü  s    $z'TestNamedAggregationSeries.test_mangledÚinpÚanythingrÍ   ©ÚcolumnÚaggfunc)rU  rÍ   c                 C   sb   t g d¢ƒ}dt|ƒj› �}tjt|d��$ | |j¡j|d� W d   ƒ n1 sT0    Y  d S )N)r   r   r   r   r   r   r   rG   zfunc is expected but received r6   ©r   )	r   ÚtypeÚ__name__r;   r<   rž   r   rã   r    )rI  rT  r×   r>   r   r   r   Útest_named_agg_nametuple  s    
z3TestNamedAggregationSeries.test_named_agg_nametupleN)r[  Ú
__module__Ú__qualname__rK  rN  rQ  rS  r;   ÚmarkÚparametrizer‰   ÚNamedAggr\  r   r   r   r   rG  Ý  s   
ýþrG  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 g d¢g d¢g d¢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d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�g d¢d�}t ||¡ d S )"N©r   r   r   r   r  ©rG   rª   rH   r\   ©r7  r4   rA   r7  ©r4   rÌ   ©rA   rÌ   )Úa_maxÚb_maxr   r   rª   r\   r   r   r—   rh  ri  rÙ   éb   rÜ   ©rA   rÍ   ©r4   rÍ   )r4   r+   r4   )Zb_minZa_minZa_meanrh  ri  Za_98rG   rH   r   r   ç      à?ç      @g\�Âõ(\ï?g×£p=
×@)
r   r   r    r   r-   r.   Ú	functoolsr   r`   Ú
percentile)rI  r!   r1   r2   Zp98r   r   r   Útest_agg_relabel  s>    ÿý
úúöz.TestNamedAggregationDataFrame.test_agg_relabelc                 C   sf   t g d¢g d¢g d¢dœƒ}| d¡jf i ddi¤Ž}t ddd	gitd
dgdd�d�}t ||¡ d S )Nrc  r  rd  re  r7  zmy colrf  r   r   r   r   r—   r9   r  ©rI  r!   r1   r2   r   r   r   Útest_agg_relabel_non_identifier7  s    ÿ z=TestNamedAggregationDataFrame.test_agg_relabel_non_identifierc                 C   sð   t g d¢g d¢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 g d¢g d¢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 )Nr3  r   r	  r4   rk  r–   r   r   r   r—   r9   é2   rÜ   éF   Úquant50Úquant70)r   r   r   r   r   )r   r   r   r   rG   )Úcol1Úcol2rx  ry  )Zquantile_50Zquantile_70ç      ø?ç      @g333333û?gš™™™™™@r   r   )r   r   r    r   r-   r.   ro  r   r`   rp  r[  )rI  r!   r0   r2   rv  rw  Útestr   r   r   Útest_duplicate_no_raises@  s"    &
ÿþz6TestNamedAggregationDataFrame.test_duplicate_no_raisesc                 C   sx   t g d¢g d¢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 )Nr3  r   r	  r4   rA   r   r   r9   r   rœ   rf  rl  )rA   r+   )ZaaZbbÚccr   rz  ç      @)r   r   r¬   r   r    r-   r.   rr  r   r   r   Útest_agg_relabel_with_levelY  s    þÿÿz9TestNamedAggregationDataFrame.test_agg_relabel_with_levelc                 C   sÔ   t g d¢g d¢dœƒ}| d¡}d}tjt|d�� |jdd� W d   ƒ n1 sT0    Y  tjt|d�� | ¡  W d   ƒ n1 sŠ0    Y  tjt|d�� |jd	dd
� W d   ƒ n1 sÆ0    Y  d S )NrP  rO  r	  r4   rL  r6   r   )r½   rg  r–   )r   r   r;   r<   rž   r    )rI  r!   r0   r7   r   r   r   Útest_agg_relabel_other_raisesf  s    
*&z;TestNamedAggregationDataFrame.test_agg_relabel_other_raisesc                 C   sd   t ddgddgdœƒ}t d¡}tjt|d��" | d¡jdd	� W d   ƒ n1 sV0    Y  d S )
Nr   r   r   r	  zColumn(s) ['C'] do not existr6   r4   )r5   r   ©r   )r   ÚreÚescaper;   r<   ÚKeyErrorr   r    )rI  r!   r7   r   r   r   Útest_missing_raisess  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   ÚcountrV  ©r   r   )rA   r   )rA   r‡  ©r   r   r    r‰   ra  r-   r.   rr  r   r   r   Útest_agg_namedtupley  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   rØ   r4   rA   c                 S   s   dS r   r   r   r   r   r   r'   ƒ  r(   z<TestNamedAggregationDataFrame.test_mangled.<locals>.<lambda>r5   c                 S   s   dS rR  r   r   r   r   r   r'   ƒ  r(   rˆ  r—   r9   r  rr  r   r   r   rS  �  s    $&z*TestNamedAggregationDataFrame.test_mangledN)r[  r]  r^  rq  rs  r}  r€  r�  r†  rŠ  rS  r   r   r   r   rb    s   $	rb  zCagg_col1, agg_col2, agg_col3, agg_result1, agg_result2, agg_result3©©rµ   r4   rÌ   rŒ  )©rµ   rA   r+   rm  rn  g      @ç      @c                 C   s   t | ƒS r$   )rÌ   r   r   r   r   r'   ”  r(   c                 C   s   dS rR  r   r   r   r   r   r'   •  r(   r�  rÌ   c                 C   s   dS rR  r   r   r   r   r   r'   ž  r(   c                 C   sÚ   t g d¢g d¢g d¢dœƒ}t g d¢¡|_tddgdd	�}| d¡jd
d�}t dddgi|d�}	t ||	¡ d}
tj	t
|
d��& | d¡j| ||d�}W d   ƒ n1 s¬0    Y  t |||dœ|d�}	t ||	¡ d S )Nrc  r  rd  re  ©©r   r7  rŒ  r�  r   r   r�  r—   r‹  )rh  rh  r   r   r9   rÎ   r6   )Zcol_1Zcol_2Zcol_3)r   r   rb   rg   r   r   r    r-   r.   rn   ro   )Zagg_col1Zagg_col2Zagg_col3Zagg_result1Zagg_result2Zagg_result3r!   Úidxr1   r2   r>   r   r   r   Ú"test_agg_relabel_multiindex_columnˆ  s"    !ÿ
ÿ$ÿr’  c                  C   sp   t g d¢g d¢g d¢dœƒ} t g d¢¡| _tjtdd��" |  d¡jd	d
� W d   ƒ n1 sb0    Y  d S )Nrc  r  rd  re  r�  zdo not existr6   r�  ))ÚYr   rÌ   rY  )	r   r   rb   rg   r;   r<   r…  r   r    ræ   r   r   r   Ú,test_agg_relabel_multiindex_raises_not_exist¾  s    ÿr”  c                  C   sz   t g d¢g d¢g d¢dœƒ} t g d¢¡| _|  d¡jddd�}td	d
gdd�}t ddgddgdœ|d�}t ||¡ d S )Nrc  r  rd  re  r�  r�  )rŒ  rÍ   r–   r   r   r—   r   r   r9   )	r   r   rb   rg   r   r    r   r-   r.   )r!   r1   r‘  r2   r   r   r   Ú&test_agg_relabel_multiindex_duplicatesÉ  s    ÿ
ÿr•  Úkwargsr   rÍ   rˆ  c                 C   sh   t g d¢g d¢g d¢dœƒ}| d¡ | ¡}t ddgtddgd	dd
�t ddgg¡d�}t ||¡ d S )Nr6  rO  ©r   r   r   r  r   r   r   r   r¤   r(  r   rÍ   rÙ   )r   r   r    r   r   rb   r-   r.   )r–  r!   r1   r2   r   r   r   Ú test_groupby_aggregate_empty_keyÚ  s    ýr˜  c                  C   s\   t g d¢g d¢g d¢dœƒ} |  d¡ dg i¡}t tdgg gg g gd�d�}t ||¡ d S )	Nr6  rO  r—  r  r   r   )r%  Úcodesr«   ©r   r   r    r   r-   r.   rA  r   r   r   Ú-test_groupby_aggregate_empty_key_empty_returnç  s    r›  c                  C   s`   t g d¢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   Frr   r   )rþ   rþ   rZ   rƒ   )r   r   r    r‡   r   r-   r.   rA  r   r   r   Ú2test_groupby_aggregate_empty_with_multiindex_frameï  s    ÿrœ  c                  C   s`   t g d¢g d¢dœƒ} | jddd�}|jtjddd	�d
�}t g d¢g d¢dœƒ}t ||¡ d S )N)r   rµ   Úzr   rµ   r�  ©r#  çš™™™™™é?rl   g      @gÍÌÌÌÌÌ@ç      è?)r   Úvalr   Fr)  r¡  rÍ   rV  ©Úmin_val)r   rµ   r�  )r#  rŸ  r   )r   r£  r‰  ©r!   r0   r1   r2   r   r   r   Ú9test_grouby_agg_loses_results_with_as_index_false_relabelù  s    ÿr¥  c                  C   sp   t g d¢g d¢g d¢dœƒ} | jddgdd�}|jtjd	d
d�d�}t g d¢g d¢g d¢dœƒ}t ||¡ d S )N)r   rµ   r   rµ   r   r   )r   r   r   r   r   r   rž  )r   r>  r¡  r   r>  Fr)  r¡  rÍ   rV  r¢  ©r   r   rµ   )r   r   r   )r#  r   rŸ  )r   r>  r£  r‰  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˜   g d¢g d¢g}t |tjg d¢g d¢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 )N)r   r   r   )rG   rH   r   r6  )r   r   r   ZSiskoZJanewayrZ   r«   r   r   r#  ç      @rm   r{  g      @rl   ))r   r   )r   r   )r   r   rÙ   )
r   r   Úfrom_arraysr   r`   rÁ   r    rg   r-   r.   )r®   rf   r!   r1   Úexpected_dictr2   r   r   r   Útest_multiindex_custom_func  s    ÿþýr¬  c                 C   s   t j| dd�S ©NgÍÌÌÌÌÌì?rÜ   ©r`   rp  r¨  r   r   r   Úmyfunc2  s    r¯  c                 C   s   t j| dd�S r­  r®  r¨  r   r   r   r'   6  r(   c                 C   sn   t g d¢g d¢g d¢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Údogr±  r²  ©g333333"@g      @ç      #@ç      A@©çš™™™™™@rŽ  çÍÌÌÌÌÌ#@ç     Àh@©ÚkindÚheightÚweightr»  )r¼  r+   r¼  )Úmean_heightÚperc90gš™™™™™"@g0»'5"@g      4@g5^ºI@r¾  r¿  r±  r²  r—   rƒ   r  )r®   Zanimalsr1   r2   r   r   r   Útest_lambda_named_agg6  s    ýÿ
ÿýrÀ  c                  C   s¤   t t dgd ¡ dd¡tdƒtdƒd�} g d¢| 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g d¢ƒd�}t 	||¡ d S )Nr   r]   r   ZXYZr5  ©rf   rg   r:   )úgroup 1rÂ  r   Úgroupingc                 S   s   |   ¡ S r$   )Útolistr   r   r   r   r'   S  r(   z,test_aggregate_mixed_types.<locals>.<lambda>r   rÂ  rˆ   r(  )ÚXr“  ÚZrÙ   )
r   r`   rÁ   r·   r‡   r   rB   r   r-   r.   )r!   r1   r¸   r2   r   r   r   Útest_aggregate_mixed_typesM  s    "ÿ&
ýrÇ  zNot implemented;see GH 31256©Úreasonc                  C   sf   dd„ } t dt g d¢¡iƒ}| g d¢¡ | ¡}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   rX  f  s    z5test_aggregate_udf_na_extension_type.<locals>.aggfuncr4   rO  r6  r   r©   rs   r   r9   )r   r‰   rÁ   r   r    r™   r-   r.   )rX  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   sl   t g d¢g d¢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 )Nr3  r   r	  r4   rA   c                 S   s   dS r   r   r   r   r   r   r'   u  r(   z/TestLambdaMangling.test_basic.<locals>.<lambda>c                 S   s   dS rR  r   r   r   r   r   r'   u  r(   r   r   ))rA   ú
<lambda_0>)rA   ú
<lambda_1>r—   r9   r  rr  r   r   r   Ú
test_basics  s     þzTestLambdaMangling.test_basicc                 C   sd   t g d¢ƒ g d¢¡}| dd„ dd„ g¡}ddgddgdœ}t|t ddg¡d	�}t ||¡ d S )
Nr   r3  c                 S   s   dS r   r   r   r   r   r   r'     r(   z?TestLambdaMangling.test_mangle_series_groupby.<locals>.<lambda>c                 S   s   dS rR  r   r   r   r   r   r'     r(   r   r   ©rÌ  rÍ  r9   rH  )rI  rJ  r1   Úexp_datar2   r   r   r   Útest_mangle_series_groupby}  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'   †  r(   z5TestLambdaMangling.test_with_kwargs.<locals>.<lambda>r   c                 S   s   |   ¡ ||  S r$   r@   rÒ  r   r   r   r'   ‡  r(   r   r   rª   rÏ  r±   )r   é   r~   )r   )r   )r   r   r    r   r-   r.   )rI  Úf1Úf2r1   r2   r   r   r   Útest_with_kwargs„  s    

"&z#TestLambdaMangling.test_with_kwargsc                 C   sÈ   t g d¢g d¢g d¢dœƒ}g d¢}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º  )Úheight_sqr_minÚ
height_maxÚ
weight_maxç¤p=
×³T@ç      B@r´  rµ  r¸  r¹  r±  r²  r»  r—   rÙ   ©Úbyr¼  c                 S   s   t  | d ¡S r8   ©r`   rÍ   r   r   r   r   r'   ¨  r(   z=TestLambdaMangling.test_agg_with_one_lambda.<locals>.<lambda>rV  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‰   ra  r-   r.   ©rI  r!   rg   r2   Zresult1r+  r   r   r   Útest_agg_with_one_lambda�  s:    ýÿýùÿû
ýz+TestLambdaMangling.test_agg_with_one_lambdac              	   C   s  t g d¢g d¢g d¢dœƒ}g d¢}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Ù  Zheight_max_2Z
weight_minrÚ  rÛ  r´  rµ  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(   rV  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‰   ra  rá  r   r   r   Útest_agg_multiple_lambda·  sF    ýÿû÷


ûÿù	z+TestLambdaMangling.test_agg_multiple_lambdaN)r[  r]  r^  rÎ  rÑ  r;   r_  ÚxfailrÖ  râ  rä  r   r   r   r   rË  r  s   

'rË  c                  C   sZ   t g d¢g d¢dœƒ} |  d¡ ddd„ i¡}t dd	gd
dgdœƒ d¡}t ||¡ d S )N)ÚSÚWrç  )r#  r#  rl   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#  rl   )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_ordrG   rì  rë  c                 C   s®   t g d¢tdƒtdƒdœƒ}| dddœ¡}|d j ¡ |d< |jdd	d
� | ¡}tjddgddgd	ddd�}t ||d�}d|v rž|d j	}|d  |¡|d< t
 ||¡ d S )N©r   r   r   r   rG   rª   rH   r\   ÚaabbccddÚaaaabbbb©rë  rì  r±  Úcategory©r±  rì  rì  r±  F©Zobservedr   r   ©Ú
categoriesZorderedrv   rt   )rf   r:   )r   r‡   r­   r±  Ú
as_orderedr   r    r‰   ÚCategoricalIndexrt   r-   r.   )Úgrp_col_dictrÐ  Úinput_dfÚ	result_dfÚ	cat_indexÚexpected_dfrt   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           
         s  t g d¢tdƒtdƒdœƒ}| dddœ¡}|d j ¡ |d< |jdd	d
� | ¡}tjddgddgd	ddd�}g }|  	¡ D ]:\‰ }t
|tƒr¦| ‡ fdd„|D ƒ¡ qz| ˆ |g¡ qzt t|ƒ¡}t |||d�}|jD ].}	t
|	tƒrØd|	v rØ||	  |d j¡||	< qØt ||¡ d S )Nrí  rî  rï  rð  rñ  rò  rì  r±  Fró  r   r   rô  c                 3   s   | ]}ˆ |gV  qd S r$   r   )rå   r   ©r¨   r   r   Ú	<genexpr><  r(   z6test_groupby_combined_aggs_cat_cols.<locals>.<genexpr>rÁ  )r   r‡   r­   r±  rö  r   r    r‰   r÷  ÚitemsrÃ   ÚextendÚappendr   rb   rŒ   rg   rt   r-   r.   )
rø  rÐ  rù  rú  rû  Zmulti_index_listÚvZmulti_indexrü  Úcolr   rþ  r   Ú#test_groupby_combined_aggs_cat_cols  s.    ýÿÿ

r  c                  C   sT   t g d¢g d¢dœƒ} |  d¡}| dg¡}|j d¡|_| d¡}t ||¡ d S )Nr  )r   r   r   r   r–   r   r  rè  )r   r   r    rg   Z	droplevelr-   r.   )r!   rc   r1   r2   r   r   r   Útest_nonagg_aggJ  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Å  r“  iÕ  r   r±   r~   é   i`= i½  r	  r4   rA   )r   Údatetimer   rA   rÌ   r  r-   rC   rA  r   r   r   Útest_aggregate_datetime_objectsW  s    þþÿ	r	  c                  C   s|   t g d¢g d¢g d¢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 )N)r   r   r   r¦  ©r   r   r   )Úc0Úc1ÚpÚOr  r  c                 S   s   t | dkƒS r   r  r   r   r   r   r'   n  r(   z1test_groupby_index_object_dtype.<locals>.<lambda>)r   r   r1  )r  r  rZ   FTr  r¿   )r   r:   r­   r   r  r    r   rb   r   r-   rC   )r!   r0   r|   rê   r2   r   r   r   Útest_groupby_index_object_dtypei  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®   {  s    z)test_timeseries_groupby_agg.<locals>.funcr#  z2018-01-16 00:00:00+00:00r9   c                 S   s   dS rR  r   r   r   r   r   r'   �  r(   z-test_timeseries_groupby_agg.<locals>.<lambda>r   )r   r‰   rE  r   r    r-   r.   )r®   r!   r|   r2   r   r   r   Útest_timeseries_groupby_aggx  s
    r  c                 C   sÞ   | t jv rt | ¡j}| t jv r,t | ¡j}| t jv rFt |  ¡ ¡j}| t j	v r`t |  ¡ ¡j}t
dgdgtj|g| d�dœƒ}dgdgg}tj|dd�}t
dtj|g| d�i|d�}| d	d
g¡ dd„ ¡}t  ||¡ d S )Nr   r   rs   r=  )r>  r?  rZ   r@  r9   r>  r?  c                 S   s   | S r$   r   r   r   r   r   r'   ž  r(   z,test_groupby_agg_precision.<locals>.<lambda>)r-   ZALL_INT_NUMPY_DTYPESr`   ZiinforÌ   ZFLOAT_NUMPY_DTYPESZfinfoZFLOAT_EA_DTYPESÚlowerZALL_INT_EA_DTYPESr   r‰   rÁ   r   rª  r   r    r.   )Zany_real_numeric_dtypeZ	max_valuer!   Zarraysr:   r2   r1   r   r   r   Útest_groupby_agg_precision‡  s*    



ýÿÿr  c                 C   s„   | dv rd S t ddgdtjggƒ}| d¡ | ¡}| d¡ d| i¡}| dv 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`   ra   r   r    r-   rC   r.   Zdtypes)r    ÚobjZresult_reduced_seriesZresult_reduced_framer   r   r   Ú test_groupby_aggregate_directory¢  s    
ÿÿr  c                  C   sJ   t g d¢dd�} t dgdt dg¡d�}|  g d¢¡ ¡ }t ||¡ d S )N)z1 dayz3 daysÚNaTútimedelta64[ns]rs   z2 daysr   ru   ©r   r   r   )r   r`   rÁ   r   r+   r-   rC   )rf   r2   r1   r   r   r   Útest_group_mean_timedelta_nat¸  s    r  zinput_data, expected_output)z2021-01-01T00:00r  z2021-01-01T02:00z2021-01-01T01:00)z2021-01-01T00:00-0100r  z2021-01-01T02:00-0100z2021-01-01T01:00-0100c                 C   sF   t t| ƒƒ}t t|t dg¡d�ƒ}| g d¢¡ ¡ }t ||¡ d S )Nr   r9   r  )r
   r   r`   rÁ   r   r+   r-   rC   )Z
input_dataZexpected_outputrf   r2   r1   r   r   r   Útest_group_mean_datetime64_natÂ  s    r  zfunc, outputr+   y       @      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®   Úoutputrf   r1   r2   r   r   r   Útest_groupby_complexØ  s     r  )rÍ   rÌ   r’   c                 C   sl   t t d¡ dd¡ ddg¡ƒ}d}tjt|d��& | |j	d ¡ 
| ¡ W d   ƒ n1 s^0    Y  d S )Nr³   r±   r   r   r  zNo matching signature foundr6   )r   r`   r¶   r·   r  r;   r<   rž   r   r:   r    )r®   rf   r>   r   r   r   Útest_groupby_complex_raisesã  s     r  Úprodr0  c                 C   s˜   t g d¢g d¢g d¢dœƒ}d}tjt|d�� |jddd	�}W d   ƒ n1 sR0    Y  tjtd
d�� | | ¡ W d   ƒ n1 sŠ0    Y  d S )Nr6  ©r   r   rG   )rª   rH   r\   r  rh   r6   r   r   r�   z"axis other than 0 is not supported)	r   r-   rn   ro   r   r;   r<   ÚNotImplementedErrorr    )r®   r!   r>   r"   r   r   r   Útest_multi_axis_1_raisesì  s    ,r"  ztest, constantr4   rA   r5   rm   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 g d¢g d¢dœƒ} |  d¡}ddd„}dd
d„}d}tjt|d��& |j||gdddd� W d   ƒ n1 sr0    Y  |j||gddd�}t ddgddgddggtg d¢dd�t ddg¡d�}t	 
||¡ d S )NrO  r  r1  rµ   r   r   c                 S   s   |   ¡ | | S r$   r@   ©r   r   r   r   r   r   Úfoo1  s    z@test_dataframe_groupy_agg_list_like_func_with_args.<locals>.foo1r   c                 S   s   |   ¡ | | S r$   r@   ©r   r   r   r   r   r   Úfoo2  s    z@test_dataframe_groupy_agg_list_like_func_with_args.<locals>.foo2ú/foo1\(\) got an unexpected keyword argument 'b'r6   r   r   rˆ  r‚  r\   r]   r±   r—   )r   r&  )r   r(  rÙ   )r   r   )r   r   )r   r   r;   r<   rž   r    r   r   rb   r-   r.   )r!   r"   r&  r(  r>   r1   r2   r   r   r   Ú2test_dataframe_groupy_agg_list_like_func_with_args  s    


4ýr*  c                  C   sÂ   t g d¢ƒ} |  | ¡}ddd„}ddd„}d	}tjt|d
��& |j||gdddd� W d   ƒ n1 sh0    Y  |j||gddd�}tddgddgddggtg d¢ƒddgd�}t 	||¡ d S )NrO  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>.foo1r   c                 S   s   |   ¡ | | S r$   r@   r'  r   r   r   r(  2  s    z=test_series_groupy_agg_list_like_func_with_args.<locals>.foo2r)  r6   r   r   rˆ  r‚  r\   r]   r±   r&  r(  rÙ   )r   r   )r   r   )
r   r   r;   r<   rž   r    r   r   r-   r.   )r×   Zsgbr&  r(  r>   r1   r2   r   r   r   Ú/test_series_groupy_agg_list_like_func_with_args*  s    


4$ÿr+  c                  C   s˜   t g d¢g d¢g d¢dœƒ} |  ddg¡}|ddg }| dd	„ ¡}td
dgddggdd
gdd
ggddgd�}t ddgddgdœ|d�}t ||¡ d S )Nr6  )r   r   r   )rG   rª   rH   r  r   r   r   c                 S   s   |   ¡ S r$   r@   r   r   r   r   r'   E  r(   z.test_agg_groupings_selection.<locals>.<lambda>r   r   r   r   r   )r%  r™  r[   rª   rM   rH   rˆ  r9   rš  )r!   r"   Zselected_gbr1   r:   r2   r   r   r   Útest_agg_groupings_selection@  s    "ÿr,  c                  C   sb   t g d¢g d¢dœƒ} | jddd�d }| dd	g¡}t d
dgddgddgdœƒ}t ||¡ d S )Nr6  r   r–   r   Fr)  r   r   r+   r   r   rH   rG   r  r©  )r   r   r+   )r   r   r    r-   r.   r  r   r   r   Ú?test_agg_multiple_with_as_index_false_subset_to_a_single_columnM  s
    r-  c                  C   sr   t g d¢g d¢g d¢dœƒ} | jddgdd�}| d	g¡}t g d
¢g d¢g d¢gt g d¢¡d�}t ||¡ d S )NrP  )r   r   r   )r   rG   rª   )Úa1Úa2r   r.  r/  F)rÝ  r*  r   )r   r   r   )r   r   rG   )r   r   rª   ))r.  Ú )r/  r0  )r   r   re   )r   r   r    r   rb   r-   r.   r  r   r   r   Ú&test_agg_with_as_index_false_with_listV  s    þr1  c                  C   sj   t dt d¡t d¡t d¡dœiƒ} t tg d¢dd�g d¢d	œƒ}| d
¡}|jdd�}t || ¡ d S )NÚtdú0 days 01:00:00ú0 days 01:15:00r
  )r3  z0 days 00:15:00r4  r  rs   )r   r   r   )r2  Úgrpsr5  )r2  r  )r2  )r   r‰   Z	Timedeltar   r   r    r-   r.   )r2   r!   r"   r1   r   r   r   ÚBtest_groupby_agg_extension_timedelta_cumsum_with_named_aggregationc  s&    ýÿÿ	þûÿ	
r6  c                  C   sv   dd„ } t tjddgg d¢d�ddgdœƒ}d}tjt|d	��$ |jd
dd� | ¡ W d   ƒ n1 sh0    Y  d S )Nc                 S   s   t | ƒdkrtdƒ‚t | ƒS )Nr   úlength must not be 0)r   rŸ   r   r   r   r   r®   ~  s    z2test_groupby_aggregation_empty_group.<locals>.funcr   r  )rõ  r   r	  r7  r6   r4   Fró  )r   r‰   ZCategoricalr;   r<   rŸ   r   r    )r®   r!   r>   r   r   r   Ú$test_groupby_aggregation_empty_group|  s    ÿr8  )sÚ__doc__r  ro  r   rƒ  Ú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   rd   rq   r}   r�   rŽ   r_  r`  r•   r›   r£   Úintry   r°   r¹   rÅ   rË   rÑ   rÓ   rí   rõ   rö   rÿ   r   r  r
  r  r  r!  r  r$  r&  r,  r¤   Zuint64r2  r4  r÷  r‡   Zinterval_rangeZperiod_rangerb   r8  rB  rF  rG  rb  r+   ra  r’  r”  r•  r˜  r›  rœ  r¥  r§  r¬  r¯  rÀ  rÇ  rå  rÊ  rË  rê  rý  r  r  r	  r  r  r  r  r  r  r  r  r"  Úparamr$  r*  r+  r,  r-  r1  r6  r8  r   r   r   r   Ú<module>   s¼   
1ÿ
úþ
 üþ	
#$
úþ
(þþÿÿ(þþ

üþ	
5vú	

ú	
úïþ


ÿ


yýþ
ýþ
(
þþûþ
	ÿ

ÿ

**0ýüþ

	