o
    iɾ                     @   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%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,d.d.d.d)fgd/d0 Z(ej"#d1d#d2d3gd4d5gd6d7ggd%d%d8fd&d9gd2 gd( d.fd*d2gd2 gd( d.d.d8fgd:d; Z)d<d= Z*d>d? Z+d@dA Z,dBdC Z-dDdE Z.dFdG Z/dHdI Z0dJdK Z1dLdM Z2ej"#dNdOd dPd dQd dRd dSd dTd gdUdV Z3ej"#dWdXgedYgdXdZfdXd[gedYgd2ggdgdggdXd[gd\fgej"#d]g d^ej"#d_g d^ej"#d`g dadbdc Z4ej"#dWdXgedYgdXdZfdXd[gedYgd2ggdgdggdXd[gd\fgej"#ddg deej"#dfe5e&e'gej"#d`g dadgdh Z6didj Z7dkdl Z8ej"#dfej9ej:gej"#dmg dndodp Z;dqdr Z<ej"#dse=e>dte?dd(ej@dud(dvdweAg dxgdydz ZBd{d| ZCd}d~ ZDG dd dZEG dd dZFej"#dddejGfddYd(gdd2gddgfddd fddd fddYd(gdYdYgddgfeHddeHdejIeHddd dYd(gddgdYdYgfgdd ZJdd ZKdd ZLej"#dddgig dgdgdd ZMdd ZNdd ZOdd ZPdd ZQej"#ddd dd dd gdd ZRdd ZSej"#ddd eSgdd ZTdd ZUej"jVdddd ZWG dd dZXdd ZYej"#dddddYdgdXdgdfddiddXdgifddiddYdgifgdd ZZej"#dddgddddgfdddgdddgfdddgiddgfgddń Z[ddǄ Z\ddɄ Z]dd˄ Z^dd̈́ Z_ddτ Z`ddф Zaej"#dg dӢdgfg dբdgfgdd؄ Zbej"#ddddgfd#ddgfgdd Zcej"#dg ddd Zdej"#ddgddgd[d#idddgdd Zeej"#dd7dgd7dgd4dggd4d7gdddggdfd7dgd7dgddggd7dgddgdgdfdXdYgdXdYgd[d2gd[d(ggdXd[gdYd2d(ggdfejfdXdYgdXd2gd[d(gd[d(ggdXd[gdYd2gd(gdej"jVdgdd Zgdd Zhd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   h/var/www/edux/Edux_v2/venv/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   s:   |  dd dd g}|tj}| }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(   r   r   npmean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   r,   nanr   from_tuplesr   r-   r.   r/   )r3   r    gr2   r   r   r   $test_groupby_aggregation_mixed_dtypeB   s>   
rh   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}|jddd}|jdd}tg d	g d
d}t|| d S )N)TTTFTF))r5   r   )r5   r   )rF   r   )rF   r   )datacolumnsr   levelaxisnumeric_only)       @TTT)r   r   r   r   r   r   )	r,   re   r   r   rf   r   r   r.   r/   )lstr    r!   r2   r3   r   r   r   +test_groupby_aggregation_multi_level_columns   s   rs   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|
tj	| tj|tj	|dd |j |d tj dd}t|jttg dtjdd}t|	 | t|
tj	| t|tj	| d S )	NF
group_keysdtype)rw   r>   )check_index_typer5   )namerw   )rj   rw   r>   )r   r,   re   rw   float64r   r   r.   rH   r   r   applyr   rj   floatr/   )tsr0   r1   expexp_dfr   r   r   test_agg_apply_corner   s   r   c                 C   s   t  }|dd }|jjd j}t| jt||jjd< |	t
j}| }t || t| jt||jjd< |	t
j}| }t || d S )Nc                 S   r#   r$   r%   r   r   r   r   r'      r(   z1test_agg_grouping_is_list_tuple.<locals>.<lambda>r   )r.   makeTimeDataFramer   grouper	groupingsgrouping_vectorr   r>   listr   r,   r-   r/   tuple)r}   r    r1   r   r2   r3   r   r   r   test_agg_grouping_is_list_tuple   s   r   c                 C   s2   |  ddg}|tj}| }t|| d S )Nr5   rF   r+   )mframer1   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   sp   | j dd}|dv rt}d}nt}d| d}tj||d |j|dd	 W d    d S 1 s1w   Y  d S )
Nr   rl   )idxmaxidxminz3reduction operation '.*' not allowed for this dtypez
Operation z does not support axis=1r7   r   rm   )r   	TypeError
ValueErrorr@   rA   r   )r    reduction_funcr!   errorrC   r   r   r   %test_agg_str_with_kwarg_axis_1_raises   s   "r   z(func, expected, dtype, result_dtype_dictr   )rL   rM   rb   int64r   glv @r   ijkr   g      @Int64r   rz   c                 C   s   t g dgd tddgg dgd||d}| dkr tnd }d	}tj||d
 |jddd| }W d    n1 s@w   Y  t |gd g dd|}t	|| d S )N)r   r   r   r   rL      r   r   r   r   rj   ))r   r   )r   r   r   !The default value of numeric_onlyr7   r   rk   )
r   r   from_productastypeFutureWarningr.   assert_produces_warningr   r   r/   )funcr3   rw   result_dtype_dictr    warnrC   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kr&tnd }d}tj||d |j	ddd
| }W d    n1 sFw   Y  t |tg dddtddgddd|}t|| d S )Nrd   r   r   r   r   r   yry   )r   r   r   r   r   r   )r>   rj   rw   r   r   r   r   r7   r   r   r   )ri   r>   rj   )r   r,   arangereshaper   r   r   r.   r   r   r   r/   )r   expected_datar   r    r   rC   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>   ry   c                 S   r#   r$   r   r   r   r   r   aggfun)  s   z+test_aggregate_item_by_item.<locals>.aggfunr   )r   r   r5   r   r   rj   r   r,   arrayr   r.   rH   xsassert_almost_equalr   
isinstance)r    r1   r   r2   r   r   Kr~   r   r   r   test_aggregate_item_by_item  s   


r   c                 C   s   |  ddg}dd }tjtdd ||}W d    n1 s"w   Y  | jd d | jdkf }| ddg|}t|| d S )Nr5   rF   c                 S   s   | j tkrt|  S r$   )rw   objectr   r   r   r   r   r   r   4  s   
ztest_wrap_agg_out.<locals>.funczDropping invalid columnsr7   r6   )r   r.   r   r   rG   locrj   r/   )three_groupr1   r   r2   exp_groupedr3   r   r   r   test_wrap_agg_out1  s   r   c                 C   sN   dt jfdt jfdt jfg}| dd |}tg d}t|j	| d S )Nr-   maxminr5   r6   )r-   r   r   )
r,   r-   r   r   r   r   r   r.   assert_index_equalrj   )r    funcsr2   exp_colsr   r   r   *test_agg_multiple_functions_maintain_orderA  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 )N  r   1/1/2012S)freqperiodsr5   rF   r6   r>   rj   3Tr5   H.?q镲q?r   )r5   quantilec                    "   g | ]}  d jj|djqS r   r   resampler5   r   values.0r   r    r   r   
<listcomp>W     " z9test_agg_multiple_functions_same_name.<locals>.<listcomp>r   r   rj   r>   )r   r,   randomrandnpd
date_ranger   r   r   r   r   rf   r   Tr.   r/   )r2   expected_indexexpected_columnsexpected_valuesr3   r   r   r   %test_agg_multiple_functions_same_nameJ  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   dti)r   r   ry   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   w  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   rf   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_  s.   
 r   c                 C   s   ddg}ddg}|  dd |}|  dd |}t|| tjtdd |  d|}W d    n1 s<w   Y  tjtdd |  d|}W d    n1 s[w   Y  t|| d S )N)r   r-   r   )r   r   r5   r6   z&\['B'\] did not aggregate successfullyr7   )r   r   r.   r/   r   r   )r    r   ex_funcsr2   r3   r   r   r   -test_multiple_functions_tuples_and_non_tuples  s    r   c           
      C   sT  |  d}|tjtjd}|tjtjd}t||gddgdd}|jddddjddd	}tjtjgtjtjgd}||}t	
|| |tjtjtjgd}|tjtjtjgd}t	
|| d
d }dd }d}	tjt|	d tjtjtjdd}|| W d    n1 sw   Y  tjg||gd}|| d S )Nr5   r6   r   r-   r   r   )keysrm   r   r   rk   c                 S   
   t | S r$   r,   r-   r   r   r   r   r     s   
z4test_more_flexible_frame_multi_function.<locals>.fooc                 S      t j| ddS )Nr   )ddof)r,   r   r   r   r   r   r        z4test_more_flexible_frame_multi_function.<locals>.barnested renamer is not supportedr7   r   r   )r   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   
r  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  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|s"J | |dj}t|s0J d S )Nr   FTr   r   r   r   )r   	set_indexr   rw   r   )r  r    sr2   r   r   r   test_bool_agg_dtype  s   r$  zkeys, agg_indexr   r   r   r   r_   input_dtype)boolint32r   float32rz   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   r)  r   r   r'         z2test_callable_result_dtype_frame.<locals>.<lambda>r  r   r=   r{   )r   r   getattrr   r   
RangeIndexr-  rj   r`   r.   r/   )
r   	agg_indexr%  r)  r*  r    r  r2   r   r3   r   r.  r    test_callable_result_dtype_frame  s   
r3  input)Tr         ?rw   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                    r+  r   r,  r   rv   r   r   r'   %  r/  z3test_callable_result_dtype_series.<locals>.<lambda>r  r   r   )
r   r0  r   r   r1  r   r-  r   r.   rH   )
r   r2  r4  rw   r*  r    r  r2   r   r3   r   rv   r   !test_callable_result_dtype_series  s    r6  c                  C   sR   t g dg dd} | dg d}|jjd }tg d}t|| d S )Nr  r   r5   rF   r5   )r   r   r-   r   r   r   )r   r   r   rj   levelsr   r.   r   )r    resr2   r3   r   r   r   #test_order_aggregate_multiple_funcs+  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	|| d S )N)r   r   r   r   r   r      rR   r   r   r!  rv   r   )r;  r;  rR   rR   r   r   )r   r   r   r   r   rw   ry   )rj   r>   rw   )
r   r   NAr   r   r   r   r   r.   r/   )any_numeric_ea_dtyper    r2   r3   r   r   r   test_ohlc_ea_dtypes7  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r0|jtj|_tj||dd	 d S )
Nl   &tLWHd~ r   r   r   r   r   r   )r-   rC  T)check_exact)	r   r   r   r   r   r,   r   r.   r/   )rw   r@  r    r3   r2   r   r   r   test_uint64_type_handlingG  s   rF  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   r7  r7   r5   r   )r   r@   rA   r   r   r   )rC   r    r   r   r   test_func_duplicates_raisesU  s
   "rH  r>   abc2020r   )r   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=   rL  r   r   r   )r   r   r   r   nuniquer"  r.   r/   )r>   r    r2   r3   r   r   r   $test_agg_index_has_complex_internals]  s   rN  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tworO  rP  rO  )threerQ  rQ  sixrR  )key1key2key3rS  rO  rR  )rT  rU  r   r   r   r=   )r   r   r   r   r.   r/   r    r2   r3   r   r   r   test_agg_split_blockn  s   rW  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 S )N2000r   )r   )r   r   r   r  r   )r   r   r  e)r5   rF   r6   r   EF)r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   	Timestampr.   r/   rV  r   r   r   #test_agg_split_object_part_datetime  s,   	



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ddgd}t|| |jddd}|d
d	g }t|| d S )Nr   rG  r   r   r!  r   rM   r   r   r   r   r   )r   r   r   r   r   r   r.   r/   )selfr    grr2   r3   r   r   r   test_series_named_agg  s   z0TestNamedAggregationSeries.test_series_named_aggc                 C   sl   t ddgddg}tjtdd |  W d    n1 s!w   Y  |g }t }t|| d S )Nr   r   r   Must provider7   )	r   r   r@   rA   r   r   r   r.   r/   r`  ra  r2   r3   r   r   r   test_no_args_raises  s   

z.TestNamedAggregationSeries.test_no_args_raisesc                 C   sJ   t g dg d}|jddd}tddgddgd}t|| d S )Nr   r   r   r   r   r   r   r!  r   r_  )r`  ra  r1   r3   r   r   r   *test_series_named_agg_duplicates_no_raises  s   zETestNamedAggregationSeries.test_series_named_agg_duplicates_no_raisesc                 C   sR   t g dg d}|jdd dd d}tddgddgd}t|| d S )	Nrf  rg  c                 S      dS r   r   r   r   r   r   r'         z9TestNamedAggregationSeries.test_mangled.<locals>.<lambda>c                 S   ri  Nr   r   r   r   r   r   r'     rj  r!  r   r   r_  rd  r   r   r   test_mangled     z'TestNamedAggregationSeries.test_mangledinpanythingr   columnaggfunc)ro  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`  rn  r#  rC   r   r   r   test_named_agg_nametuple  s
   
"z3TestNamedAggregationSeries.test_named_agg_nametupleN)ru  
__module____qualname__rb  re  rh  rl  r@   markparametrizer   NamedAggrv  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t
fdtjfddd|fd}t ddgddgddgd	d
gddgddgdtddgddg dd}t|| d S ) Nr   r   r   r   r  rL   r   rM   ra   rL  r5   rF   rL  r5   r   rF   r   )a_maxb_maxr   r   r   ra   r   r   r   r  r  r   b   r   rF   r   r5   )b_mina_mina_meanr  r  a_98rL   rM   r   r   g      ?g      @g\(\?gףp=
@)r   r   r   r   r.   r/   	functoolsr   r,   
percentiler   r-   )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  rL  zmy colr  r   r   r   r   r   r=   r   r   r   r   r   r.   r/   r`  r    r2   r3   r   r   r   test_agg_relabel_non_identifier  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 )NrG  r   r7  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   r,   r  ru  )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 )NrG  r   r7  r5   rF   r   r   r=   r   r   r  )r5   r   )rF   r-   )aabbccr   r  g      @)r   r   r   r   r   r.   r/   r  r   r   r   test_agg_relabel_with_level  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 )Nrg  rf  r7  r5   rc  r7   r   )r   r  r!  )r   r   r@   rA   r   r   )r`  r    r1   r8   r   r   r   test_agg_relabel_other_raises"  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   r7  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_raises/  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   r7  r5   rF   r   countrp  r   r   )rF   r   )rF   r  r   r   r   r   r{  r.   r/   r  r   r   r   test_agg_namedtuple5  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   ri  r   r   r   r   r   r   r'   ?  rj  z<TestNamedAggregationDataFrame.test_mangled.<locals>.<lambda>r6   c                 S   ri  rk  r   r   r   r   r   r'   ?  rj  r  r   r=   r  r  r   r   r   rl  =  s   $&z*TestNamedAggregationDataFrame.test_mangledN)ru  rw  rx  r  r  r  r  r  r  r  rl  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-   g      @      @c                 C   s   t | S r$   )r   r   r   r   r   r'   P  r;   c                 C   ri  rk  r   r   r   r   r   r'   Q  rj  r   r  c                 C   ri  rk  r   r   r   r   r   r'   Z  rj  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j| ||d}t |||d|d}	t||	 d S )Nr}  r  r~  r  r   rL  r  r  r   r   r  r   r  )r  r  r   r   r=   )col_1col_2col_3)	r   r   rf   rj   r   r   r   r.   r/   )
agg_col1agg_col2agg_col3agg_result1agg_result2agg_result3r    idxr2   r3   r   r   r   "test_agg_relabel_multiindex_columnD  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   rs  )	r   r   rf   rj   r@   rA   r  r   r   r   r   r   r   ,test_agg_relabel_multiindex_raises_not_existx  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   rf   rj   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 )NrK  rf  r   r   r   r  r   r   r   r   r   r<  r   r   r   )r   r   r   r   r   rf   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 )	NrK  rf  r  r  r   r   )r8  codesr   )r   r   r   r   r.   r/   rV  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   Frt   r   )r  r  r_   r   )r   r   r   r   r   r.   r/   rV  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  r5  皙?rp   g      @g@      ?)r   valr   Fas_indexr  r   rp  min_val)r   r   r  )r5  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   rS  r  r   rS  Fr  r  r   rp  r  r   r   r   )r   r   r   )r5  r  r  )r   rS  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$   )r,   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 |}|j|_t	|| d S )N)r   r   r   )rL   rM   r   rK  )r   r   r   SiskoJanewayr_   r   r   r   r5  g      @rq   r  g      @rp   ))r   r   )r   r   )r   r   )
r   r   from_arraysr   r,   r   r   rj   r.   r/   )r   ri   r    r2   expected_dictr3   r   r   r   test_multiindex_custom_func  s   r  c                 C   r  Ng?r   r,   r  r  r   r   r   myfunc  r  r  c                 C   r  r  r  r  r   r   r   r'     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   animalsr2   r3   r   r   r   test_lambda_named_agg  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   XYZrI  ri   rj   r>   )group 1r  r   groupingc                 S   r9   r$   )tolistr   r   r   r   r'     r;   z,test_aggregate_mixed_types.<locals>.<lambda>r   r  r   r<  )Xr  Zrv   r   )
r   r,   r   r   r   r   rG   r   r.   r/   )r    r2   r   r3   r   r   r   test_aggregate_mixed_types  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   rr  !  s   z5test_aggregate_udf_na_extension_type.<locals>.aggfuncr5   rf  rK  r   r   rv   r   r=   )r   r   r   r   r   r=  r.   r/   )rr  r    r2   r3   r   r   r   $test_aggregate_udf_na_extension_type  s
   	$r  c                   @   sN   e Zd Zdd Zdd Zejjddej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 )NrG  r   r7  r5   rF   c                 S   ri  r   r   r   r   r   r   r'   0  rj  z/TestLambdaMangling.test_basic.<locals>.<lambda>c                 S   ri  rk  r   r   r   r   r   r'   0  rj  r   r   ))rF   
<lambda_0>)rF   
<lambda_1>r   r=   r  r  r   r   r   
test_basic.  s    zTestLambdaMangling.test_basicc                 C   sR   t g dg d}|dd dd g}tddgddgd}t|| d S )	Nr   rG  c                 S   ri  r   r   r   r   r   r   r'   :  rj  z?TestLambdaMangling.test_mangle_series_groupby.<locals>.<lambda>c                 S   ri  rk  r   r   r   r   r   r'   :  rj  r   r   r  r  r_  rd  r   r   r   test_mangle_series_groupby8  rm  z-TestLambdaMangling.test_mangle_series_groupbyzGH-26611. kwargs for multi-agg.r  z-ignore:Dropping invalid columns:FutureWarningc                 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$   rE   r   r   r   r   r   r   r'   A  r/  z5TestLambdaMangling.test_with_kwargs.<locals>.<lambda>r   c                 S   s   |   ||  S r$   rE   r  r   r   r   r'   B  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_maxp=
׳T@      B@r  r  r  r  r  r  r  r   r   byr  c                 S      t | d S r<   r,   r   r   r   r   r   r'   c  r?   z=TestLambdaMangling.test_agg_with_one_lambda.<locals>.<lambda>rp  r   r  c                 S   r  r<   r  r   r   r   r   r'   l  r?   r  r   r  r   )r   r   r   r   r   r{  r.   r/   r`  r    rj   r3   result1result2r   r   r   test_agg_with_one_lambdaK  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   r  r<   r  r   r   r   r   r'     r?   z=TestLambdaMangling.test_agg_multiple_lambda.<locals>.<lambda>r  r  c                 S   r   r$   r,   r   r   r   r   r   r'     r  r  c                 S   r   r$   r  r   r   r   r   r'     r  c                 S   r  r<   r  r   r   r   r   r'     r?   rp  r   c                 S   r   r$   r  r   r   r   r   r'     r  c                 S   r   r$   r  r   r   r   r   r'     r  )r   r   r   r   r.   r/   r   r{  r  r   r   r   test_agg_multiple_lambdar  sF   


	z+TestLambdaMangling.test_agg_multiple_lambdaN)ru  rw  rx  r  r  r@   ry  xfailfilterwarningsr  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)r   Wr  )r5  r5  rp   r7  r5   rF   c                 S   s   |  | jd S )N)getr>   r   r   r   r   r'     r/  z+test_groupby_get_by_index.<locals>.<lambda>r   r  r5  rp   )r   r   r   r"  r.   r/   )r    r9  r3   r   r   r   test_groupby_get_by_index  s   r  zgrp_col_dict, exp_data)nrcat_ordrL   r  r  c                 C   s   t g dtdtdd}|ddd}|d j |d< |d| }tjd	d
gd	d
gdddd}t ||d}d|v rM|d j	}|d ||d< t
|| d S )Nr   r   r   r   rL   r   rM   ra   aabbccddaaaabbbbr  r  r  categoryr  r  r  r  r   r   F
categoriesorderedry   rw   )ri   r>   )r   r   r   r  
as_orderedr   r   r   CategoricalIndexrw   r.   r/   )grp_col_dictexp_datainput_df	result_df	cat_indexexpected_dfrw   r   r   r    test_groupby_single_agg_cat_cols  s"   
r0  )r   r   r   )rL   ra   r   )r   r   r   )rL   r   r  r!  )r   r  c                 C   s  t g dtdtdd}|ddd}|d j |d< |d| }tjd	d
gd	d
gdddd}g }| 	 D ]\}}t
|trQ|D ]	}|||g qFq;|||g q;tt|}	t ||	|d}
|
jD ]}t
|trd|v r|
| |d j|
|< qjt||
 d S )Nr  r   r!  r"  r#  r$  r  r  r   r   Fr%  r  )r   r   r   r  r(  r   r   r   r)  itemsr   appendr   rf   r   rj   rw   r.   r/   )r*  r+  r,  r-  r.  multi_index_listr   vr   multi_indexr/  colr   r   r   #test_groupby_combined_aggs_cat_cols  s4   

r7  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   rj   	droplevelr.   r/   )r    rg   r2   r3   r   r   r   test_nonagg_agg  s   

r9  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  r7  r5   rF   )r   datetimer   rF   r   r"  r.   rH   rV  r   r   r   test_aggregate_datetime_objects  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'   *  r  z1test_groupby_index_object_dtype.<locals>.<lambda>)r   r   rD  )r=  r>  r_   FTr?  r   )r   r>   r   r   r?  r   r   rf   r   r.   rH   )r    r1   r9  r   r3   r   r   r   test_groupby_index_object_dtype%  s   rA  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  r,   r   r   r   r   r   r   7  s   
z)test_timeseries_groupby_agg.<locals>.funcr5  z2018-01-16 00:00:00+00:00r=   c                 S   ri  rk  r   r   r   r   r   r'   =  rj  z-test_timeseries_groupby_agg.<locals>.<lambda>r   )r   r   r\  r   r   r.   r/   )r   r    r9  r3   r   r   r   test_timeseries_groupby_agg4  s
   rC  c                 C   s   | dv rd S | dkrt nd }tddgdtjgg}tj|dd |d| }|dd| i}W d    n1 s=w   Y  | dv rRtj||d dd	 d S t	|| t|j
|j
 d S )
N)corrwithnthmadr   r   zThe 'mad' method is deprecatedr7   )r   ngroupF)check_names)r   r   r,   re   r.   r   r   r   rH   r/   dtypes)r   r   objresult_reduced_seriesresult_reduced_framer   r   r    test_groupby_aggregate_directoryC  s    

rM  c                  C   s@   t g ddd} t dgdd}| g d }t|| d S )N)z1 dayz3 daysNaTztimedelta64[ns]rv   z2 daysr   r   r   )r   r   r-   r.   rH   )ri   r3   r2   r   r   r   test_group_mean_timedelta_nat[  s   rP  zinput_data, expected_output)z2021-01-01T00:00rN  z2021-01-01T02:00z2021-01-01T01:00)z2021-01-01T00:00-0100rN  z2021-01-01T02:00-0100z2021-01-01T01:00-0100c                 C   s:   t t| }t t|}|g d }t|| d S )NrO  )r
   r   r   r-   r.   rH   )
input_dataexpected_outputri   r3   r2   r   r   r   test_group_mean_datetime64_nate  s   rS  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.   rH   )r   outputri   r2   r3   r   r   r   test_groupby_complex{  s    rW  )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   rT  zNo matching signature foundr7   )r   r,   r   r   rU  r@   rA   r   r   r>   r   )r   ri   rC   r   r   r   test_groupby_complex_raises  s
    "rX  prodrC  c                 C   sh   t g dg dg dd}|jddd}tjtdd	 ||  W d    d S 1 s-w   Y  d S )
NrK  r   r   rL   )r   rM   ra   r  r   r   r   z"axis other than 0 is not supportedr7   )r   r   r@   rA   NotImplementedErrorr   )r   r    r!   r   r   r   test_multi_axis_1_raises  s
   "r\  ztest, constantr5   rF   r6   rq   r   )marksc                 C   s<   t | }|dtj}t |}|d}t|| d S r   )r   r   r   r   moder"  r.   r/   )r  constantdf1r2   r3   r   r   r   test_agg_of_mode_list  s
   
ra  c                  C   s   t g dtdg dd} | d}d}tjt|d |tj W d    n1 s-w   Y  t	j
tdd |jtjd	d
 W d    d S 1 sMw   Y  d S )NrK  xyzrZ  r  r   z$The operation <function mean.*failedr7   z"got an unexpected keyword argumentTrn   )r   r   r   r.   r   r   r   r,   r-   r@   rA   r   )r    r!   rC   r   r   r   test_numeric_only_warning_numpy  s   
"rc  )i__doc__r;  r  r   r  numpyr,   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   rh   rs   r   r   r   ry  rz  r   r   intr|   r   r   r   r   r   r   r   r   r  r  r  r$  r3  r&  r6  r:  r?  r   uint64rF  rH  r)  r   interval_rangeperiod_rangerf   rN  rW  r]  r^  r|  r   r{  r-   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0  r7  r9  r<  rA  rC  rM  rP  rS  rW  rX  r\  paramra  rc  r   r   r   r   <module>   s    
1

 
		!$
((


	5v
	

	





y

)

	


**0
