U
    >vf                     @   s\  d Z ddlZddlZddlmZ ddlZddlZddlZddlm	Z	 ddl
mZ ddlZddlmZmZmZmZmZmZ ddlmZ ddlmZ dd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Z dd Z!ej"#ddd dd dd ggdd Z$d d! Z%d"d# Z&ej"#d$d%d&d'd(gd)i fd*d+gd, e'e(e(e(d-fd.d/gd, e'e(e(e(d-fd%d&d'd(gd0d1d)ifd*d+gd, d0e(e(e(d-fd.d/gd, d0d2d2d2d-fgd3d4 Z)ej"#d5d%d6d7gd8d9gd:d;ggd)d)d<fd*d=gd6 gd, d2fd.d6gd6 gd, d2d2d<fgd>d? Z*d@dA Z+dBdC Z,dDdE Z-dFdG Z.dHdI Z/dJdK Z0dLdM Z1dNdO Z2dPdQ Z3dRdS Z4ej"#dTdUd dVd dWd dXd dYd dZd gd[d\ Z5ej"#d]d^ged_gd^d`fd^daged_gd6ggdgdggd^dagdbfgej"#dcddded)dfd2gej"#dgddded)dfd2gej"#dhdidjdkgdldm Z6ej"#d]d^ged_gd^d`fd^daged_gd6ggdgdggd^dagdbfgej"#dndod_dpgej"#dqe7e'e(gej"#dhdidjdkgdrds Z8dtdu Z9dvdw Z:ej"#dqej;ej<gej"#dxdydzd{d|d}d~gdd Z=dd Z>ej"#de?e@deAdd,ejBdd,ddeCdddggdd ZDdd ZEdd ZFG dd dZGG dd dZHej"#dddejIfdd_d,gdd6gddgfddd fddd fdd_d,gd_d_gddgfeJdd|eJdejKeJddd d_d,gddgd_d_gfgdd ZLdd ZMdd ZNej"#ddd{gig d{gdgdd ZOdd ZPdd ZQdd ZRdd ZSej"#ddd dd dd gdd ZTdd ZUej"#ddd eUgdd ZVdd ZWej"jXdddd ZYG ddĄ dăZZddƄ Z[ej"#dd{d{dȜd_d&gd^dgdȜfdd{idd^dgifdd{idd_d&gifgdd̄ Z\ej"#dd{d|gd{dȜddgfd{d{d|gdȜddgfdd{d|giddgfgddԄ Z]ddք Z^dd؄ Z_ddڄ Z`dd܄ Zaddބ Zbdd Zcej"#ddddgdgfdddgdgfgdd Zdej"#dd}ddgfd%ddgfgdd Zeej"#dd{d|d.gdd Zfej"#dd{gd}d|gdad%idd~dgdd Zgej"#dd;dgd;dgd8dggd8d;gdddggdfd;dgd;dgddggd;dgddgdgdfd^d_gd^d_gdad6gdad,ggd^dagd_d6d,ggdfejhd^d_gd^d6gdad,gdad,ggd^dagd_d6gd,gdej"jXdgdd Zid d Zjdd ZkdS (  zN
test .agg behavior / note that .apply is tested generally in test_groupby.py
    N)partial)SpecificationError)is_integer_dtype)	DataFrameIndex
MultiIndexSeriesconcatto_datetime)Groupingc                  C   sB   t ddddgddddgd} | d	d
 }dd }|| d S )Nabc            )keyvaluer   r   c                 S   s   t | dkst|  S Nr   )lenAssertionErrorsumx r   Q/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/groupby/aggregate/test_aggregate.py
dummy_func"   s    z3test_groupby_agg_no_extra_calls.<locals>.dummy_func)r   groupbyagg)dfgbr   r   r   r   test_groupby_agg_no_extra_calls   s    r"   c                 C   s:   |  dd dd g}|tj}| }t|| d S )Nc                 S   s   | j S Nyearr   r   r   r   <lambda>*       z&test_agg_regression1.<locals>.<lambda>c                 S   s   | j S r#   monthr   r   r   r   r&   *   r'   r   r   npmeantmassert_frame_equal)tsframegroupedresultexpectedr   r   r   test_agg_regression1)   s    r3   c              	   C   sf   |  dd }d}tjt|d |dd  W 5 Q R X tjt|d |dd  W 5 Q R X d S )NACzMust produce aggregated valuematchc                 S   s   |   S r#   )Zdescriber   r   r   r   r&   5   r'   z#test_agg_must_agg.<locals>.<lambda>c                 S   s   | j d d S Nr   indexr   r   r   r   r&   7   r'   )r   pytestraises	Exceptionr   )r    r0   msgr   r   r   test_agg_must_agg0   s    r?   c                 C   sH   dd }| j | j| jg|}| ddg d }t|| d S )Nc                 S   s   |   S r#   r   r   r   r   r   r&   ;   r'   z(test_agg_ser_multi_key.<locals>.<lambda>r4   Br5   )r5   r   r4   rA   	aggregater   r-   assert_series_equal)r    fresultsr2   r   r   r   test_agg_ser_multi_key:   s    rF   c                  C   s  t dddtjddddgdddtjddd	d
gdtjddddddddgddgdd} t dddddddtjddddgd
ddddddtjd	dddgddddtjdddddtjd gd!d"dd#tjd$d#dddtjtjgd%}|ddg}|d&d'g  }t||  d S )(N      r   r   r   7   M   !   ,      )v1v2)r   _   )r   c   )r   rP   )r   rQ   )bigdamp)bluedry)redrV   )rV   wetby1by2namesr9      	   X   rQ   rV   rT   r   rR      rW   rU   rP   rS   )rN   rO   rX   rY   rN   rO   )	r   r+   nanr   from_tuplesr   r,   r-   r.   )r2   r    gr1   r   r   r   $test_groupby_aggregation_mixed_dtypeA   sN    
rc   c                  C   s   ddddgddt jdgddt jdgddt jdgg} t| tddddgd}|jddd	}|jdd
}tddddgddddgd}t|| d S )NTF)r4   r   )r4   r   )rA   r   )rA   r   )datacolumnsr   levelaxis)Znumeric_only       @r   r   r   )	r+   r`   r   r   ra   r   r   r-   r.   )lstr    r!   r1   r2   r   r   r   +test_groupby_aggregation_multi_level_columnr   s    
rl   c                 C   s   | j | tj dd}| jtjks$ttg tjtg tjdd}t	|
 | t	|tj
| tj	|tj
|dd |j |d tj dd}t|jttg dtjdd}t|
 | t|tj
| t|tj
| d S )	NFZ
group_keysdtypero   r:   )Zcheck_index_typer4   )namero   )re   ro   r:   )r   r+   r`   ro   float64r   r   r   r-   rC   r   r   applyr   re   floatr.   )tsr/   r0   expZexp_dfr   r   r   test_agg_apply_corner   s    rw   c                 C   s   t  }|dd }|jjd j}t| jt||jjd< |	t
j}| }t || t| jt||jjd< |	t
j}| }t || d S )Nc                 S   s   | j S r#   r$   r   r   r   r   r&      r'   z1test_agg_grouping_is_list_tuple.<locals>.<lambda>r   )r-   ZmakeTimeDataFramer   grouperZ	groupingsZgrouping_vectorr   r:   listr   r+   r,   r.   tuple)ru   r    r0   rx   r1   r2   r   r   r   test_agg_grouping_is_list_tuple   s    r{   c                 C   s2   |  ddg}|tj}| }t|| d S )Nr4   rA   r*   )Zmframer0   r1   r2   r   r   r   test_agg_python_multiindex   s    r|   groupbyfuncc                 C   s   |   S r#   )weekdayr   r   r   r   r&      r'   r&   c                 C   s   | j S r#   r(   r   r   r   r   r&      r'   c                 C   s   |  |}|d d}|d  }t|| |d}| }t|| |ddddd}t|d  |d  |d 	 |d	 
 d}t|| d S )
Nr4   stdvarr,   sem)r4   rA   r5   DrA   r5   r   )r   r   r   r-   rC   rB   r   r.   r   r,   r   )r/   r}   r0   r1   r2   r   r   r   test_aggregate_str_func   s     





r   c              
   C   st   t dddddddgttjddddddgddd}|d }t ddd	gitddgdd
dd}t|| d S )Nr   r   ZFloat64rn   r   r   r   r   g(y?r   rq   r:   ro   )	r   r   pdNAr   r   r   r-   r.   )any_numeric_ea_dtyper    r1   r2   r   r   r   test_std_masked_dtype   s    
  r   c              	   C   sZ   | j dd}|dkrt}d}nt}d| d}tj||d |j|dd	 W 5 Q R X d S )
Nr   rg   )ZidxmaxZidxminz3reduction operation '.*' not allowed for this dtypez
Operation z does not support axis=1r6   r   rh   )r   	TypeError
ValueErrorr;   r<   r   )r    reduction_funcr!   errorr>   r   r   r   %test_agg_str_with_kwarg_axis_1_raises   s    r   z(func, expected, dtype, result_dtype_dictr   rG   rH   r]   int64r   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}|jddd| }t |gd d	d
dgd|}t|| d S )Nr   r   r   r   rG      r   r   r   r   r   re   ))r   r   )r   r   rf   )r   r   from_productastyper   r   r-   r.   )funcr2   ro   result_dtype_dictr    r1   r   r   r   (test_multiindex_groupby_mixed_cols_axis1   s    r   z&func, expected_data, result_dtype_dictr   r   
   r_         )r   r   g;f?c                 C   s   t tdddtdddgddtdd	dd	gd
dddddi}|jd
dd| }t |tdddgddtdd	gd
dd|}t	|| d S )Nr_   r   r   r   r   yr   r   r   r   r   )r:   re   ro   r   r   )rd   r:   re   )
r   r+   arangereshaper   r   r   r   r-   r.   )r   expected_datar   r    r1   r2   r   r   r   test_groupby_mixed_cols_axis1  s"    r   c           	      C   s   |  d}dd }||}| jdk }| jdk }t|j}tt|g| t	ddd}t
|d| tt|g| t	ddd}t
|d| dd	 }t  | j|}t|t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_12  s    z-test_aggregate_item_by_item.<locals>.aggfun_1r   )r   r   r4   r   r   re   r   r+   arrayry   r-   rC   xsZassert_almost_equalr   
isinstancer   )	r    r0   Zaggfun_0r1   ZfoosumZbarsumKrv   r   r   r   r   test_aggregate_item_by_item"  s    


r   c              	   C   s   |  ddg}dd }tjtdd || W 5 Q R X |dd | D  |}| jd d | jd	kf }| ddg|}t|| d S )
Nr4   rA   c                 S   s   | j tkrtd|  S )NTest error message)ro   objectr   r   r   r   r   r   r   =  s    
ztest_wrap_agg_out.<locals>.funcr   r6   c                 S   s   g | ]}|d kr|qS )r5   r   ).0r   r   r   r   
<listcomp>D  s      z%test_wrap_agg_out.<locals>.<listcomp>r5   )	r   r;   r<   r   rB   locre   r-   r.   )Zthree_groupr0   r   r1   Zexp_groupedr2   r   r   r   test_wrap_agg_out:  s    r   c                 C   sP   dt jfdt jfdt jfg}| dd |}tdddg}t|j	| d S )Nr,   maxminr4   r5   )
r+   r,   r   r   r   r   r   r-   assert_index_equalre   )r    funcsr1   Zexp_colsr   r   r   *test_agg_multiple_functions_maintain_orderJ  s    r   c                     s   t tjddtjdddddddgd	  d
dttj	ddttj	ddgi} tjdd
dd}t
ddg}t fdddD j}t |||d}t| | d S )N  r   1/1/2012S)freqperiodsr4   rA   r5   r:   re   3TH.?q镲q?r   )r4   quantilec                    s"   g | ]}  d jj|djqS r   r   resampler4   r   valuesr   r   r    r   r   r   `  s     z9test_agg_multiple_functions_same_name.<locals>.<listcomp>r   r   re   r:   )r   r+   randomrandnr   
date_ranger   r   r   r   r   ra   r   Tr-   r.   )r1   expected_indexexpected_columnsexpected_valuesr2   r   r   r   %test_agg_multiple_functions_same_nameS  s&    
  r   c               	      s   t tjddtjdddddtddd	gd
dd  dddt	tj
ddt	tj
ddgi} tjddddd}tjddddddgd
d d gd}t fdddD j}t dj |g}t |||d}t| | d S )Nr   r   r   r   Zdti)r   r   rq   r4   rA   r5   alphar   r   r   ohlcr   r   r   r   )r4   r   open)r4   r   high)r4   r   low)r4   r   close)r4   r   r4   rZ   c                    s"   g | ]}  d jj|djqS r   r   r   r   r   r   r     s     zKtest_agg_multiple_functions_same_name_with_ohlc_present.<locals>.<listcomp>r   r   )r   r+   r   r   r   r   r   r   r   r   r   r   ra   r   r   Zhstackr4   r   r-   r.   )r1   r   r   Znon_ohlc_expected_valuesr   r2   r   r   r   7test_agg_multiple_functions_same_name_with_ohlc_presenth  s:    
   r   c                 C   s   | j ddgd} ddg}ddg}| dd |}| dd |}t|| | d|}| d|}t|| d S )	NrA   r5   r   )r   r,   r   )r   r   r4   r   )Zdropr   r   r-   r.   )r    r   Zex_funcsr1   r2   r   r   r   -test_multiple_functions_tuples_and_non_tuples  s    r   c           
   	   C   s@  |  d}|tjtjd}|tjtjd}t||gddgdd}|jddddjddd	}tjtjgtjtjgd}||}t	
|| |tjtjtjgd}|tjtjtjgd}t	
|| d
d }dd }d}	tjt|	d& tjtjtjdd}|| W 5 Q R X tjg||gd}|| d S )Nr4   r5   r   r,   r   r   )keysrh   r   r   rf   c                 S   s
   t | S r#   r+   r,   r   r   r   r   	numpymean  s    z:test_more_flexible_frame_multi_function.<locals>.numpymeanc                 S   s   t j| ddS )Nr   )Zddof)r+   r   r   r   r   r   numpystd  s    z9test_more_flexible_frame_multi_function.<locals>.numpystdnested renamer is not supportedr6   r   r   )r   r   r+   r,   r   r	   Z	swaplevelZ
sort_indexrB   r-   r.   r;   r<   r   )
r    r0   ZexmeanZexstdr2   dr1   r   r   r>   r   r   r   'test_more_flexible_frame_multi_function  s&    

r   c              	   C   s   |  d}dddddid}d}tjt|d || W 5 Q R X ddddd}tjt|d || W 5 Q R X ddddd}tjt|d || W 5 Q R X d S )	Nr4   r,   r   r   r   r   r   r6   )r   r;   r<   r   rB   )r    r0   r   r>   r   r   r    test_multi_function_flexible_mix  s    
r   c                  C   s   t ddddgddddgd d ddgd} | d}tddgdd}|d d	d
 }tddg|dd}t|| |d dd
 }tddg|dd}t|| d S )Nr   r   r   r   r   r   r   r   r   r   c                 S   s   | dk  S r   allr   r   r   r   r&     r'   z1test_groupby_agg_coercing_bools.<locals>.<lambda>FTr   r   c                 S   s   |    S r#   )Zisnullr   r   r   r   r   r&     r'   )r   r   r   rB   r   r-   rC   )datZgpr:   r1   r2   r   r   r   test_groupby_agg_coercing_bools  s    (
r   c                  C   sn   t dddddgdddddgd} | ddg ddi}t dddgiddgd	jdd
d}t|| d S )Nr4   rA   r   r   r4   rA   r   r   r   r9   r   r   )r   r   r   Zrename_axisr-   r.   )r   r1   r2   r   r   r   "test_groupby_agg_dict_with_getitem  s    ""r   opc                 C   s   |   S r#   r@   r   r   r   r   r&     r'   c                 C   s   |   S r#   )cumsumr   r   r   r   r&     r'   c                 C   s
   |  dS Nr   	transformr   r   r   r   r&     r'   c                 C   s
   |  dS Nr   r   r   r   r   r   r&     r'   c                 C   s
   |  dS r   r   r   r   r   r   r&     r'   c                 C   s
   |  dS r   r   r   r   r   r   r&     r'   c                 C   sd   t ddgddgd}|dd }| |dd j}t|sDt| |dj}t|s`td S )Nr   FTr   r   r   )r   	set_indexr   ro   r   r   )r   r    sr1   r   r   r   test_bool_agg_dtype  s    r   zkeys, agg_indexr   r   r   r   rZ   input_dtypeboolZint32Zfloat32result_dtypemethodrs   rB   r   c           
         s   t dgdgdgd}|d ||d< t|| dg |}| fdd}|dkrbtd	dn|}t d|d jd	 gi|d
 }	|dk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      ?ro   c           
         s   t dgdg|gd}t|| d |}| fdd}|dkrNtddn|}t|d jd g|dd	 }	t	||	 d S )
Nr   r   r   r   c                    s   |   jd S r   r   r   rn   r   r   r&   5  r'   z3test_callable_result_dtype_series.<locals>.<lambda>r   r   r   )
r   r  r   r   r  r   r  r   r-   rC   )
r   r  r  ro   r   r    r   r1   r   r2   r   rn   r   !test_callable_result_dtype_series'  s     r	  c                  C   sf   t ddddgddddgd} | dddd	d
dg}|jjd }tddd	d
dg}t|| d S )Nr   r   r   r   r   r4   r   r   r,   r   r   )r   r   r   re   levelsr   r-   r   )r    resr1   r2   r   r   r   #test_order_aggregate_multiple_funcs;  s
    r  c              	   C   s   t ddddddgddtjddtjgd	| d
}|d}| }t ddddgtjgd dgd dgd gtdgddddggtddddg| dd| d}t	|| |jddd}| }|
 }t	|| d S )Nr   r   r   r      rM   r   r   r   rn   r   r   r   r   r   r   ro   rq   )re   r:   ro   FZas_index)r   r   r   r   r   r   r   r   r-   r.   Zreset_index)r   r    r!   r1   r2   Zgb2result2Z	expected2r   r   r   test_ohlc_ea_dtypesG  s"    $
&r  howfirstlastr   r   r,   medianc                 C   st   t dddgd}|dd|i}|j| |_|dd|i}|dkr`|jtj|_tj||dd	 d S )
Nl   &tLWHd~ r   r   r   r   r   r   )r,   r  T)Zcheck_exact)	r   r   r   r   r   r+   r   r-   r.   )ro   r  r    r2   r1   r   r   r   test_uint64_type_handling]  s    r  c               	   C   sT   d} t ddddgddddgd}tjt| d |d	d
d
g W 5 Q R X d S )NzFunction namesr   r   r   r   r   r   r6   r4   r   )r   r;   r<   r   r   r   )r>   r    r   r   r   test_func_duplicates_raisesk  s    r  r:   abcZ2020r   )r   r   )r   r   )r   r   )r   r   c                 C   s`   t dddgdddgd| d}|ddtji}t ddgddgdd}t|| d S )Nr   r   r   )groupr   r9   r  r   )r   r   r   r   Znuniquer   r-   r.   )r:   r    r1   r2   r   r   r   $test_agg_index_has_complex_internalss  s    r  c                  C   sr   t dddddgdddddgdddddgd} | d }t ddgddgd	tddgdd
d}t|| d S )Nr   r   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_block  s    r!  c               
   C   s   t tjdddddddgdd	d
dgddddgtjddddd	d
dgdt} | ddddg }t tdgdgdgdgtdgdgdt	dgtd}t
|| d S )N2000r   )r   r   r   r   r   r   r   r   e)r4   rA   r5   r   EFr   r   )r   r   r   r   r   r   r   	Timestampr+   r   r-   r.   r   r   r   r   #test_agg_split_object_part_datetime  s0    



	



r'  c                   @   sV   e Zd Zdd Zdd Zdd Zdd Zej	d	e
jd
dddd
dggdd ZdS )TestNamedAggregationSeriesc                 C   s   t ddddg}|ddddg}|jddd}tdd	gddgdd
dgtddgd}t|| |jddd}|dd
g }t|| d S )Nr   r   r   r   r   r   r   r   rH   r   r   r   )r   r   r   r   r   r   r+   r   r-   r.   )selfr    grr1   r2   r   r   r   test_series_named_agg  s      z0TestNamedAggregationSeries.test_series_named_aggc              	   C   s\   t ddgddg}tjtdd |  W 5 Q R X |g }tg d}t|| d S )Nr   r   r   Must provider6   r   )	r   r   r;   r<   r   r   r   r-   r.   r*  r+  r1   r2   r   r   r   test_no_args_raises  s    

z.TestNamedAggregationSeries.test_no_args_raisesc                 C   s\   t dddgdddg}|jddd}tddgddgdtddgd}t|| d S )Nr   r   r   r   r   r   r9   r)  )r*  r+  r0   r2   r   r   r   *test_series_named_agg_duplicates_no_raises  s    $zETestNamedAggregationSeries.test_series_named_agg_duplicates_no_raisesc                 C   sd   t dddgdddg}|jdd dd d}tddgddgdtddgd	}t|| d S )
Nr   r   r   r   c                 S   s   dS r   r   r   r   r   r   r&     r'   z9TestNamedAggregationSeries.test_mangled.<locals>.<lambda>c                 S   s   dS Nr   r   r   r   r   r   r&     r'   r   r9   r)  r.  r   r   r   test_mangled  s    $z'TestNamedAggregationSeries.test_mangledinpanythingr   columnaggfunc)r4  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*  r3  r   r>   r   r   r   test_named_agg_nametuple  s    
z3TestNamedAggregationSeries.test_named_agg_nametupleN)r:  
__module____qualname__r,  r/  r0  r2  r;   markparametrizer   NamedAggr;  r   r   r   r   r(    s   
r(  c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestNamedAggregationDataFramec              	   C   s
  t ddddgddddgddd	d
gd}|djddd}t ddgdd
gdtddgddddgd}t|| tjtj	dd}|djddt
fdtjfddd|fd}t dd	gddgddgddgdd
gddgdtddgdddddddd gd}t|| d S )!Nr   r   r   r   r   r   rG   r   rH   r\   r  r4   rA   r  r4   r   rA   r   )a_maxb_maxr   rE  rF  r   b   r   rA   r   r4   )b_mina_mina_meanrE  rF  a_98g      ?g      @g\(\?gףp=
@rI  rJ  rK  rL  )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\   rB  r  zmy colrC  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   rH  r   r   r9   2   r   F   quant50quant70r   r   rG   )col1col2rW  rX  )Zquantile_50Zquantile_70      ?      @g333333?g@)r   r   r   r   r-   r.   rM  r   r+   rN  r:  )r*  r    r0   r2   rU  rV  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   rC  )r4   r   )rA   r,   )ZaaZbbccrY  g      @)r   r   r   r   r   r-   r.   rQ  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   rD  )r   r   r   r   )r   r   r;   r<   r   r   )r*  r    r0   r7   r   r   r   test_agg_relabel_other_raises:  s    
z;TestNamedAggregationDataFrame.test_agg_relabel_other_raisesc              	   C   sP   t ddgddgd}td}tjt|d |djdd	 W 5 Q R X d S )
Nr   r   r   r   zColumn(s) ['C'] do not existr6   r4   )r5   r   r   )r   reescaper;   r<   KeyErrorr   r   )r*  r    r7   r   r   r   test_missing_raisesG  s    
z1TestNamedAggregationDataFrame.test_missing_raisesc                 C   s`   t ddgddgd}|djtddtjddd	d
}|djddd
}t|| d S )Nr   r   r   r   r4   rA   r   countr5  r   r   )rA   r   )rA   re  r   r   r   r   r@  r-   r.   rQ  r   r   r   test_agg_namedtupleM  s    

 z1TestNamedAggregationDataFrame.test_agg_namedtuplec                 C   sv   t ddgddgddgd}|djdd	d
 fddd
 fd}t ddgddgdtddgddd}t|| d S )Nr   r   r   r   r   )r4   rA   r5   r4   rA   c                 S   s   dS r   r   r   r   r   r   r&   W  r'   z<TestNamedAggregationDataFrame.test_mangled.<locals>.<lambda>r5   c                 S   s   dS r1  r   r   r   r   r   r&   W  r'   rf  r   r9   rP  rQ  r   r   r   r2  U  s    $&z*TestNamedAggregationDataFrame.test_mangledN)r:  r<  r=  rO  rR  r\  r^  r_  rd  rh  r2  r   r   r   r   rA    s   $	rA  zCagg_col1, agg_col2, agg_col3, agg_result1, agg_result2, agg_result3r   r4   r   rj  )r   rA   r,   g      @      @c                 C   s   t | S r#   )r   r   r   r   r   r&   h  r'   c                 C   s   dS r1  r   r   r   r   r   r&   i  r'   rk  c                 C   s   dS r1  r   r   r   r   r   r&   r  r'   c           
      C   s   t ddddgddddgddd	d
gd}tdddg|_tddgdd}|djdd}t dddgi|d}	t||	 |dj| ||d}t |||d|d}	t||	 d S )Nr   r   r   r   r   r   rG   r   rH   r\   rB  r   r  rj  rk  r   ri  )rE  rE  r9   )Zcol_1Zcol_2Zcol_3)	r   r   ra   re   r   r   r   r-   r.   )
Zagg_col1Zagg_col2Zagg_col3Zagg_result1Zagg_result2Zagg_result3r    idxr1   r2   r   r   r   "test_agg_relabel_multiindex_column\  s$    !"
  
 ro  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\   rB  rm  rj  rk  zdo not existr6   ))Yr   r   r8  )	r   r   ra   re   r;   r<   rc  r   r   r   r   r   r   ,test_agg_relabel_multiindex_raises_not_exist  s    "rq  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\   rB  rm  rj  rk  )rj  r   r   r   r9   )	r   r   ra   re   r   r   r   r-   r.   )r    r1   rn  r2   r   r   r   &test_agg_relabel_multiindex_duplicates  s    "
 rr  kwargsr   rf  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.   )rs  r    r1   r2   r   r   r    test_groupby_aggregate_empty_key  s    "rt  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    "rv  c                  C   sb   t dddgd} | jddgddjdtfd}t dgtg g gg g gddgd	d
}t|| d S )Nr   r   r   r   Frm   )r   r   rZ   r   )r   r   r   ry   r   r-   r.   r   r   r   r   2test_groupby_aggregate_empty_with_multiindex_frame  s     rw  c                  C   st   t ddddddgdddddd	gd
} | jddd}|jtjdddd}t dddgddd	gd}t|| d S )Nr   r   zr  皙?ri         @@      ?)r   valr   Fr  r}  r   r5  min_val)r   r  rg  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  ry  ri   rz  r{  r|  )r   r  r}  r   r  Fr  r}  r   r5  r~  )r   r  r  rg  r  r   r   r   Dtest_grouby_agg_loses_results_with_as_index_false_relabel_multiindex  s    r  r   c                 C   s   |   S r#   )r,   r   r   r   r   r&     r'   c                 C   s
   t | S r#   r   r  r   r   r   r&     r'   c                 C   s
   t | S r#   )r+   Znanmeanr  r   r   r   r&     r'   c                 C   s   dddgdddgg}t |tjdddgdddggddgd	d
}|tddg| }dddddddddd}t |tddg|jd}t	|| d S )Nr   r   r   rG   rH   r   ZSiskoZJanewayrZ   r   r   r  g      @rj   rZ  g      @ri   ))r   r   )r   r   )r   r   r   )
r   r   Zfrom_arraysr   r+   r   r   re   r-   r.   )r   rd   r    r1   expected_dictr2   r   r   r   test_multiindex_custom_func  s     r  c                 C   s   t j| ddS Ng?r   r+   rN  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@皙@rl  #@     h@kindheightweightr  )r  r,   r  )mean_heightperc90g"@g0'5"@g      4@g5^I@r  r  r   r   rP  )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  Xrp  Zrn   r   )
r   r+   r   r   ry   r   rB   r   r-   r.   )r    r1   r   r2   r   r   r   test_aggregate_mixed_types  s      &r  zNot implemented;see GH 31256reasonc                  C   sj   dd } t dtdddgi}|dddg| }t dtjdtjgddiddgd	}t|| d S )
Nc                 S   s   t | dkrdS tjS d S )Nr   r   )r   r   r   r   r   r   r   r7  8  s    z5test_aggregate_udf_na_extension_type.<locals>.aggfuncr4   r   r   r   r   rn   r9   )r   r   r   r   r   r   r-   r.   )r7  r    r1   r2   r   r   r   $test_aggregate_udf_na_extension_type/  s
    	$r  c                   @   sB   e Zd Zdd Zdd Zejjdddd Zd	d
 Z	dd Z
dS )TestLambdaManglingc                 C   st   t ddddgddddgd}|ddd	d
 dd
 gi}t ddgddgdtddgddd}t|| d S )Nr   r   r   r   r   r   r4   rA   c                 S   s   dS r   r   r   r   r   r   r&   G  r'   z/TestLambdaMangling.test_basic.<locals>.<lambda>c                 S   s   dS r1  r   r   r   r   r   r&   G  r'   ))rA   
<lambda_0>)rA   
<lambda_1>r   r9   rP  rQ  r   r   r   
test_basicE  s     zTestLambdaMangling.test_basicc                 C   sl   t ddddgddddg}|dd dd g}ddgddgd	}t|tddgd
}t|| d S )Nr   r   r   r   r   c                 S   s   dS r   r   r   r   r   r   r&   Q  r'   z?TestLambdaMangling.test_mangle_series_groupby.<locals>.<lambda>c                 S   s   dS r1  r   r   r   r   r   r&   Q  r'   r  r  r9   r)  )r*  r+  r1   exp_datar2   r   r   r   test_mangle_series_groupbyO  s
    z-TestLambdaMangling.test_mangle_series_groupbyzGH-26611. kwargs for multi-agg.r  c                 C   s   ddd}ddd}t ddgddg||gd}tdgdgd	}t|| t ddgddgj||gdd
d}tdgdgd	}t|| d S )Nr   c                 S   s   |   | | S r#   r@   r   r   r   r   r   r   r&   X  r'   z5TestLambdaMangling.test_with_kwargs.<locals>.<lambda>r   c                 S   s   |   ||  S r#   r@   r  r   r   r   r&   Y  r'   r   r   r   r  r   )r         )r   )r   )r   r   r   r   r-   r.   )r*  f1f2r1   r2   r   r   r   test_with_kwargsV  s    

"&z#TestLambdaMangling.test_with_kwargsc                 C   s   t ddddgddddgddd	d
gd}dddg}t ddgddgd	d
gdtddgdd|d}|jddjtjddd dtjdddtjdddd}t|| |jddjddd fddd}t|| d S )Nr  r  r  r  r  r  r  rl  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&   z  r'   z=TestLambdaMangling.test_agg_with_one_lambda.<locals>.<lambda>r5  r   r  c                 S   s   t | d S r8   r  r   r   r   r   r&     r'   r  r   r  r   )r   r   r   r   r   r@  r-   r.   r*  r    re   r2   Zresult1r  r   r   r   test_agg_with_one_lambdab  s<    



 
z+TestLambdaMangling.test_agg_with_one_lambdac              	   C   s  t ddddgddddgddd	d
gd}dddddg}t ddgddgd	d
gddgddgdtddgdd|d}|jddjddd fddddd fddd fd}t|| |jddjtjdd d d!tjdd"d!tjdd"d!tjdd#d d!tjdd$d d!d}t|| d S )%Nr  r  r  r  r  r  r  rl  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'   r5  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_lambda  sR    





 	z+TestLambdaMangling.test_agg_multiple_lambdaN)r:  r<  r=  r  r  r;   r>  xfailr  r  r  r   r   r   r   r  D  s   

'r  c                  C   s^   t dddgdddgd} | dddd	 i}t ddgddgdd}t|| d S )
Nr   Wr  ri   r   r4   rA   c                 S   s   |  | jd S )N)getr:   r   r   r   r   r&     r'   z+test_groupby_get_by_index.<locals>.<lambda>)r   r   r   r   r-   r.   )r    r  r2   r   r   r   test_groupby_get_by_index  s    r  zgrp_col_dict, exp_data)nrcat_ordr  r  c              	   C   s   t ddddddddgtd	td
d}|ddd}|d j |d< |d| }tjddgddgdddd}t ||d}d|kr|d j	}|d ||d< t
|| d S )Nr   r   r   r   rG   r   rH   r\   aabbccddaaaabbbbr  r  r  categoryr  r  r  r  r   r   F
categoriesZorderedrq   ro   )rd   r:   )r   ry   r   r  
as_orderedr   r   r   CategoricalIndexro   r-   r.   )grp_col_dictr  input_df	result_df	cat_indexexpected_dfro   r   r   r    test_groupby_single_agg_cat_cols  s*        
r  )r   r   r   )rG   r\   r   )r   r   r   )rG   r   r   r   )r   r   c              	   C   s   t ddddddddgtd	td
d}|ddd}|d j |d< |d| }tjddgddgdddd}g }| 	 D ]:\}}t
|tr|D ]}|||g 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   ro   r-   r.   )r  r  r  r  r  Zmulti_index_listr   vr   Zmulti_indexr  colr   r   r   #test_groupby_combined_aggs_cat_cols  s8        

r  c                  C   s\   t ddddgddddgd} | d}|dg}|jd|_|d}t|| d S )Nr   r   r   r   r   r  )r   r   r   re   Z	droplevelr-   r.   )r    rb   r1   r2   r   r   r   test_nonagg_agg  s    

r  c                  C   sh   t ddgtdddddddtd	ddddddgd
} | dj }| dd }t|| d S )Nr  rp  i  r   r   r     i`= i  r   r4   rA   )r   datetimer   rA   r   r   r-   rC   r   r   r   r   test_aggregate_datetime_objects*  s    	r  c                  C   s   t dddgdddgdddgd} | jd| _| dd	g}|jd
d }tjddgdd}tddg|dd}t	
|| d S )Nr   r   r   r   r   )c0c1pOr  r  c                 S   s   t | dkS r   r   r   r   r   r   r&   A  r'   z1test_groupby_index_object_dtype.<locals>.<lambda>)r   r   r  )r  r  rZ   FTr  r   )r   r:   r   r   r  r   r   ra   r   r-   rC   )r    r0   r  r   r2   r   r   r   test_groupby_index_object_dtype<  s    " r  c                  C   sT   dd } t dgtdgd}|dd | }t dggdgd}t|| d S )	Nc                 S   s   |    rd S t| S r#   )Zisnar   r+   r   r   r   r   r   r   N  s    z)test_timeseries_groupby_agg.<locals>.funcr  z2018-01-16 00:00:00+00:00r9   c                 S   s   dS r1  r   r   r   r   r   r&   T  r'   z-test_timeseries_groupby_agg.<locals>.<lambda>r   )r   r   r&  r   r   r-   r.   )r   r    r  r2   r   r   r   test_timeseries_groupby_aggK  s
    r  c                 C   s   | dkrd S t ddgdtjgg}|d| }|dd| i}| dkrdtj||d dd nt|| t|j|j d S )N)ZcorrwithZnthr   r   )r   ZngroupF)Zcheck_names)	r   r+   r`   r   r   r-   rC   r.   Zdtypes)r   objZresult_reduced_seriesZresult_reduced_framer   r   r    test_groupby_aggregate_directoryZ  s        r  c                  C   sN   t dddgdd} t dgdtdgd}| dddg }t|| d S )	Nz1 dayz3 daysNaTztimedelta64[ns]rn   z2 daysr   rp   )r   r+   r   r   r,   r-   rC   )rd   r2   r1   r   r   r   test_group_mean_timedelta_natp  s    r  zinput_data, expected_outputz2021-01-01T00:00r  z2021-01-01T02:00z2021-01-01T01:00z2021-01-01T00:00-0100z2021-01-01T02:00-0100z2021-01-01T01:00-0100c                 C   sH   t t| }t t|tdgd}|dddg }t|| d S )Nr   r9   )r
   r   r+   r   r   r,   r-   rC   )Z
input_dataZexpected_outputrd   r2   r1   r   r   r   test_group_mean_datetime64_natz  s    r  zfunc, outputy       @      2@y      $@      6@y      D@     V@y      I@     [@c                 C   sN   t tdddddg}||jd | }t |}t	|| d S )Nr   r   r   r                  @)
r   r+   r   r   dotr   r:   r   r-   rC   )r   outputrd   r1   r2   r   r   r   test_groupby_complex  s     r  c              	   C   sX   t tdddddg}d}tjt|d ||j	d 
|  W 5 Q R X d S )Nr   r   r   r   r  zNo matching signature foundr6   )r   r+   r   r   r  r;   r<   r   r   r:   r   )r   rd   r>   r   r   r   test_groupby_complex_raises  s     r  prodc              	   C   sX   t dddgdddgdddgd	}|jd
dd}tjtdd ||  W 5 Q R X d S )Nr   r   r   r   rG   r   rH   r\   r   r   r   z"axis other than 0 is not supportedr6   )r   r   r;   r<   NotImplementedErrorr   )r   r    r!   r   r   r   test_multi_axis_1_raises  s    "r  ztest, constantr4   rA   r5   rj   r  )Zmarksc                 C   s<   t | }|dtj}t |}|d}t|| d S r   )r   r   r   r   moder   r-   r.   )r[  ZconstantZdf1r1   r2   r   r   r   test_agg_of_mode_list  s
    
r  c               	   C   s   t dddgdddgd} | d}dd
d}ddd}d}tjt|d |j||gdddd W 5 Q R X |j||gddd}t ddgddgddggtdddgddtddgd}t	
|| d S )Nr   r   r   r   r   r   r  r   r   c                 S   s   |   | | S r#   r@   r   r   r   r   r   r   foo1  s    zAtest__dataframe_groupy_agg_list_like_func_with_args.<locals>.foo1c                 S   s   |   | | S r#   r@   r   r   r   r   r   r   foo2  s    zAtest__dataframe_groupy_agg_list_like_func_with_args.<locals>.foo2/foo1\(\) got an unexpected keyword argument 'b'r6   r   rf  r`  r\   r]   r   r   )r   r  )r   r  r   )r   r   )r   r   )r   r   r;   r<   r   r   r   r   ra   r-   r.   )r    r!   r  r  r>   r1   r2   r   r   r   3test__dataframe_groupy_agg_list_like_func_with_args  s    


 r  c               	   C   s   t dddg} | | }ddd}ddd}d	}tjt|d
 |j||gdddd W 5 Q R X |j||gddd}tddgddgddggtdddgddgd}t	|| d S )Nr   r   r   r   c                 S   s   |   | | S r#   r@   r  r   r   r   r    s    z>test__series_groupy_agg_list_like_func_with_args.<locals>.foo1c                 S   s   |   | | S r#   r@   r  r   r   r   r    s    z>test__series_groupy_agg_list_like_func_with_args.<locals>.foo2r  r6   r   rf  r`  r\   r]   r   r  r  r   )r   r   )r   r   )
r   r   r;   r<   r   r   r   r   r-   r.   )r   Zsgbr  r  r>   r1   r2   r   r   r   0test__series_groupy_agg_list_like_func_with_args  s    


   r  )l__doc__r  rM  r   ra  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   rl   rw   r{   r|   r>  r?  r   r   r   intrt   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r	  r  r  r   Zuint64r  r  r  ry   Zinterval_rangeZperiod_rangera   r  r!  r'  r(  rA  r   r@  r,   ro  rq  rr  rt  rv  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  paramr  r  r  r   r   r   r   <module>   s   
1 

 	
	!$

(  (

	
5v	

	



 


y

)

	 

 
**0
