U
    sVcɾ                     @   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#d$d%d&gd'i fd(d)gd* e&e'e'e'd+fd,d-gd* e&e'e'e'd+fd#d$d%d&g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 Z/dJdK Z0dLdM Z1dNdO Z2ej"#dPdQd dRd dSd dTd dUd dVd gdWdX Z3ej"#dYdZged[gdZd\fdZd]ged[gd4ggdgdggdZd]gd^fgej"#d_d`dad'dbd0gej"#dcd`dad'dbd0gej"#dddedfdggdhdi Z4ej"#dYdZged[gdZd\fdZd]ged[gd4ggdgdggdZd]gd^fgej"#djdkd[dlgej"#dme5e&e'gej"#dddedfdggdndo Z6dpdq Z7drds Z8ej"#dmej9ej:gej"#dtdudvdwdxdydzgd{d| Z;d}d~ Z<ej"#de=e>de?dd*ej@dd*ddeAdddggdd ZBdd ZCdd ZDG dd dZEG dd dZFej"#dddejGfdd[d*gdd4gddgfddd fddd fdd[d*gd[d[gddgfeHddxeHdejIeHddd d[d*gddgd[d[gfgdd ZJdd ZKdd ZLej"#dddwgig dwg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"#ddwdwdĜd[d$gdZdgdĜfddwiddZdgifddwidd[d$gifgddȄ ZZej"#ddwdxgdwdĜddgfdwdwdxgdĜddgfddwdxgiddgfgddЄ Z[dd҄ Z\ddԄ Z]ddք Z^dd؄ Z_ddڄ Z`dd܄ Zaej"#ddddgdgfdddgdgfgdd Zbej"#ddyddgfd#ddgfgdd Zcej"#ddwdxd,gdd Zdej"#ddwgdydxgd]d#iddzdgdd Zeej"#dd9dgd9dgd6dggd6d9gdddggdfd9dgd9dgddggd9dgddgdgdfdZd[gdZd[gd]d4gd]d*ggdZd]gd[d4d*ggdfejfdZd[gdZd4gd]d*gd]d*ggdZd]gd[d4g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   sB   t ddddgddddgd} | d	d
 }dd }|| d S )Nabc            )keyvaluer   r   c                 S   s   t | dkst|  S Nr   )lenAssertionErrorsumx r   Q/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/groupby/aggregate/test_aggregate.py
dummy_func"   s    z3test_groupby_agg_no_extra_calls.<locals>.dummy_func)r   groupbyagg)dfgbr   r   r   r   test_groupby_agg_no_extra_calls   s    r"   c                 C   s:   |  dd dd g}|tj}| }t|| d S )Nc                 S   s   | j S Nyearr   r   r   r   <lambda>*       z&test_agg_regression1.<locals>.<lambda>c                 S   s   | j S r#   monthr   r   r   r   r&   *   r'   r   r   npmeantmassert_frame_equal)tsframegroupedresultexpectedr   r   r   test_agg_regression1)   s    r3   c              	   C   sf   |  dd }d}tjt|d |dd  W 5 Q R X tjt|d |dd  W 5 Q R X d S )NACzMust produce aggregated valuematchc                 S   s   |   S r#   )Zdescriber   r   r   r   r&   5   r'   z#test_agg_must_agg.<locals>.<lambda>c                 S   s   | j d d S Nr   indexr   r   r   r   r&   7   r'   )r   pytestraises	Exceptionr   )r    r0   msgr   r   r   test_agg_must_agg0   s    r?   c                 C   sH   dd }| j | j| jg|}| ddg d }t|| d S )Nc                 S   s   |   S r#   r   r   r   r   r   r&   <   r'   z(test_agg_ser_multi_key.<locals>.<lambda>r4   Br5   )r5   r   r4   rA   	aggregater   r-   assert_series_equal)r    fresultsr2   r   r   r   test_agg_ser_multi_key:   s    rF   c                  C   s  t dddtjddddgdddtjddd	d
gdtjddddddddgddgdd} t dddddddtjddddgd
ddddddtjd	dddgddddtjdddddtjd gd!d"dd#tjd$d#dddtjtjgd%}|ddg}|d&d'g  }t||  d S )(N      r   r   r   7   M   !   ,      )v1v2)r   _   )r   c   )r   rP   )r   rQ   )bigdamp)bluedry)redrV   )rV   wetby1by2namesr9      	   X   rQ   rV   rT   r   rR      rW   rU   rP   rS   )rN   rO   rX   rY   rN   rO   )	r   r+   nanr   from_tuplesr   r,   r-   r.   )r2   r    gr1   r   r   r   $test_groupby_aggregation_mixed_dtypeB   sN    
rc   c                  C   s   ddddgddt jdgddt jdgddt jdgg} t| tddddgd}|jddd	}|jdd
}tddddgddddgd}t|| d S )NTF)r4   r   )r4   r   )rA   r   )rA   r   )datacolumnsr   levelaxisZnumeric_only       @r   r   r   )	r+   r`   r   r   ra   r   r   r-   r.   )lstr    r!   r1   r2   r   r   r   +test_groupby_aggregation_multi_level_columns   s    
rm   c                 C   s   | j | tj dd}| jtjks$ttg tjtg tjdd}t	|
 | t	|tj
| tj	|tj
|dd |j |d tj dd}t|jttg dtjdd}t|
 | t|tj
| t|tj
| d S )	NFZ
group_keysdtype)rp   r:   )Zcheck_index_typer4   )namerp   )re   rp   r:   )r   r+   r`   rp   float64r   r   r   r-   rC   r   r   applyr   re   floatr.   )tsr/   r0   expZexp_dfr   r   r   test_agg_apply_corner   s    rw   c                 C   s   t  }|dd }|jjd j}t| jt||jjd< |	t
j}| }t || t| jt||jjd< |	t
j}| }t || d S )Nc                 S   s   | j S r#   r$   r   r   r   r   r&      r'   z1test_agg_grouping_is_list_tuple.<locals>.<lambda>r   )r-   ZmakeTimeDataFramer   grouperZ	groupingsZgrouping_vectorr   r:   listr   r+   r,   r.   tuple)ru   r    r0   rx   r1   r2   r   r   r   test_agg_grouping_is_list_tuple   s    r{   c                 C   s2   |  ddg}|tj}| }t|| d S )Nr4   rA   r*   )Zmframer0   r1   r2   r   r   r   test_agg_python_multiindex   s    r|   groupbyfuncc                 C   s   |   S r#   )weekdayr   r   r   r   r&      r'   r&   c                 C   s   | j S r#   r(   r   r   r   r   r&      r'   c                 C   s   |  |}|d d}|d  }t|| |d}| }t|| |ddddd}t|d  |d  |d 	 |d	 
 d}t|| d S )
Nr4   stdvarr,   sem)r4   rA   r5   DrA   r5   r   )r   r   r   r-   rC   rB   r   r.   r   r,   r   )r/   r}   r0   r1   r2   r   r   r   test_aggregate_str_func   s     





r   c              	   C   sZ   | j dd}|dkrt}d}nt}d| d}tj||d |j|dd	 W 5 Q R X d S )
Nr   rg   )ZidxmaxZidxminz3reduction operation '.*' not allowed for this dtypez
Operation z does not support axis=1r6   r   rh   )r   	TypeError
ValueErrorr;   r<   r   )r    reduction_funcr!   errorr>   r   r   r   %test_agg_str_with_kwarg_axis_1_raises   s    r   z(func, expected, dtype, result_dtype_dictr   rG   rH   r]   int64r   glv @r   )ijkr   g      @Int64r   rr   c              	   C   s   t ddddddggd tddgd	d
dggd||d}| dkrJtnd }d}tj||d |jddd| }W 5 Q R X t |gd d	d
dgd|}t	|| d S )Nr   r   r   r   rG      r   r   r   r   r   re   ))r   r   )r   r   r   !The default value of numeric_onlyr6   rf   )
r   r   from_productastypeFutureWarningr-   assert_produces_warningr   r   r.   )funcr2   rp   result_dtype_dictr    warnr>   r1   r   r   r   (test_multiindex_groupby_mixed_cols_axis1   s    r   z&func, expected_data, result_dtype_dictr   r   
   r_         )r   r   g;f?c              	   C   s   t tdddtdddgddtdd	dd	gd
dddddi}| dkrRtnd }d}tj||d |j	d
dd
| }W 5 Q R X t |tdddgddtdd	gd
dd|}t|| d S )Nr_   r   r   r   r   yrq   r   r   r   r   )r:   re   rp   r   r   r   r6   r   )rd   r:   re   )r   r+   arangereshaper   r   r   r-   r   r   r   r.   )r   expected_datar   r    r   r>   r1   r2   r   r   r   test_groupby_mixed_cols_axis1   s(    r   c                 C   s   |  d}dd }||}| jdk }| jdk }t|j}tt|g| t	ddd}t
|d| tt|g| t	ddd}t
|d| dd	 }t  | j|}t|tstt|d
kstd S )Nr4   c                 S   s   | j S r#   sizeZserr   r   r   r&     r'   z-test_aggregate_item_by_item.<locals>.<lambda>foobarZBCDr:   rq   c                 S   s   | j S r#   r   r   r   r   r   aggfun)  s    z+test_aggregate_item_by_item.<locals>.aggfunr   )r   r   r4   r   r   re   r   r+   arrayry   r-   rC   xsZassert_almost_equalr   
isinstancer   )r    r0   r   r1   r   r   Krv   r   r   r   test_aggregate_item_by_item  s    


r   c              	   C   sv   |  ddg}dd }tjtdd ||}W 5 Q R X | jd d | jdkf }| ddg|}t|| d S )Nr4   rA   c                 S   s   | j tkrtn|  S d S r#   )rp   objectr   r   r   r   r   r   r   4  s    
ztest_wrap_agg_out.<locals>.funczDropping invalid columnsr6   r5   )r   r-   r   r   rB   locre   r.   )Zthree_groupr0   r   r1   Zexp_groupedr2   r   r   r   test_wrap_agg_out1  s    r   c                 C   sP   dt jfdt jfdt jfg}| dd |}tdddg}t|j	| d S )Nr,   maxminr4   r5   )
r+   r,   r   r   r   r   r   r-   assert_index_equalre   )r    funcsr1   Zexp_colsr   r   r   *test_agg_multiple_functions_maintain_orderA  s    r   c                     s   t tjddtjdddddddgd	  d
dttj	ddttj	ddgi} tjdd
dd}t
ddg}t fdddD j}t |||d}t| | d S )N  r   1/1/2012S)freqperiodsr4   rA   r5   r:   re   3TH.?q镲q?r   )r4   quantilec                    s"   g | ]}  d jj|djqS r   r   resampler4   r   values.0r   r    r   r   
<listcomp>W  s     z9test_agg_multiple_functions_same_name.<locals>.<listcomp>r   r   re   r:   )r   r+   randomrandnpd
date_ranger   r   r   r   r   ra   r   Tr-   r.   )r1   expected_indexexpected_columnsexpected_valuesr2   r   r   r   %test_agg_multiple_functions_same_nameJ  s&    
  r   c               	      s   t tjddtjdddddtddd	gd
dd  dddt	tj
ddt	tj
ddgi} tjddddd}tjddddddgd
d d gd}t fdddD j}t dj |g}t |||d}t| | d S )Nr   r   r   r   Zdti)r   r   rq   r4   rA   r5   alphar   r   r   ohlcr   r   r   r   )r4   r   open)r4   r   high)r4   r   low)r4   r   close)r4   r   r4   rZ   c                    s"   g | ]}  d jj|djqS r   r   r   r   r   r   r   w  s     zKtest_agg_multiple_functions_same_name_with_ohlc_present.<locals>.<listcomp>r   r   )r   r+   r   r   r   r   r   r   r   r   r   r   ra   r   r   Zhstackr4   r   r-   r.   )r1   r   r   Znon_ohlc_expected_valuesr   r2   r   r   r   7test_agg_multiple_functions_same_name_with_ohlc_present_  s:    
   r   c              	   C   s   ddg}ddg}|  dd |}|  dd |}t|| tjtdd |  d|}W 5 Q R X tjtdd |  d|}W 5 Q R X t|| d S )N)r   r,   r   )r   r   r4   r5   z&\['B'\] did not aggregate successfullyr6   )r   r   r-   r.   r   r   )r    r   Zex_funcsr1   r2   r   r   r   -test_multiple_functions_tuples_and_non_tuples  s       r   c           
   	   C   s@  |  d}|tjtjd}|tjtjd}t||gddgdd}|jddddjddd	}tjtjgtjtjgd}||}t	
|| |tjtjtjgd}|tjtjtjgd}t	
|| d
d }dd }d}	tjt|	d& tjtjtjdd}|| W 5 Q R X tjg||gd}|| d S )Nr4   r5   r   r,   r   r   )keysrh   r   r   rf   c                 S   s
   t | S r#   r+   r,   r   r   r   r   r     s    z4test_more_flexible_frame_multi_function.<locals>.fooc                 S   s   t j| ddS )Nr   )Zddof)r+   r   r   r   r   r   r     s    z4test_more_flexible_frame_multi_function.<locals>.barnested renamer is not supportedr6   r   r   )r   r   r+   r,   r   r	   Z	swaplevelZ
sort_indexrB   r-   r.   r;   r<   r   )
r    r0   ZexmeanZexstdr2   dr1   r   r   r>   r   r   r   'test_more_flexible_frame_multi_function  s&    

r   c              	   C   s   |  d}dddddid}d}tjt|d || W 5 Q R X ddddd}tjt|d || W 5 Q R X ddddd}tjt|d || W 5 Q R X d S )	Nr4   r,   r   r   r   r   r   r6   )r   r;   r<   r   rB   )r    r0   r   r>   r   r   r    test_multi_function_flexible_mix  s    
r   c                  C   s   t ddddgddddgd d ddgd} | d}tddgdd}|d d	d
 }tddg|dd}t|| |d dd
 }tddg|dd}t|| d S )Nr   r   r   r   r   r   r   r   r   r   c                 S   s   | dk  S r   allr   r   r   r   r&     r'   z1test_groupby_agg_coercing_bools.<locals>.<lambda>FTr   r   c                 S   s   |    S r#   )Zisnullr   r   r   r   r   r&     r'   )r   r   r   rB   r   r-   rC   )ZdatZgpr:   r1   r2   r   r   r   test_groupby_agg_coercing_bools  s    (
r   opc                 C   s   |   S r#   r@   r   r   r   r   r&     r'   c                 C   s   |   S r#   )cumsumr   r   r   r   r&     r'   c                 C   s
   |  dS Nr   	transformr   r   r   r   r&     r'   c                 C   s
   |  dS Nr   r   r   r   r   r   r&     r'   c                 C   s
   |  dS r   r   r   r   r   r   r&     r'   c                 C   s
   |  dS r   r   r   r   r   r   r&     r'   c                 C   sd   t ddgddgd}|dd }| |dd j}t|sDt| |dj}t|s`td S )Nr   FTr   r   r   r   )r   	set_indexr   rp   r   r   )r   r    sr1   r   r   r   test_bool_agg_dtype  s    r   zkeys, agg_indexr   r   r   r   rZ   input_dtypeboolZint32Zfloat32result_dtypemethodrs   rB   r   c           
         s   t dgdgdgd}|d ||d< t|| dg |}| fdd}|dkrbtd	dn|}t d|d jd	 gi|d
 }	|dkrd	g|	j_t	
||	 d S )Nr   r   Tr   r   c                    s   |   jd S r   r   ilocr   r   r   r   r&     r'   z2test_callable_result_dtype_frame.<locals>.<lambda>r   r   r9   rs   )r   r   getattrr   r   
RangeIndexr   re   r[   r-   r.   )
r   	agg_indexr   r   r   r    r   r1   r   r2   r   r   r    test_callable_result_dtype_frame  s    
r   inputT      ?rp   c           
         s   t dgdg|gd}t|| d |}| fdd}|dkrNtddn|}t|d jd g|dd	 }	t	||	 d S )
Nr   r   r   r   c                    s   |   jd S r   r   r   ro   r   r   r&   %  r'   z3test_callable_result_dtype_series.<locals>.<lambda>r   r   r   )
r   r   r   r   r   r   r   r   r-   rC   )
r   r   r  rp   r   r    r   r1   r   r2   r   ro   r   !test_callable_result_dtype_series  s     r  c                  C   sf   t ddddgddddgd} | dddd	d
dg}|jjd }tddd	d
dg}t|| d S )Nr   r   r   r   r4   rA   r4   r   r   r,   r   r   )r   r   r   re   levelsr   r-   r   )r    resr1   r2   r   r   r   #test_order_aggregate_multiple_funcs+  s
    r  c              	   C   s   t ddddddgddtjddtjgd	| d
}|d }t ddddgtjgd dgd dgd gtdgddddggtddddg| dd| d}t	|| d S )Nr   r   r   r      rM   r   r   r   ro   r   r   r   r   r   r   rp   rq   )re   r:   rp   )
r   r   NAr   r   r   r   r   r-   r.   )Zany_numeric_ea_dtyper    r1   r2   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kr`|jtj|_tj||dd	 d S )
Nl   &tLWHd~ r   r   r   r   r   r   )r,   r  T)Zcheck_exact)	r   r   r   r   r   r+   r   r-   r.   )rp   r  r    r2   r1   r   r   r   test_uint64_type_handlingG  s    r  c               	   C   sT   d} t ddddgddddgd}tjt| d |d	d
d
g W 5 Q R X d S )NzFunction namesr   r   r   r   r   r  r6   r4   r   )r   r;   r<   r   r   r   )r>   r    r   r   r   test_func_duplicates_raisesU  s    r  r:   abcZ2020r   )r   r   )r   r   )r   r   )r   r   c                 C   s`   t dddgdddgd| d}|ddtji}t ddgddgdd}t|| d S )Nr   r   r   )groupr   r9   r  r   )r   r   r   r   Znuniquer   r-   r.   )r:   r    r1   r2   r   r   r   $test_agg_index_has_complex_internals]  s    r  c                  C   sr   t dddddgdddddgdddddgd} | d }t ddgddgd	tddgdd
d}t|| d S )Nr   r   ZoneZtwoZthreesix)key1key2key3r  )r  r  r   r9   )r   r   r   r   r-   r.   r    r1   r2   r   r   r   test_agg_split_blockn  s    r  c               
   C   s   t tjdddddddgdd	d
dgddddgtjddddd	d
dgdt} | ddddg }t tdgdgdgdgtdgdgd}t	|| d S )N2000r   )r   r   r   r   r   r   r   r   e)r4   rA   r5   r   EFr   )
r   r   r   r   r   r   r   	Timestampr-   r.   r  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 ddddg}|ddddg}|jddd}tdd	gddgdd
dgddgd}t|| |jddd}|dd
g }t|| d S )Nr   r   r   r   r   r   r   r   rH   r   r   r   )r   r   r   r   r   r   r-   r.   )selfr    grr1   r2   r   r   r   test_series_named_agg  s      z0TestNamedAggregationSeries.test_series_named_aggc              	   C   sX   t ddgddg}tjtdd |  W 5 Q R X |g }t }t|| d S )Nr   r   r   Must provider6   )	r   r   r;   r<   r   r   r   r-   r.   r$  r%  r1   r2   r   r   r   test_no_args_raises  s    
z.TestNamedAggregationSeries.test_no_args_raisesc                 C   sN   t dddgdddg}|jddd}tddgddgd}t|| d S )Nr   r   r   r   r   r   r#  )r$  r%  r0   r2   r   r   r   *test_series_named_agg_duplicates_no_raises  s    zETestNamedAggregationSeries.test_series_named_agg_duplicates_no_raisesc                 C   sV   t dddgdddg}|jdd dd d}tddgddgd}t|| d S )	Nr   r   r   r   c                 S   s   dS r   r   r   r   r   r   r&     r'   z9TestNamedAggregationSeries.test_mangled.<locals>.<lambda>c                 S   s   dS Nr   r   r   r   r   r   r&     r'   r   r#  r(  r   r   r   test_mangled  s    z'TestNamedAggregationSeries.test_mangledinpanythingr   columnaggfunc)r.  r   c              	   C   sZ   t ddddddddg}dt|j }tjt|d ||jj|d W 5 Q R X d S )	Nr   r   r   r   rG   zfunc is expected but received r6   r   )	r   type__name__r;   r<   r   r   r   r   )r$  r-  r   r>   r   r   r   test_named_agg_nametuple  s    
z3TestNamedAggregationSeries.test_named_agg_nametupleN)r4  
__module____qualname__r&  r)  r*  r,  r;   markparametrizer   NamedAggr5  r   r   r   r   r"    s   
r"  c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestNamedAggregationDataFramec              	   C   s
  t ddddgddddgddd	d
gd}|djddd}t ddgdd
gdtddgddddgd}t|| tjtj	dd}|djddt
fdtjfddd|fd}t dd	gddgddgddgdd
gddgdtddgdddddddd gd}t|| d S )!Nr   r   r   r   r   r   rG   r   rH   r\   r  r4   rA   r  r4   r   rA   r   )a_maxb_maxr   r?  r@  r   b   r   rA   r   r4   )b_mina_mina_meanr?  r@  a_98g      ?g      @g\(\?gףp=
@rC  rD  rE  rF  )r   r   r   r   r-   r.   	functoolsr   r+   
percentiler   r,   )r$  r    r1   r2   Zp98r   r   r   test_agg_relabel  s>    "
z.TestNamedAggregationDataFrame.test_agg_relabelc                 C   sn   t ddddgddddgddd	d
gd}|djf ddi}t dddgitddgddd}t|| d S )Nr   r   r   r   r   r   rG   r   rH   r\   r<  r  zmy colr=  r   r9   r   r   r   r   r-   r.   r$  r    r1   r2   r   r   r   test_agg_relabel_non_identifier  s    " z=TestNamedAggregationDataFrame.test_agg_relabel_non_identifierc                 C   s  t ddddgddddgd}|djddd	}t ddgddgd	tddgdd
d}t|| tjtj	dd}tjtj	dd}d|_
d|_
t dddddgdddddgd}|djd|fd|fd}t ddgddgdtddgdd
d}t|| d S )Nr   r   r   r   r   r  r4   rB  r   r   r9   2   r   F   quant50quant70r   r   rG   )col1col2rQ  rR  )Zquantile_50Zquantile_70      ?      @g333333?g@)r   r   r   r   r-   r.   rG  r   r+   rH  r4  )r$  r    r0   r2   rO  rP  testr   r   r   test_duplicate_no_raises  s$    &"
 z6TestNamedAggregationDataFrame.test_duplicate_no_raisesc                 C   s   t ddddgddddgdtddgd	d
ggd}|jddjdddd}t ddgddgddgdddgd}t|| d S )Nr   r   r   r   r   r  r4   rA   r   r   r9   r   r=  )r4   r   )rA   r,   )ZaaZbbccrS  g      @)r   r   r   r   r   r-   r.   rK  r   r   r   test_agg_relabel_with_level  s       z9TestNamedAggregationDataFrame.test_agg_relabel_with_levelc              	   C   s   t dddgdddgd}|d}d}tjt|d |jdd	 W 5 Q R X tjt|d |  W 5 Q R X tjt|d |jd
dd W 5 Q R X d S )Nr   r   r   r   r  r4   r'  r6   )r   r>  )r   r   r   r   )r   r   r;   r<   r   r   )r$  r    r0   r7   r   r   r   test_agg_relabel_other_raises"  s    
z;TestNamedAggregationDataFrame.test_agg_relabel_other_raisesc              	   C   sP   t ddgddgd}td}tjt|d |djdd	 W 5 Q R X d S )
Nr   r   r   r  zColumn(s) ['C'] do not existr6   r4   )r5   r   )r   )r   reescaper;   r<   KeyErrorr   r   )r$  r    r7   r   r   r   test_missing_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   r  r4   rA   r   countr/  r   r   )rA   r   )rA   r^  r   r   r   r   r:  r-   r.   rK  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   )r4   rA   r5   r4   rA   c                 S   s   dS r   r   r   r   r   r   r&   ?  r'   z<TestNamedAggregationDataFrame.test_mangled.<locals>.<lambda>r5   c                 S   s   dS r+  r   r   r   r   r   r&   ?  r'   r_  r   r9   rJ  rK  r   r   r   r,  =  s    $&z*TestNamedAggregationDataFrame.test_mangledN)r4  r6  r7  rI  rL  rV  rX  rY  r]  ra  r,  r   r   r   r   r;    s   $	r;  zCagg_col1, agg_col2, agg_col3, agg_result1, agg_result2, agg_result3r   r4   r   rc  )r   rA   r,   g      @      @c                 C   s   t | S r#   )r   r   r   r   r   r&   P  r'   c                 C   s   dS r+  r   r   r   r   r   r&   Q  r'   rd  c                 C   s   dS r+  r   r   r   r   r   r&   Z  r'   c           
      C   s   t ddddgddddgddd	d
gd}tdddg|_tddgdd}|djdd}t dddgi|d}	t||	 |dj| ||d}t |||d|d}	t||	 d S )Nr   r   r   r   r   r   rG   r   rH   r\   r<  r   r  rc  rd  r   rb  )r?  r?  r9   )Zcol_1Zcol_2Zcol_3)	r   r   ra   re   r   r   r   r-   r.   )
Zagg_col1Zagg_col2Zagg_col3Zagg_result1Zagg_result2Zagg_result3r    idxr1   r2   r   r   r   "test_agg_relabel_multiindex_columnD  s$    !"
  
 rh  c               	   C   sj   t ddddgddddgddd	d
gd} tdddg| _tjtdd | djdd W 5 Q R X d S )Nr   r   r   r   r   r   rG   r   rH   r\   r<  rf  rc  rd  zdo not existr6   ))Yr   r   r2  )	r   r   ra   re   r;   r<   r\  r   r   r   r   r   r   ,test_agg_relabel_multiindex_raises_not_existx  s    "rj  c                  C   s   t ddddgddddgddd	d
gd} tdddg| _| djddd}tddgdd}t ddgddgd|d}t|| d S )Nr   r   r   r   r   r   rG   r   rH   r\   r<  rf  rc  rd  )rc  r   r   r   r9   )	r   r   ra   re   r   r   r   r-   r.   )r    r1   rg  r2   r   r   r   &test_agg_relabel_multiindex_duplicates  s    "
 rk  kwargsr   r_  c                 C   sn   t dddgdddgdddgd}|d| }t ddgtddgdddtd	d
ggd}t|| d S )Nr   r   r   r   r   r   r   r	  r   r   r   )r   r   r   r   r   ra   r-   r.   )rl  r    r1   r2   r   r   r    test_groupby_aggregate_empty_key  s    "rm  c                  C   sb   t dddgdddgdddgd} | ddg i}t tdgg gg g gdd	}t|| d S )
Nr   r   r   r   r   r   r   )r  codesr   )r   r   r   r   r-   r.   r  r   r   r   -test_groupby_aggregate_empty_key_empty_return  s    "ro  c                  C   sb   t dddgd} | jddgddjdtfd}t dgtg g gg g gddgd	d
}t|| d S )Nr   r   r   r   Frn   )r   r   rZ   r   )r   r   r   ry   r   r-   r.   r  r   r   r   2test_groupby_aggregate_empty_with_multiindex_frame  s     rp  c                  C   st   t ddddddgdddddd	gd
} | jddd}|jtjdddd}t dddgddd	gd}t|| d S )Nr   r   zr  皙?rj         @@      ?)r   valr   FZas_indexrv  r   r/  min_val)r   ry  r`  r    r0   r1   r2   r   r   r   9test_grouby_agg_loses_results_with_as_index_false_relabel  s     r{  c               	   C   s   t ddddddgddddddgdddd	d
dgd} | jddgdd}|jtjdddd}t dddgdddgdddgd}t|| d S )Nr   r   r   r   r   r  rr  rj   rs  rt  ru  )r   r  rv  r   r  Frw  rv  r   r/  rx  )r   r  ry  r`  rz  r   r   r   Dtest_grouby_agg_loses_results_with_as_index_false_relabel_multiindex  s    r|  r   c                 C   s   |   S r#   )r,   r   r   r   r   r&     r'   c                 C   s
   t | S r#   r   r}  r   r   r   r&     r'   c                 C   s
   t | S r#   )r+   Znanmeanr}  r   r   r   r&     r'   c                 C   s   dddgdddgg}t |tjdddgdddggddgd	d
}|tddg| }dddddddddd}t |}|j|_t	|| d S )Nr   r   r   rG   rH   r   ZSiskoZJanewayrZ   r   r   r  g      @rk   rT  g      @rj   ))r   r   )r   r   )r   r   )
r   r   Zfrom_arraysr   r+   r   r   re   r-   r.   )r   rd   r    r1   expected_dictr2   r   r   r   test_multiindex_custom_func  s      r  c                 C   s   t j| ddS Ng?r   r+   rH  r}  r   r   r   myfunc  s    r  c                 C   s   t j| ddS r  r  r}  r   r   r   r&     r'   c                 C   sz   t ddddgddddgddd	d
gd}|djdd| fd}t ddgddggddgtddgddd}t|| d S )Ncatdog333333"@      @      #@      A@皙@re  #@     h@kindheightweightr  )r  r,   r  )mean_heightperc90g"@g0'5"@g      4@g5^I@r  r  r   r   rJ  )r   Zanimalsr1   r2   r   r   r   test_lambda_named_agg  s     



 r  c                  C   s   t tdgd ddtdtdd} dddg| d	< | d	d
d }dgdgdggddgddgddggg}t |tddgdd	dtdddgddd}t	|| d S )Nr   r]   r   ZXYZr  rd   re   r:   zgroup 1r   groupingc                 S   s   |   S r#   )tolistr   r   r   r   r&     r'   z,test_aggregate_mixed_types.<locals>.<lambda>r   r	  Xri  Zro   r   )
r   r+   r   r   ry   r   rB   r   r-   r.   )r    r1   r   r2   r   r   r   test_aggregate_mixed_types  s      &r  zNot implemented;see GH 31256reasonc                  C   sj   dd } t dtdddgi}|dddg| }t dtjdtjgddiddgd	}t|| d S )
Nc                 S   s   t | dkrdS tjS d S )Nr   r   )r   r   r
  r   r   r   r   r1  !  s    z5test_aggregate_udf_na_extension_type.<locals>.aggfuncr4   r   r   r   r   ro   r9   )r   r   r   r   r   r
  r-   r.   )r1  r    r1   r2   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   st   t ddddgddddgd}|ddd	d
 dd
 gi}t ddgddgdtddgddd}t|| d S )Nr   r   r   r   r   r  r4   rA   c                 S   s   dS r   r   r   r   r   r   r&   0  r'   z/TestLambdaMangling.test_basic.<locals>.<lambda>c                 S   s   dS r+  r   r   r   r   r   r&   0  r'   ))rA   
<lambda_0>)rA   
<lambda_1>r   r9   rJ  rK  r   r   r   
test_basic.  s     zTestLambdaMangling.test_basicc                 C   sZ   t ddddgddddg}|dd dd g}tddgddgd	}t|| d S )
Nr   r   r   r   r   c                 S   s   dS r   r   r   r   r   r   r&   :  r'   z?TestLambdaMangling.test_mangle_series_groupby.<locals>.<lambda>c                 S   s   dS r+  r   r   r   r   r   r&   :  r'   r  r  r#  r(  r   r   r   test_mangle_series_groupby8  s    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#   r@   r   r   r   r   r   r   r&   A  r'   z5TestLambdaMangling.test_with_kwargs.<locals>.<lambda>r   c                 S   s   |   ||  S r#   r@   r  r   r   r   r&   B  r'   r   r   r   r  r   )r         )r   )r   r#  )r$  f1f2r1   r2   r   r   r   test_with_kwargs>  s    

"&z#TestLambdaMangling.test_with_kwargsc                 C   s   t ddddgddddgddd	d
gd}dddg}t ddgddgd	d
gdtddgdd|d}|jddjtjddd dtjdddtjdddd}t|| |jddjddd fddd}t|| d S )Nr  r  r  r  r  r  r  re  r  r  r  height_sqr_min
height_max
weight_maxp=
׳T@      B@)r  r  r  r  r   r   Zbyr  c                 S   s   t | d S r8   r+   r   r   r   r   r   r&   c  r'   z=TestLambdaMangling.test_agg_with_one_lambda.<locals>.<lambda>r/  r   r  c                 S   s   t | d S r8   r  r   r   r   r   r&   l  r'   r  r   r  r   )r   r   r   r   r   r:  r-   r.   r$  r    re   r2   Zresult1Zresult2r   r   r   test_agg_with_one_lambdaK  s<    



 
z+TestLambdaMangling.test_agg_with_one_lambdac              	   C   s  t ddddgddddgddd	d
gd}dddddg}t ddgddgd	d
gddgddgdtddgdd|d}|jddjddd fddddd fddd fd}t|| |jddjtjdd d d!tjdd"d!tjdd"d!tjdd#d d!tjdd$d d!d}t|| d S )%Nr  r  r  r  r  r  r  re  r  r  r  r  r  r  height_max_2
weight_minr  r  )r  r  r  r  r  r  r   r   r  r  c                 S   s   t | d S r8   r  r   r   r   r   r&     r'   z=TestLambdaMangling.test_agg_multiple_lambda.<locals>.<lambda>r  r  c                 S   s
   t | S r#   r+   r   r   r   r   r   r&     r'   r  c                 S   s
   t | S r#   r  r   r   r   r   r&     r'   c                 S   s   t | d S r8   r  r   r   r   r   r&     r'   r/  r   c                 S   s
   t | S r#   r  r   r   r   r   r&     r'   c                 S   s
   t | S r#   r  r   r   r   r   r&     r'   )r   r   r   r   r-   r.   r   r:  r  r   r   r   test_agg_multiple_lambdar  sR    





 	z+TestLambdaMangling.test_agg_multiple_lambdaN)r4  r6  r7  r  r  r;   r8  xfailfilterwarningsr  r  r  r   r   r   r   r  -  s   

'r  c                  C   s^   t dddgdddgd} | dddd	 i}t ddgddgdd}t|| d S )
Nr   Wr  rj   r  r4   rA   c                 S   s   |  | jd S )N)getr:   r   r   r   r   r&     r'   z+test_groupby_get_by_index.<locals>.<lambda>)r   r   r   r   r-   r.   )r    r  r2   r   r   r   test_groupby_get_by_index  s    r  zgrp_col_dict, exp_data)nrcat_ordr  r  c              	   C   s   t ddddddddgtd	td
d}|ddd}|d j |d< |d| }tjddgddgdddd}t ||d}d|kr|d j	}|d ||d< t
|| d S )Nr   r   r   r   rG   r   rH   r\   aabbccddaaaabbbbr  r  r  categoryr  r  r  r  r   r   F
categoriesZorderedrq   rp   )rd   r:   )r   ry   r   r  
as_orderedr   r   r   CategoricalIndexrp   r-   r.   )grp_col_dictexp_datainput_df	result_df	cat_indexexpected_dfrp   r   r   r    test_groupby_single_agg_cat_cols  s*        
r  )r   r   r   )rG   r\   r   )r   r   r   )rG   r   r   r   )r   r   c              	   C   s   t ddddddddgtd	td
d}|ddd}|d j |d< |d| }tjddgddgdddd}g }| 	 D ]:\}}t
|tr|D ]}|||g qq|||g qtt|}	t ||	|d}
|
jD ].}t
|trd|kr|
| |d j|
|< qt||
 d S )Nr   r   r   r   rG   r   rH   r\   r  r  r  r  r  r  r  r   r   Fr  r  )r   ry   r   r  r  r   r   r   r  itemsr   appendr   ra   rz   re   rp   r-   r.   )r  r  r  r  r  Zmulti_index_listr   vr   Zmulti_indexr  colr   r   r   #test_groupby_combined_aggs_cat_cols  s8        

r  c                  C   s\   t ddddgddddgd} | d}|dg}|jd|_|d}t|| d S )Nr   r   r   r   r   r  )r   r   r   re   Z	droplevelr-   r.   )r    rb   r1   r2   r   r   r   test_nonagg_agg  s    

r  c                  C   sh   t ddgtdddddddtd	ddddddgd
} | dj }| dd }t|| d S )Nr  ri  i  r   r   r     i`= i  r  r4   rA   )r   datetimer   rA   r   r   r-   rC   r  r   r   r   test_aggregate_datetime_objects  s    	r  c                  C   s   t dddgdddgdddgd} | jd| _| dd	g}|jd
d }tjddgdd}tddg|dd}t	
|| d S )Nr   r   r   r   r   )c0c1pOr  r  c                 S   s   t | dkS r   r   r   r   r   r   r&   *  r'   z1test_groupby_index_object_dtype.<locals>.<lambda>)r   r   r  )r  r  rZ   FTr  r   )r   r:   r   r   r  r   r   ra   r   r-   rC   )r    r0   r  r   r2   r   r   r   test_groupby_index_object_dtype%  s    " r  c                  C   sT   dd } t dgtdgd}|dd | }t dggdgd}t|| d S )	Nc                 S   s   |    rd S t| S r#   )Zisnar   r+   r   r   r   r   r   r   7  s    z)test_timeseries_groupby_agg.<locals>.funcr  z2018-01-16 00:00:00+00:00r9   c                 S   s   dS 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  r2   r   r   r   test_timeseries_groupby_agg4  s
    r  c              	   C   s   | dk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 5 Q R X | dkrtj||d dd	 nt	|| t|j
|j
 d S )
N)ZcorrwithZnthZmadr   r   zThe 'mad' method is deprecatedr6   )r   ZngroupF)Zcheck_names)r   r   r+   r`   r-   r   r   r   rC   r.   Zdtypes)r   r   objZresult_reduced_seriesZresult_reduced_framer   r   r    test_groupby_aggregate_directoryC  s$       r  c                  C   sD   t dddgdd} t dgdd}| dddg }t|| d S )Nz1 dayz3 daysNaTztimedelta64[ns]ro   z2 daysr   )r   r   r,   r-   rC   )rd   r2   r1   r   r   r   test_group_mean_timedelta_nat[  s    r  zinput_data, expected_outputz2021-01-01T00:00r  z2021-01-01T02:00z2021-01-01T01:00z2021-01-01T00:00-0100z2021-01-01T02:00-0100z2021-01-01T01:00-0100c                 C   s<   t t| }t t|}|dddg }t|| d S r   )r
   r   r   r,   r-   rC   )Z
input_dataZexpected_outputrd   r2   r1   r   r   r   test_group_mean_datetime64_nate  s    r  zfunc, outputy       @      2@y      $@      6@y      D@     V@y      I@     [@c                 C   sN   t tdddddg}||jd | }t |}t	|| d S )Nr   r   r   r                  @)
r   r+   r   r   dotr   r:   r   r-   rC   )r   outputrd   r1   r2   r   r   r   test_groupby_complex{  s     r  c              	   C   sX   t tdddddg}d}tjt|d ||j	d 
|  W 5 Q R X d S )Nr   r   r   r   r  zNo matching signature foundr6   )r   r+   r   r   r  r;   r<   r   r   r:   r   )r   rd   r>   r   r   r   test_groupby_complex_raises  s     r  prodc              	   C   sX   t dddgdddgdddgd	}|jd
dd}tjtdd ||  W 5 Q R X d S )Nr   r   r   r   rG   r   rH   r\   r   r   r   z"axis other than 0 is not supportedr6   )r   r   r;   r<   NotImplementedErrorr   )r   r    r!   r   r   r   test_multi_axis_1_raises  s    "r  ztest, constantr4   rA   r5   rk   r  )Zmarksc                 C   s<   t | }|dtj}t |}|d}t|| d S r   )r   r   r   r   moder   r-   r.   )rU  ZconstantZdf1r1   r2   r   r   r   test_agg_of_mode_list  s
    
r  c               	   C   s   t dddgtddddgd} | d}d	}tjt|d
 |tj W 5 Q R X t	j
tdd
 |jtjdd W 5 Q R X d S )Nr   r   Zxyzr   r   rG   r   r   z$The operation <function mean.*failedr6   z"got an unexpected keyword argumentTri   )r   ry   r   r-   r   r   r   r+   r,   r;   r<   r   )r    r!   r>   r   r   r   test_numeric_only_warning_numpy  s     
r  )i__doc__r  rG  r   rZ  Znumpyr+   r;   Zpandas.errorsr   Zpandas.core.dtypes.commonr   Zpandasr   r   r   r   r   r	   r
   Zpandas._testingZ_testingr-   Zpandas.core.groupby.grouperr   r"   r3   r?   rF   rc   rm   rw   r{   r|   r8  r9  r   r   intrt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   Zuint64r  r  r  ry   Zinterval_rangeZperiod_rangera   r  r  r!  r"  r;  r   r:  r,   rh  rj  rk  rm  ro  rp  r{  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  paramr  r  r   r   r   r   <module>   s   
1 

 	
	!$
(  (

	
5v	

	



 


y

)

	 

 
**0
