o
    �¨ÊhÙ  ã                   @   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   ú_/var/www/html/env/lib/python3.10/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   ó   | j S ©N©Úyearr   r   r   r   Ú<lambda>*   ó    z&test_agg_regression1.<locals>.<lambda>c                 S   r$   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   
r4   c                 C   s�   |   d¡d }d}tjt|d�� | dd„ ¡ W d   ƒ n1 s"w   Y  tjt|d�� | dd„ ¡ W d   ƒ d S 1 sAw   Y  d S )NÚAÚCzMust produce aggregated value©Úmatchc                 S   ó   |   ¡ S r%   )Údescriber   r   r   r   r(   5   ó    z#test_agg_must_agg.<locals>.<lambda>c                 S   s   | j d d… S ©Nr   ©Úindexr   r   r   r   r(   7   ó    )r   ÚpytestÚraisesÚ	Exceptionr    )r!   r1   Úmsgr   r   r   Útest_agg_must_agg0   s   ÿ"ÿrD   c                 C   sH   dd„ }| j  | j| jg¡ |¡}|  ddg¡ ¡ d }t ||¡ d S )Nc                 S   r9   r%   ©r   r   r   r   r   r(   ;   r;   z(test_agg_ser_multi_key.<locals>.<lambda>r5   ÚBr6   )r6   r   r5   rF   Ú	aggregater   r.   Úassert_series_equal)r!   ÚfÚresultsr3   r   r   r   Útest_agg_ser_multi_key:   s   rK   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   rU   )r   rV   )ÚbigÚdamp)ÚblueÚdry)Úredr[   )r[   ÚwetÚby1Úby2©Únamesr=   é   é	   éX   rV   r[   rY   r   rW   é   r\   rZ   rU   rX   )rS   rT   r]   r^   rS   rT   )	r   ÚnpÚnanr   Úfrom_tuplesr   r,   r.   r/   )r3   r!   Úgr2   r   r   r   Ú$test_groupby_aggregation_mixed_dtypeA   s>   þ
õûôüÿri   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 s=w   Y  |j	dd
�}tg d¢g d¢dœƒ}t 
||¡ d S )N)TTTFTF))r5   r   )r5   r   )rF   r   )rF   r   ©ÚdataÚcolumnsú+DataFrame.groupby with axis=1 is deprecatedr7   r   ©ÚlevelÚaxis)Únumeric_only)ç       @TTT)r   r   r   r   ©r   r   )re   rf   r   r   rg   r.   Úassert_produces_warningÚFutureWarningr   r   r/   )Úlstr!   rC   r"   r2   r3   r   r   r   Ú+test_groupby_aggregation_multi_level_columnr   s    üþÿrw   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�w   Y  t ||¡ d S )NF©Ú
group_keys©Údtype©r{   r>   r   )Úcheck_index_typer5   )Únamer{   )rl   r{   r>   z:The behavior of DataFrame.sum with axis=None is deprecated)r8   Úcheck_stacklevel)r   re   rf   r{   Úfloat64r   r   r.   rH   r   r    Úapplyr   rl   Úfloatr/   rt   ru   )Útsr0   r1   ÚexpÚexp_dfrC   Ú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   ÚABCDrz   z
2000-01-01rˆ   rF   ©ÚperiodsÚfreq©rl   r>   c                 S   r$   r%   r&   r   r   r   r   r(   ª   r)   z1test_agg_grouping_is_list_tuple.<locals>.<lambda>r   r,   )r   re   ÚrandomÚdefault_rngÚstandard_normalr   ÚlistÚobjectÚpdÚ
date_ranger   Ú_grouperÚ	groupingsÚgrouping_vectorr   r>   r    r,   r.   r/   Útuple)rƒ   r!   r1   Úgrouperr2   r3   r   r   r   Útest_agg_grouping_is_list_tuple£   s   ý

rš   c                 C   s0   |   ddg¡}| d¡}| ¡ }t ||¡ d S )Nr5   rF   r,   r-   )Ú multiindex_dataframe_random_datar1   r2   r3   r   r   r   Útest_agg_python_multiindex¹   s   
rœ   Úgroupbyfuncc                 C   r9   r%   )Úweekdayr   r   r   r   r(   Â   r;   r(   c                 C   r$   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 )
Nr5   ÚstdÚvarr,   Úsem)r5   rF   r6   ÚDrF   r6   r¢   )r   r    rŸ   r.   rH   rG   r    r/   r   r,   r¡   )r0   r�   r1   r2   r3   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   ÚFloat64rz   ©r   r   r   r   g(µ¦yâ?r   ©r~   ©r>   r{   )	r   r   r“   ÚNAr   rŸ   r   r.   r/   )Úany_numeric_ea_dtyper!   r2   r3   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	��/ tj||d	�� |j|d
d� W d   ƒ n1 sBw   Y  W d   ƒ d S W d   ƒ d S 1 sZw   Y  d S )Nr   ©ro   zDataFrameGroupBy.z with axis=1 is deprecated)ÚidxmaxÚidxminz;'[<>]' not supported between instances of 'float' and 'str'z
Operation z does not support axis=1r7   r   ©rp   )	r   Ú	TypeErrorru   Ú
ValueErrorr@   rA   r.   rt   r    )r!   Úreduction_funcr"   Úwarn_msgÚerrorrC   Úwarnr   r   r   Ú%test_agg_str_with_kwarg_axis_1_raisesí   s    ÿÿ"ÿrµ   z(func, expected, dtype, result_dtype_dictr   )rL   rM   rb   Úint64rŸ   gÙlßÌvø @r   ©ÚiÚjÚkr    g      @ÚInt64r¹   r€   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 s5w   Y  | | ¡}t |gd g d¢d� |¡}t 	||¡ d S )N)r   r   r   r   rL   é   r   r   r   r·   ©rl   ))r   r¹   )r   r¹   rm   r7   r   rn   )
r   r   Úfrom_productÚastyper.   rt   ru   r   r    r/   )Úfuncr3   r{   Úresult_dtype_dictr!   rC   r"   r2   r   r   r   Ú(test_multiindex_groupby_mixed_cols_axis1ý   s   þýÿ
ÿrÂ   z&func, expected_data, result_dtype_dictr   r   é
   rd   é   é   )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 s;w   Y  | 
| ¡}t |tg d¢dd�tddgdd�d� |¡}t ||¡ d S )Nrd   r   r   ©r   r   r   Úyr¦   )rÃ   rÅ   rÃ   rÅ   r   r¶   )r>   rl   r{   rÃ   r»   rm   r7   r   r®   rÅ   )rk   r>   rl   )r   re   ÚarangeÚreshaper   r¿   r.   rt   ru   r   r    r/   )rÀ   Úexpected_datarÁ   r!   rC   r"   r2   r3   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ƒsfJ ‚t|ƒd
ksnJ ‚d S )Nr5   c                 S   r$   r%   ©Úsize©Úserr   r   r   r(   ;  r)   z-test_aggregate_item_by_item.<locals>.<lambda>ÚfooÚbarÚBCD©r>   r~   c                 S   r$   r%   rÌ   rÎ   r   r   r   Úaggfun_1H  s   z-test_aggregate_item_by_item.<locals>.aggfun_1r   )r   r    r5   r   r   rl   r   re   Úarrayr‘   r.   rH   ÚxsÚassert_almost_equalr   Ú
isinstance)	r!   r1   Úaggfun_0r2   ÚfoosumÚ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 s"w   Y  |g d¢  |¡}| jd d …g d¢f }|  ddg¡ |¡}t ||¡ d S )	Nr5   rF   c                 S   s   | j tkr	tdƒ‚|  ¡ S )NúTest error message)r{   r’   r¯   r   rÎ   r   r   r   rÀ   S  s   
ztest_wrap_agg_out.<locals>.funcrÞ   r7   )r¢   ÚEÚF)r5   rF   r¢   rß   rà   )r   r@   rA   r¯   rG   Úlocr.   r/   )Úthree_groupr1   rÀ   r2   Úexp_groupedr3   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 s,w   Y  t	g d¢ƒ}t 
|j|¡ d S )	Nr,   ÚmaxÚminú%is currently using SeriesGroupBy.meanr7   r5   r6   )r,   rå   ræ   )re   r,   rå   ræ   r.   rt   ru   r   r    r   Úassert_index_equalrl   )r!   ÚfuncsrC   r2   Úexp_colsr   r   r   Ú*test_agg_multiple_functions_maintain_order`  s   ÿrë   c                 C   s@   | j d d …dgf  | d ¡}| dd„ ¡}|jjdksJ ‚d S )Nr6   r5   c                 S   r9   r%   ©r,   r   r   r   r   r(   m  r;   z(test_series_index_name.<locals>.<lambda>)rá   r   r    r>   r~   )r!   r1   r2   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‹   ©r5   rF   r6   ©r>   rl   Ú3minr5   ç§èH.ÿï?©Úqçâé•²q¼?r¼   )r5   Úquantilec                    ó"   g | ]}ˆ   d ¡jj|d�j‘qS ©rô   rö   ©Úresampler5   rù   Úvalues©Ú.0r÷   ©r!   r   r   Ú
<listcomp>~  ó   " z9test_agg_multiple_functions_same_name.<locals>.<listcomp>©rõ   rø   r�   )r   re   rŽ   r�   r�   r“   r”   rý   r    r   rù   r   rg   rÕ   ÚTr.   r/   )r2   Úexpected_indexÚexpected_columnsÚexpected_valuesr3   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ï   Údti)rŒ   r‹   r~   rò   Úalphar¦   ró   rô   r5   Úohlcrõ   rö   rø   r¼   ))r5   r  Úopen)r5   r  Úhigh)r5   r  Úlow)r5   r  Úclose©r5   rù   r5   r  )r  NNr_   c                    rú   rû   rü   rÿ   r  r   r   r  ž  r  zKtest_agg_multiple_functions_same_name_with_ohlc_present.<locals>.<listcomp>r  r�   )r   re   rŽ   r�   r�   r“   r”   r   rý   r    r   rù   r   rg   rÕ   r  Úhstackr5   r  r.   r/   )r2   r  r  Únon_ohlc_expected_valuesr  r3   r   r  r   Ú7test_agg_multiple_functions_same_name_with_ohlc_present†  s2   ý
 ÿ÷ÿþÿÿ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 )	NrF   r6   r½   )rÐ   r,   rŸ   )rŸ   rŸ   r5   r¢   )Údropr   r    r.   r/   )r!   ré   Úex_funcsr2   r3   r   r   r   Ú-test_multiple_functions_tuples_and_non_tuples©  s   r  c           
      C   s0  |   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„w   Y  dg||gdœ}| |¡ d S )Nr5   r,   ©r6   r¢   rŸ   r   )Úkeysrp   r   r®   rn   c                 S   ó
   t  | ¡S r%   ©re   r,   r   r   r   r   Ú	numpymeanÍ  s   
z:test_more_flexible_frame_multi_function.<locals>.numpymeanc                 S   ó   t j| dd�S )Nr   )Úddof)re   rŸ   r   r   r   r   ÚnumpystdÐ  ó   z9test_more_flexible_frame_multi_function.<locals>.numpystdúnested renamer is not supportedr7   ©rÐ   rÑ   )r   r    r	   Ú	swaplevelÚ
sort_indexrG   r.   r/   r@   rA   r   )
r!   r1   ÚexmeanÚexstdr3   Údr2   r  r  rC   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 s(w   Y  dddœddœ}tjt|d�� | |¡ W d   ƒ n1 sLw   Y  dddœddœ}tjt|d�� | |¡ W d   ƒ d S 1 sqw   Y  d S )	Nr5   r,   rŸ   r"  r   r  r!  r7   )r   r@   rA   r   rG   )r!   r1   r'  rC   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(   ý  ó    z1test_groupby_agg_coercing_bools.<locals>.<lambda>FTrÓ   r   c                 S   s   |   ¡  ¡ S r%   )Úisnullr.  r   r   r   r   r(     r/  )r   r   r   rG   r   r.   rH   )ÚdatÚgpr>   r2   r3   r   r   r   Útest_groupby_agg_coercing_boolsö  s   
r3  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)r5   r5   rF   rF   rF   )r   r   r   r   r   ©r5   rF   r5   rF   r   r   r   r=   r   r®   )r   r   r    Úrename_axisr.   r/   )r1  r2   r3   r   r   r   Ú"test_groupby_agg_dict_with_getitem  s   "r6  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   rL   )r   r   rL   r¼   r   r½   r   r   r   rL   r   r   r   r¦   r=   ©r   r   r    r   r.   r/   ©r!   r"   r2   r3   r   r   r   Ú!test_groupby_agg_dict_dup_columns  s   þ
 r9  Úopc                 C   r9   r%   rE   r   r   r   r   r(     r;   c                 C   r9   r%   )Úcumsumr   r   r   r   r(      r;   c                 C   ó
   |   d¡S ©Nr   ©Ú	transformr   r   r   r   r(   !  ó   
 c                 C   r<  ©Nr;  r>  r   r   r   r   r(   "  r@  c                 C   r<  r=  ©r    r   r   r   r   r(   #  r@  c                 C   r<  rA  rB  r   r   r   r   r(   $  r@  c                 C   sd   t ddgddgdœƒ}| d¡d }| | d¡ƒd j}t|ƒs"J ‚| | d¡ƒj}t|ƒs0J ‚d S )Nr   FTr¥   r   r   )r   Ú	set_indexr   r{   r   )r:  r!   rñ   r2   r   r   r   Útest_bool_agg_dtype  s   rD  zkeys, agg_indexr   r   r¦   r   r_   Úinput_dtype)ÚboolÚint32r¶   Úfloat32r€   Úresult_dtypeÚmethod)r�   rG   r?  c           
         sª   t dgdgdgdœƒ}|d  |¡|d< t| | ¡dg |ƒ}|‡ fdd„ƒ}|dkr1t d	d¡n|}t d|d jd	 gi|d
� ˆ ¡}	|dkrMd	g|	j_t	 
||	¡ d S )Nr   r   Tr,  r   c                    ó   |   ˆ ¡jd S r   ©r¿   Úilocr   ©rI  r   r   r(   I  ó    z2test_callable_result_dtype_frame.<locals>.<lambda>r?  r   r=   r�   )r   r¿   Úgetattrr   r“   Ú
RangeIndexrM  rl   r`   r.   r/   )
r  Ú	agg_indexrE  rI  rJ  r!   r:  r2   r  r3   r   rN  r   Ú test_callable_result_dtype_frame4  s   ÿ
rS  Úinput)Tr   ç      ð?r{   c           
         s‚   t dgdg|gdœƒ}t| | ¡d |ƒ}|‡ fdd„ƒ}|dkr't dd¡n|}t|d jd g|dd	� ˆ ¡}	t 	||	¡ d S )
Nr   r   r,  r   c                    rK  r   rL  r   rz   r   r   r(   a  rO  z3test_callable_result_dtype_series.<locals>.<lambda>r?  r   rÓ   )
r   rP  r   r“   rQ  r   rM  r¿   r.   rH   )
r  rR  rT  r{   rJ  r!   r:  r2   r  r3   r   rz   r   Ú!test_callable_result_dtype_seriesS  s    rV  c                  C   sR   t g d¢g d¢dœƒ} |  d¡ g d¢¡}|jjd }tg d¢ƒ}t ||¡ d S )Nr*  r   r4  r5   )r   rå   r,   r  ræ   r   )r   r   r    rl   Úlevelsr   r.   rè   )r!   r†   r2   r3   r   r   r   Ú#test_order_aggregate_multiple_funcsg  s
   rX  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   é   rR   rÃ   rÅ   r¥   rz   r   )rY  rY  rR   rR   r   r   )r  r  r  r  r   ©r{   r~   )rl   r>   r{   F©Úas_index)r   r“   r¨   r   r  r   r¾   r   r.   r/   Úreset_index)r©   r!   r"   r2   r3   Úgb2Úresult2Ú	expected2r   r   r   Útest_ohlc_ea_dtypess  s"   þ
"üra  Úhow)ÚfirstÚlastræ   rå   r,   Úmedianc                 C   st   t dddgdœƒ}| d¡ d|i¡}|j | ¡|_| d¡ d|i¡}|dvr0|j tj¡|_tj||dd	� d S )
Nl   &tLWHd~ r   r   ©r   rÇ   rÇ   r   )r,   re  T)Úcheck_exact)	r   r   r    r   r¿   re   r¶   r.   r/   )r{   rb  r!   r3   r2   r   r   r   Útest_uint64_type_handling‰  s   rh  c                  C   sb   d} t g d¢g d¢dœƒ}tjt| d�� | d¡ ddg¡ W d   ƒ d S 1 s*w   Y  d S )NzFunction names©r   r   r   r   r   r4  r7   r5   ræ   )r   r@   rA   r   r   r    )rC   r!   r   r   r   Útest_func_duplicates_raises—  s
   "ÿrj  r>   ÚabcÚ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   r=   rn  r   r   r   )r   r   r    r   ÚnuniquerC  r.   r/   )r>   r!   r2   r3   r   r   r   Ú$test_agg_index_has_complex_internalsŸ  s   rp  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Útworq  rr  rq  )Úthreers  rs  Úsixrt  ©Úkey1Úkey2Úkey3rv  rq  rt  )rw  rx  r   r   r¦   r=   )r   r   ræ   r   r.   r/   ©r!   r2   r3   r   r   r   Útest_agg_split_block°  s   ýÿþrz  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)r5   rF   r6   r¢   rß   rà   )r   r   r   r   r   r   r   r   r§   )r   r“   r”   r¿   r’   r   ræ   Ú	Timestampre   rÕ   r.   r/   ry  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 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   ri  r   ræ   r¥   r   rM   r   r   r   r   r�   )r   r   ©r   r   r    r   re   rÕ   r.   r/   )Úselfr!   Úgrr2   r3   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 s!w   Y  | g ¡}tg d�}t ||¡ d S )Nr   r   r   úMust provider7   r½   )	r   r   r@   rA   r¯   r    r   r.   r/   ©r�  r‚  r2   r3   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   r=   r€  )r�  r‚  r1   r3   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 )
Nr‡  rˆ  c                 S   ó   dS r   r   r   r   r   r   r(   þ  ó    z9TestNamedAggregationSeries.test_mangled.<locals>.<lambda>c                 S   rŠ  ©Nr   r   r   r   r   r   r(   þ  r‹  r¥   r   r   r=   r€  r…  r   r   r   Útest_mangledü  s   $z'TestNamedAggregationSeries.test_mangledÚinpÚanythingræ   ©ÚcolumnÚaggfunc)r�  ræ   c                 C   sd   t g d¢ƒ}dt|ƒj› �}tjt|d�� | |j¡j|d� W d   ƒ d S 1 s+w   Y  d S )N)r   r   r   r   r   r   r   rL   zfunc is expected but received r7   ©r   )	r   ÚtypeÚ__name__r@   rA   r¯   r   rþ   r    )r�  rŽ  rñ   rC   r   r   r   Útest_named_agg_nametuple  s
   
"ÿz3TestNamedAggregationSeries.test_named_agg_nametupleN)r•  Ú
__module__Ú__qualname__rƒ  r†  r‰  r�  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 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+  ©rL   r¼   rM   ra   ©rn  r5   rF   rn  ©r5   rå   ©rF   rå   )Úa_maxÚb_maxr   r   r¼   ra   r   r   r¦   r¢  r£  ró   éb   rö   ©rF   ræ   ©r5   ræ   )r5   r,   r5   )Úb_minÚa_minÚa_meanr¢  r£  Úa_98rL   rM   r   r   ç      à?ç      @g\�Âõ(\ï?g×£p=
×@)
r   r   r    r   r.   r/   Ú	functoolsr   re   Ú
percentile)r�  r!   r2   r3   Úp98r   r   r   Útest_agg_relabel  s>   ÿý
úúöz.TestNamedAggregationDataFrame.test_agg_relabelc                 C   sf   t g d¢g d¢g d¢dœƒ}| d¡jdi ddi¤Ž}t ddd	gitd
dgdd�d�}t ||¡ d S )Nr�  r+  rž  rŸ  rn  zmy colr   r   r   r   r   r¦   r=   r   r7  ©r�  r!   r2   r3   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 )Nri  r   r4  r5   r¥  r¥   r   r   r   r¦   r=   é2   rö   éF   Úquant50Úquant70)r   r   r   r   r   )r   r   r   r   rL   )Úcol1Úcol2r·  r¸  )Úquantile_50Úquantile_70ç      ø?ç      @g333333û?gš™™™™™@r   r   )r   r   r    r   r.   r/   r­  r   re   r®  r•  )r�  r!   r1   r3   rµ  r¶  Ú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 )Nri  r   r4  r5   rF   r   r   r=   r   r«   r   r¦  )rF   r,   )ÚaaÚbbÚccr   r»  ç      @)r   r   r¾   r   r    r.   r/   r±  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 s*w   Y  tjt|d�� | ¡  W d   ƒ n1 sEw   Y  tjt|d�� |jd	dd
� W d   ƒ d S 1 sdw   Y  d S )Nrˆ  r‡  r4  r5   r„  r7   r   )rÐ   r¡  r¥   )r   r   r@   rA   r¯   r    )r�  r!   r1   r8   r   r   r   Útest_agg_relabel_other_raisesf  s   
ÿ
ÿ"ÿz;TestNamedAggregationDataFrame.test_agg_relabel_other_raisesc                 C   sf   t ddgddgdœƒ}t d¡}tjt|d�� | d¡jdd	� W d   ƒ d S 1 s,w   Y  d S )
Nr   r   r   r4  zColumn(s) ['C'] do not existr7   r5   )r6   r   ©r   )r   ÚreÚescaper@   rA   ÚKeyErrorr   r    )r�  r!   r8   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   r4  r5   rF   r   Úcountr�  ©r   r   )rF   r   )rF   rÊ  ©r   r   r    r“   r›  r.   r/   r±  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ò   r5   rF   c                 S   rŠ  r   r   r   r   r   r   r(   ƒ  r‹  z<TestNamedAggregationDataFrame.test_mangled.<locals>.<lambda>r6   c                 S   rŠ  rŒ  r   r   r   r   r   r(   ƒ  r‹  rË  r¦   r=   r7  r±  r   r   r   r�  �  s   $&z*TestNamedAggregationDataFrame.test_mangledN)r•  r—  r˜  r°  r²  r¾  rÃ  rÄ  rÉ  rÍ  r�  r   r   r   r   rœ    s    $	rœ  zCagg_col1, agg_col2, agg_col3, agg_result1, agg_result2, agg_result3©©rÇ   r5   rå   rÏ  )©rÇ   rF   r,   r«  r¬  g      @ç      @c                 C   s   t | ƒS r%   )rå   r   r   r   r   r(   ”  r;   c                 C   rŠ  rŒ  r   r   r   r   r   r(   •  r‹  rÐ  rå   c                 C   rŠ  rŒ  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 sVw   Y  t |||dœ|d�}	t ||	¡ d S )Nr�  r+  rž  rŸ  ©©r   rn  rÏ  rÐ  r   r   rÓ  r¦   rÎ  )r¢  r¢  r   r   r=   rç   r7   )Úcol_1Úcol_2Úcol_3)r   r   rg   rl   r   r   r    r.   r/   rt   ru   )Úagg_col1Úagg_col2Úagg_col3Úagg_result1Úagg_result2Úagg_result3r!   Úidxr2   r3   rC   r   r   r   Ú"test_agg_relabel_multiindex_columnˆ  s$   !ÿ
ÿÿÿrÞ  c                  C   sr   t g d¢g d¢g d¢dœƒ} t g d¢¡| _tjtdd�� |  d¡jd	d
� W d   ƒ d S 1 s2w   Y  d S )Nr�  r+  rž  rŸ  rÒ  zdo not existr7   rÓ  ))ÚYr   rå   r“  )	r   r   rg   rl   r@   rA   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 )Nr�  r+  rž  rŸ  rÒ  rÓ  )rÏ  ræ   r¥   r   r   r¦   r   r   r=   )	r   r   rg   rl   r   r    r   r.   r/   )r!   r2   rÝ  r3   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 )Nrm  r‡  ©r   r   r   r,  r   r   r   r   r¶   rZ  r   ræ   ró   )r   r   r    r   r   rg   r.   r/   )râ  r!   r2   r3   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 )	Nrm  r‡  rã  r,  r   r   )rW  Úcodesr½   ©r   r   r    r   r.   r/   ry  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   Frx   r   )r'  r'  r_   r�   )r   r   r    r‘   r   r.   r/   ry  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é  ©rU  çš™™™™™é?rr   g      @gÍÌÌÌÌÌ@ç      è?)r   Úvalr   Fr[  rí  ræ   r�  ©Úmin_val)r   rÇ   ré  )rU  rë  rì  )r   rï  rÌ  ©r!   r1   r2   r3   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   rv  rí  r   rv  Fr[  rí  ræ   r�  rî  ©r   r   rÇ   )r   r   r   )rU  rì  rë  )r   rv  rï  rÌ  rð  r   r   r   ÚDtest_grouby_agg_loses_results_with_as_index_false_relabel_multiindex  s   ýÿÿró  rÀ   c                 C   r9   r%   rì   ©rñ   r   r   r   r(     r;   c                 C   r  r%   r  rô  r   r   r   r(     r@  c                 C   r  r%   )re   Ú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   )rL   rM   r   rm  )r   r   r   ÚSiskoÚJanewayr_   r½   r   r   rU  ç      @rs   r¼  g      @rr   ))r   r   )r   r   )r   r   ró   )
r   r   Úfrom_arraysr   re   rÕ   r    rl   r.   r/   )rÀ   rk   r!   r2   Úexpected_dictr3   r   r   r   Útest_multiindex_custom_func  s   ÿþýrû  c                 C   r  ©NgÍÌÌÌÌÌì?rö   ©re   r®  rô  r   r   r   Úmyfunc2  r   rþ  c                 C   r  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�   r7  )rÀ   Úanimalsr2   r3   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d�d�}t 	||¡ d S )Nr   rb   r   ÚXYZrk  ©rk   rl   r>   )úgroup 1r  r   Úgroupingc                 S   r9   r%   )Útolistr   r   r   r   r(   S  r;   z,test_aggregate_mixed_types.<locals>.<lambda>r   r  r’   rZ  )ÚXrß  ÚZrz   ró   )
r   re   rÕ   rÉ   r‘   r   rG   r   r.   r/   )r!   r2   rÊ   r3   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 )Nr   r   )r.  r“   r¨   r   r   r   r   r’  f  s   z5test_aggregate_udf_na_extension_type.<locals>.aggfuncr5   r‡  rm  r   r»   rz   r   r=   )r   r“   rÕ   r   r    r¨   r.   r/   )r’  r!   r2   r3   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 )Nri  r   r4  r5   rF   c                 S   rŠ  r   r   r   r   r   r   r(   u  r‹  z/TestLambdaMangling.test_basic.<locals>.<lambda>c                 S   rŠ  rŒ  r   r   r   r   r   r(   u  r‹  r   r   ))rF   ú
<lambda_0>)rF   ú
<lambda_1>r¦   r=   r7  r±  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   ri  c                 S   rŠ  r   r   r   r   r   r   r(     r‹  z?TestLambdaMangling.test_mangle_series_groupby.<locals>.<lambda>c                 S   rŠ  rŒ  r   r   r   r   r   r(     r‹  r   r   ©r  r  r=   r€  )r�  r‚  r2   Úexp_datar3   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 r%   rE   ©r   rÇ   r   r   r   r   r(   †  rO  z5TestLambdaMangling.test_with_kwargs.<locals>.<lambda>r   c                 S   s   |   ¡ ||  S r%   rE   r$  r   r   r   r(   ‡  rO  r   r   r¼   r   rÃ   )r   é   rˆ   )r   )r   )r   r   r    r   r.   r/   )r�  Úf1Úf2r2   r3   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   ó   t  | d ¡S r<   ©re   ræ   r   r   r   r   r(   ¨  r?   z=TestLambdaMangling.test_agg_with_one_lambda.<locals>.<lambda>r�  rå   r  c                 S   r0  r<   r1  r   r   r   r   r(   ±  r?   ©r  rå   ©r  rå   )r   r   r   r    r“   r›  r.   r/   ©r�  r!   rl   r3   Ú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+  Úheight_max_2Ú
weight_minr,  r-  r  r  r  r  r  rÑ  r   r  r
  r¦   ró   r.  r  c                 S   r0  r<   r1  r   r   r   r   r(   Ö  r?   z=TestLambdaMangling.test_agg_multiple_lambda.<locals>.<lambda>r2  r3  c                 S   r  r%   ©re   rå   r   r   r   r   r(   Ù  r@  r  c                 S   r  r%   r1  r   r   r   r   r(   Ú  r@  c                 S   r0  r<   r1  r   r   r   r   r(   á  r?   r�  rå   c                 S   r  r%   r9  r   r   r   r   r(   å  r@  c                 S   r  r%   r1  r   r   r   r   r(   æ  r@  )r   r   r   r    r.   r/   r“   r›  r4  r   r   r   Útest_agg_multiple_lambda·  sF   ýÿû÷


ûÿù	z+TestLambdaMangling.test_agg_multiple_lambdaN)r•  r—  r˜  r  r"  r@   r™  Úxfailr(  r6  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=  )rU  rU  rr   r4  r5   rF   c                 S   s   |   | jd ¡S )Néÿÿÿÿ)Úgetr>   r   r   r   r   r(   î  rO  z+test_groupby_get_by_index.<locals>.<lambda>r<  r=  rU  rr   )r   r   r    rC  r.   r/   )r!   r†   r3   r   r   r   Útest_groupby_get_by_indexë  s   r@  zgrp_col_dict, exp_data)ÚnrÚcat_ordrL   rB  rA  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 rO|d j	}|d  |¡|d< t
 ||¡ d S )N©r   r   r   r   rL   r¼   rM   ra   ÚaabbccddÚaaaabbbb©rA  rB  r   Úcategory©r   rB  rB  r   F©Úobservedr   r   ©Ú
categoriesÚorderedr~   r{   )rk   r>   )r   r‘   r¿   r   Ú
as_orderedr   r    r“   ÚCategoricalIndexr{   r.   r/   )Úgrp_col_dictr!  Úinput_dfÚ	result_dfÚ	cat_indexÚexpected_dfr{   r   r   r   Ú test_groupby_single_agg_cat_colsó  s"   ýÿÿ
rU  )r   r   r   )rL   ra   r   )r   r   r   )rL   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ƒrS| ‡ fdd„|D ƒ¡ q=| ˆ |g¡ q=t t|ƒ¡}t |||d�}|jD ]}	t
|	tƒrƒd|	v rƒ||	  |d j¡||	< qlt ||¡ d S )NrC  rD  rE  rF  rG  rH  rB  r   FrI  r   r   rK  c                 3   s   � | ]}ˆ |gV  qd S r%   r   )r   r   ©rº   r   r   Ú	<genexpr><  s   € z6test_groupby_combined_aggs_cat_cols.<locals>.<genexpr>r  )r   r‘   r¿   r   rN  r   r    r“   rO  ÚitemsrØ   ÚextendÚappendr   rg   r˜   rl   r{   r.   r/   )
rP  r!  rQ  rR  rS  Úmulti_index_listÚvÚmulti_indexrT  Úcolr   rV  r   Ú#test_groupby_combined_aggs_cat_cols  s0   ýÿÿ

€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    rl   Ú	droplevelr.   r/   )r!   rh   r2   r3   r   r   r   Útest_nonagg_aggJ  s   

ra  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½  r4  r5   rF   )r   Údatetimer   rF   rå   rC  r.   rH   ry  r   r   r   Útest_aggregate_datetime_objectsW  s   þþÿ	rd  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ÚOrf  rg  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   rf  )rf  rg  r_   FTrh  rÓ   )r   r>   r¿   r   rh  r    r   rg   r   r.   rH   )r!   r1   r†   r  r3   r   r   r   Útest_groupby_index_object_dtypei  s   ÿrj  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%   )Úisnar.  re   r   rÎ   r   r   r   rÀ   {  s   
z)test_timeseries_groupby_agg.<locals>.funcrU  z2018-01-16 00:00:00+00:00r=   c                 S   rŠ  rŒ  r   r   r   r   r   r(   �  r‹  z-test_timeseries_groupby_agg.<locals>.<lambda>r   )r   r“   r}  r   r    r.   r/   )rÀ   r!   r†   r3   r   r   r   Útest_timeseries_groupby_aggx  s
   rl  c                 C   sÞ   | t jv rt | ¡j}| t jv rt | ¡j}| t jv r#t |  ¡ ¡j}| t j	v r0t |  ¡ ¡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   rz   ru  )rv  rw  r_   rx  r=   rv  rw  c                 S   s   | S r%   r   r   r   r   r   r(   ž  r‹  z,test_groupby_agg_precision.<locals>.<lambda>)r.   ÚALL_INT_NUMPY_DTYPESre   Úiinforå   ÚFLOAT_NUMPY_DTYPESÚfinfoÚFLOAT_EA_DTYPESÚlowerÚALL_INT_EA_DTYPESr   r“   rÕ   r   rù  r   r    r/   )Úany_real_numeric_dtypeÚ	max_valuer!   Úarraysr>   r3   r2   r   r   r   Útest_groupby_agg_precision‡  s*   



ýÿÿrw  c                 C   s†   | dv rd S t ddgdtjggƒ}| d¡ | ¡}| d¡ d| i¡}| dv r3tj||d dd� d S t ||¡ t |j|j¡ d S )N)ÚcorrwithÚnthr   r   )rÍ   ÚngroupF)Úcheck_names)	r   re   rf   r   r    r.   rH   r/   Údtypes)r±   ÚobjÚresult_reduced_seriesÚ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]rz   z2 daysr   r|   ©r   r   r   )r   re   rÕ   r   r,   r.   rH   )rk   r3   r2   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   r=   rƒ  )r
   r   re   rÕ   r   r,   r.   rH   )Ú
input_dataÚexpected_outputrk   r3   r2   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   re   rÈ   rÉ   Údotr   r>   r    r.   rH   )rÀ   Úoutputrk   r2   r3   r   r   r   Útest_groupby_complexØ  s    r‹  )ræ   rå   r    c                 C   sn   t t d¡ dd¡ ddg¡ƒ}d}tjt|d�� | |j	d ¡ 
| ¡ W d   ƒ d S 1 s0w   Y  d S )NrÅ   rÃ   r   r   rˆ  zNo matching signature foundr7   )r   re   rÈ   rÉ   r‰  r@   rA   r¯   r   r>   r    )rÀ   rk   rC   r   r   r   Útest_groupby_complex_raisesã  s
    "ÿrŒ  Úprodre  c                 C   sš   t g d¢g d¢g d¢dœƒ}d}tjt|d�� |jddd	�}W d   ƒ n1 s)w   Y  tjtd
d�� | | ¡ W d   ƒ d S 1 sFw   Y  d S )Nrm  ©r   r   rL   )r¼   rM   ra   r,  rm   r7   r   r   r®   z"axis other than 0 is not supported)	r   r.   rt   ru   r   r@   rA   ÚNotImplementedErrorr    )rÀ   r!   rC   r"   r   r   r   Útest_multi_axis_1_raisesì  s   ÿ"ÿr�  ztest, constantr5   rF   r6   rs   rˆ   )Úmarksc                 C   s<   t | ƒ}| d¡ tj¡}t |ƒ}| d¡}t ||¡ d S r   )r   r   r    r   ÚmoderC  r.   r/   )r½  ÚconstantÚdf1r2   r3   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 s9w   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 )Nr‡  r,  rf  rÇ   r   r   c                 S   r#  r%   rE   ©r   r   r   r   r   r   Úfoo1  ó   z@test_dataframe_groupy_agg_list_like_func_with_args.<locals>.foo1r   c                 S   r#  r%   rE   ©r   r   r   r   r   r   Úfoo2  r˜  z@test_dataframe_groupy_agg_list_like_func_with_args.<locals>.foo2ú/foo1\(\) got an unexpected keyword argument 'b'r7   r   r   rË  rÅ  ra   rb   rÃ   r¦   )r   r—  )r   rš  ró   ©r   r   ©r   r   )r   r   r@   rA   r¯   r    r   r   rg   r.   r/   )r!   r"   r—  rš  rC   r2   r3   r   r   r   Ú2test_dataframe_groupy_agg_list_like_func_with_args  s   


ÿý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 s4w   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 )Nr‡  r   r   c                 S   r#  r%   rE   r–  r   r   r   r—  /  r˜  z=test_series_groupy_agg_list_like_func_with_args.<locals>.foo1r   c                 S   r#  r%   rE   r™  r   r   r   rš  2  r˜  z=test_series_groupy_agg_list_like_func_with_args.<locals>.foo2r›  r7   r   r   rË  rÅ  ra   rb   rÃ   r—  rš  ró   rœ  r�  )
r   r   r@   rA   r¯   r    r   r   r.   r/   )rñ   Úsgbr—  rš  rC   r2   r3   r   r   r   Ú/test_series_groupy_agg_list_like_func_with_args*  s   


ÿ$ÿ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 )Nrm  )r   r   r   )rL   r¼   rM   r,  r   r   r   c                 S   r9   r%   rE   r   r   r   r   r(   E  r;   z.test_agg_groupings_selection.<locals>.<lambda>r   r   r   r   r   )rW  rå  r`   r¼   rR   rM   rË  r=   ræ  )r!   r"   Úselected_gbr2   r>   r3   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 )Nrm  rŽ  r¥   r   Fr[  r   r   r,   r   r   rM   rL   rÂ  rø  )r   r   r,   )r   r   r    r.   r/   r8  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 )Nrˆ  )r   r   r   )r   rL   r¼   )Úa1Úa2r   r¤  r¥  F)r/  r\  r   )r   r   r   )r   r   rL   )r   r   r¼   ))r¤  Ú )r¥  r¦  )r   r   rj   )r   r   r    r   rg   r.   r/   r8  r   r   r   Ú&test_agg_with_as_index_false_with_listV  s   þr§  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:00re  )r©  z0 days 00:15:00rª  r‚  rz   )r   r   r   )r¨  Úgrpsr«  )r¨  r;  )r¨  )r   r“   Ú	Timedeltar   r   r    r.   r/   )r3   r!   r"   r2   r   r   r   ÚBtest_groupby_agg_extension_timedelta_cumsum_with_named_aggregationc  s&   ýÿÿ	þûÿ
	r­  c                  C   sx   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   ƒ d S 1 s5w   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,  )rL  r   r4  r®  r7   r5   FrI  )r   r“   ÚCategoricalr@   rA   r°   r   r    )rÀ   r!   rC   r   r   r   Ú$test_groupby_aggregation_empty_group|  s   ÿ"ÿr°  )sÚ__doc__rc  r­  r   rÆ  Únumpyre   r@   Úpandas.errorsr   Úpandas.core.dtypes.commonr   Úpandasr“   r   r   r   r   r	   r
   Úpandas._testingÚ_testingr.   Úpandas.core.groupby.grouperr   r#   r4   rD   rK   ri   rw   r‡   rš   rœ   r™  rš  r£   rª   rµ   Úintr‚   rÂ   rË   rÝ   rä   rë   rí   r	  r  r  r(  r)  r3  r6  r9  rD  rS  rF  rV  rX  ra  r¶   Úuint64rh  rj  rO  r‘   Úinterval_rangeÚperiod_rangerg   rp  rz  r~  r  rœ  r,   r›  rÞ  rà  rá  rä  rç  rè  rñ  ró  rû  rþ  r  r  r;  r  r  r@  rU  r_  ra  rd  rj  rl  rw  r€  r„  r‡  r‹  rŒ  r�  Úparamr•  rž  r   r¢  r£  r§  r­  r°  r   r   r   r   Ú<module>   s¾    
1ÿ
úþ
 üþ
	#$
úþ
(þþÿÿ(þþ

üþ
	5vú
	
ú
	úïþ


ÿ


yýþ
ýþ
(
þþûþ
	ÿ

ÿ

**0ýüþ

	