3
Udd                 @   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mZ ddl	m
Z
 ddlZddlmZmZmZmZmZ ddlj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"j#ddd dd dd gg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/d0 Z,d1d2 Z-ej"j#d3d4d d5d d6d d7d d8d d9d gd:d; Z.d<d= Z/ej"j#d>ej0ej1gej"j#d?d@dAdBdCdDdEgdFdG Z2dHdI Z3ej"j#dJej4e5dKej6ddLej7dMdLdNdOejj8dddggdSdT Z9dUdV Z:dWdX Z;G dYdZ dZZ<G d[d\ d\Z=ej"j#d]ddej>fddQdLgddagdbdcgfdddd fdded fddQdLgdQdQgdbdcgfej?ddCej?dej@ej?ddfd dQdLgdbdcgdQdQgfgdgdh ZAdidj ZBdkdl ZCej"j#dmdndBgig dBgdogdpdq ZDdrds ZEdtdu ZFdvdw ZGej"j#dxdyd dzd d{d gd|d} ZHd~d ZIej"j#dxdd eIgdd ZJdd ZKej"jLdddd ZMej"j#dxdBdCgdd ZNej"j#dxdBdCgdd ZOG dd dZPdd ZQdd ZRdd ZSdd ZTdS )zN
test .agg behavior / note that .apply is tested generally in test_groupby.py
    N)partial)PerformanceWarning)is_integer_dtype)	DataFrameIndex
MultiIndexSeriesconcat)SpecificationError)Groupingc              C   sD   t jddddgddddgd} | jd	d
 }dd }|j| d S )Nabc            )keyvaluer   r   c             S   s   t | dkst| j S )Nr   )lenAssertionErrorsum)x r   a/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/groupby/aggregate/test_aggregate.py
dummy_func   s    z3test_groupby_agg_no_extra_calls.<locals>.dummy_func)pdr   groupbyagg)dfgbr   r   r   r   test_groupby_agg_no_extra_calls   s     r!   c             C   s:   | j dd dd g}|jtj}|j }tj|| d S )Nc             S   s   | j S )N)year)r   r   r   r   <lambda>#   s    z&test_agg_regression1.<locals>.<lambda>c             S   s   | j S )N)month)r   r   r   r   r#   #   s    )r   r   npmeantmassert_frame_equal)tsframegroupedresultexpectedr   r   r   test_agg_regression1"   s    r-   c             C   sf   | j dd }d}tjt|d |jdd  W d Q R X tjt|d |jdd  W d Q R X d S )NACzMust produce aggregated value)matchc             S   s   | j  S )N)Zdescribe)r   r   r   r   r#   .   s    z#test_agg_must_agg.<locals>.<lambda>c             S   s   | j d d S )Nr   )index)r   r   r   r   r#   0   s    )r   pytestraises	Exceptionr   )r   r*   msgr   r   r   test_agg_must_agg)   s    r6   c             C   sN   | j }dd }| j j| j| jgj|}| jddgj d }tj|| d S )Nc             S   s   | j  S )N)r   )r   r   r   r   r#   7   s    z(test_agg_ser_multi_key.<locals>.<lambda>r.   Br/   )r/   r   r.   r7   	aggregater   r'   assert_series_equal)r   serfresultsr,   r   r   r   test_agg_ser_multi_key3   s
    r=   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}|jddg}|ddg j }tj||  d S )(N      r   r   r   7   M   !   ,      )v1v2_   c   r   bigdampbluedryredwetby1by2)names)r1      	   X      )rE   rF   rO   rP   rE   rF   )r   rG   )r   rH   )r   rG   )r   rH   )rI   rJ   )rK   rL   )rM   rM   )rM   rN   )	r   r%   nanr   from_tuplesr   r&   r'   r(   )r,   r   gr+   r   r   r   $test_groupby_aggregation_mixed_dtype=   s@    rY   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j| tjjddddgd}|jdddj }tjd	dddgddddgd
}tj	|| d S )NTFr.   r   r   r7   )datacolumns)levelaxisg       @)r   r   )r.   r   )r.   r   )r7   r   )r7   r   )
r%   rV   r   r   r   rW   r   r   r'   r(   )lstr   r+   r,   r   r   r   +test_groupby_aggregation_multi_level_columno   s    
 r_   c             C   s  | j | tj }| jtjks ttg tjtjg tjdd}t	j
|j | t	j
|jtj| t	j
|jtj|dd |j |d tj }t|jttjg tjdd}t	j|j |dd t	j|jtj|dd t	j|jtj|jd d d df dd d S )	N)dtype)r`   r1   F)Zcheck_index_typer.   )r[   r`   r1   )Zcheck_namesr   )r   r%   rV   r`   float64r   r   r   r   r'   r9   r   r   applyr   r[   floatr(   Ziloc)tsr)   r*   expZexp_dfr   r   r   test_agg_apply_corner   s    rf   c             C   s   t j }|jdd }|jjd j}t| jt||jjd< |jt	j
}|j
 }t j|| t| jt||jjd< |jt	j
}|j
 }t j|| d S )Nc             S   s   | j S )N)r"   )r   r   r   r   r#      s    z1test_agg_grouping_is_list_tuple.<locals>.<lambda>r   )r'   ZmakeTimeDataFramer   grouperZ	groupingsr   r1   listr   r%   r&   r(   tuple)rd   r   r*   rg   r+   r,   r   r   r   test_agg_grouping_is_list_tuple   s    rj   c             C   s2   | j ddg}|jtj}|j }tj|| d S )Nr.   r7   )r   r   r%   r&   r'   r(   )Zmframer*   r+   r,   r   r   r   test_agg_python_multiindex   s    rk   groupbyfuncc             C   s   | j  S )N)weekday)r   r   r   r   r#      s    r#   c             C   s   | j S )N)r$   )r   r   r   r   r#      s    c             C   s   | j |}|d jd}|d j }tj|| |jd}|j }tj|| |jddddd}t|d j |d j |d j	 |d	 j
 d}tj|| d S )
Nr.   stdvarr&   sem)r.   r7   r/   Dr7   r/   rq   )r   r   rn   r'   r9   r8   ro   r(   r   r&   rp   )r)   rl   r*   r+   r,   r   r   r   test_aggregate_str_func   s    




rr   c             C   s   | j d}dd }|j|}| jdkj }| jdkj }t|j}tjtj	|g| t
dtjdd}tj|jd| tjtj	|g| t
dtjdd}tj|jd| dd	 }t j | jj|}t|tstt|d
kstd S )Nr.   c             S   s   | j S )N)size)r:   r   r   r   r#      s    z-test_aggregate_item_by_item.<locals>.<lambda>foobarZBCD)r1   r`   namec             S   s   | j S )N)rs   )r:   r   r   r   aggfun   s    z+test_aggregate_item_by_item.<locals>.aggfunr   )r   r   r.   r   r   r[   r   r   r%   arrayrh   ra   r'   r9   xsZassert_almost_equalr   
isinstancer   )r   r*   rw   r+   rt   ru   Kre   r   r   r   test_aggregate_item_by_item   s     


  r|   c             C   s\   | j ddg}dd }|j|}| jd d | jdkf }|j ddgj|}tj|| d S )Nr.   r7   c             S   s   | j tkrtn| j S d S )N)r`   object	TypeErrorr   )r:   r   r   r   func   s    
ztest_wrap_agg_out.<locals>.funcr/   )r   r8   locr[   r'   r(   )Zthree_groupr*   r   r+   Zexp_groupedr,   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}| jdd j|}tdddg}tj|j	| d S )Nr&   maxminr.   r/   )
r%   r&   r   r   r   r   r   r'   assert_index_equalr[   )r   funcsr+   Zexp_colsr   r   r   *test_agg_multiple_functions_maintain_order   s    r   c                 s   t jtjjddt jdddddddgd	  jd
jdttj	ddttj	ddgi} t jdd
dd}t
jddg}tj fdddD j}t j|||d}tj| | d S )Ni  r   z1/1/2012S)freqperiodsr.   r7   r/   )r1   r[   3TH.?)q镲q?   quantilec                s"   g | ]} j d jj|djqS )r   )r   )resampler.   r   values).0r   )r   r   r   
<listcomp>  s    z9test_agg_multiple_functions_same_name.<locals>.<listcomp>)r[   r1   )r.   r   )r.   r   )r   r   )r   r   r%   randomrandn
date_ranger   r   r   r   r   rW   rx   Tr'   r(   )r+   expected_indexexpected_columnsexpected_valuesr,   r   )r   r   %test_agg_multiple_functions_same_name  s    
"r   c           
      s   t jtjjddt jdddddddgd	  jd
jddttj	ddttj	ddgi} t jdd
dd}t j
jddddddg}tj fdddD j}tj jd
jj |g}t j|||d}tjt tj| | W d Q R X d S )Ni  r   z1/1/2012r   )r   r   r.   r7   r/   )r1   r[   r   ohlcH.?)r   镲q?r   openhighlowcloser   c                s"   g | ]} j d jj|djqS )r   )r   )r   r.   r   r   )r   r   )r   r   r   r   /  s    zKtest_agg_multiple_functions_same_name_with_ohlc_present.<locals>.<listcomp>)r[   r1   )r.   r   r   )r.   r   r   )r.   r   r   )r.   r   r   )r.   r   r.   )r.   r   r.   )r   r   )r   r   r%   r   r   r   r   r   r   r   r   rW   rx   r   Zhstackr.   r   r'   Zassert_produces_warningr   r(   )r+   r   r   Znon_ohlc_expected_valuesr   r,   r   )r   r   7test_agg_multiple_functions_same_name_with_ohlc_present  s*    
$r   c             C   st   ddg}ddg}| j dd j|}| j dd j|}tj|| | j dj|}| j dj|}tj|| d S )	Nrt   r&   rn   r.   r/   )rt   r&   )rt   r&   )rn   rn   )r   r   r'   r(   )r   r   Zex_funcsr+   r,   r   r   r   -test_multiple_functions_tuples_and_non_tuples:  s    r   c       
      C   sT  | j d}|jtjtjd}|j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}|j|}t	j
|| |jtjtjtjgd}|jtjtjtjgd}t	j
|| d
d }dd }d}	tjt|	d: tdtjgdtdtjgdtjgggg}|j| W d Q R X tjg||gd}|j| d S )Nr.   )r/   rq   r&   rn   r   )keysr]   r   )r]   )r\   r]   c             S   s
   t j| S )N)r%   r&   )r   r   r   r   rt   [  s    z4test_more_flexible_frame_multi_function.<locals>.fooc             S   s   t j| ddS )Nr   )Zddof)r%   rn   )r   r   r   r   ru   ^  s    z4test_more_flexible_frame_multi_function.<locals>.barznested renamer is not supported)r0   r/   rq   rt   ru   )r   r   r%   r&   rn   r	   Z	swaplevelZ
sort_indexr8   r'   r(   r2   r3   r
   dict)
r   r*   ZexmeanZexstdr,   dr+   rt   ru   r5   r   r   r   'test_more_flexible_frame_multi_functionH  s&    

*r   c             C   s   | j d}dddddid}d}tjt|d |j| W d Q R X ddddd}tjt|d |j| W d Q R X ddddd}tjt|d |j| W d Q R X d S )	Nr.   r&   rn   )rt   ru   r   )r/   rq   znested renamer is not supported)r0   )r   r2   r3   r
   r8   )r   r*   r   r5   r   r   r    test_multi_function_flexible_mixl  s    
r   c              C   s   t jddddgddddgd d ddgd} | jd}tddgdd}|d jd	d
 }tddg|dd}tj|| |d jdd
 }tddg|dd}tj|| d S )Nr   r   r   r   )r   r   r   r   )rv   r   c             S   s   | dkj  S )Nr   )all)r   r   r   r   r#     s    z1test_groupby_agg_coercing_bools.<locals>.<lambda>FT)r1   rv   r   c             S   s   | j  j S )N)Zisnullr   )r   r   r   r   r#     s    )r   r   r   r   r8   r   r'   r9   )ZdatZgpr1   r+   r,   r   r   r   test_groupby_agg_coercing_bools  s    *
r   opc             C   s   | j  S )N)r   )r   r   r   r   r#     s    c             C   s   | j  S )N)cumsum)r   r   r   r   r#     s    c             C   s
   | j dS )Nr   )	transform)r   r   r   r   r#     s    c             C   s
   | j dS )Nr   )r   )r   r   r   r   r#     s    c             C   s
   | j dS )Nr   )r   )r   r   r   r   r#     s    c             C   s
   | j dS )Nr   )r   )r   r   r   r   r#     s    c             C   sf   t jddgddgd}|jdd }| |jdd j}t|sFt| |jdj}t|sbtd S )Nr   FT)r   r   r   r   )r   r   	set_indexr   r`   r   r   )r   r   sr+   r   r   r   test_bool_agg_dtype  s    r   c              C   sj   t jddddgddddgd} | jdjddd	d
dg}|jjd }t jddd	d
dg}tj|| d S )Nr   r   r   r   )r.   r7   r.   r   r   r&   r   r   )	r   r   r   r   r[   levelsr   r'   r   )r   resr+   r,   r   r   r   #test_order_aggregate_multiple_funcs  s
     r   r`   howfirstlastr   r   r&   Zmedianc             C   sn   t jdddgd}|jdjd|i}|jj| |_|jdjd|i}|jjtj|_tj	||dd d S )	Nl   &tLWHd~ r   r   )r   yr   r   T)Zcheck_exact)
r   r   r   r   r   astyper%   int64r'   r(   )r`   r   r   r,   r+   r   r   r   test_uint64_type_handling  s    r   c           
   C   sV   d} t jddddgddddgd}tjt| d |jd	jd
d
g W d Q R X d S )NzFunction namesr   r   r   r   r   )r.   r7   )r0   r.   r   )r   r   r2   r3   r
   r   r   )r5   r   r   r   r   test_func_duplicates_raises  s     r   r1   abcr   2020rq   )r   r   r   r   r   c             C   s`   t dddgdddgd| d}|jdjdtji}t ddgddgdjd}tj|| d S )Nr   r   r   )groupr   )r1   r   r   )r   r   r   r   Znuniquer   r'   r(   )r1   r   r+   r,   r   r   r   $test_agg_index_has_complex_internals  s    r   c              C   sx   t jdddddgdddddgdddddgd} | jdj }t jddgddgd	t jddgdd
d}tj|| d S )Nr   r   ZoneZtwoZthreesix)key1key2key3r   )r   r   )rv   )r1   )r   r   r   r   r   r'   r(   )r   r+   r,   r   r   r   test_agg_split_block  s    r   c           
   C   s   t j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jt} | jddddgj }t jt jdgdgdgdgt jdgdgd}tj	|| d S )N2000r   )r   r   r   r   r   r   r   r   e)r.   r7   r/   rq   EFr   )
r   r   r   r   r}   r   r   	Timestampr'   r(   )r   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j	d	e
jd
dddd
dggdd ZdS )TestNamedAggregationSeriesc             C   s   t jddddg}|jddddg}|jddd}t jdd	gddgdd
dgddgd}tj|| |jddd}|dd
g }tj|| d S )Nr   r   r   r   r   r   r   )r   r   r?   r   r   )r[   r1   )r   r   )r   r   r   r   r   r'   r(   )selfr   grr+   r,   r   r   r   test_series_named_agg	  s    "z0TestNamedAggregationSeries.test_series_named_aggc          
   C   s\   t jddgjddg}tjtdd |j  W d Q R X |jg }t j }tj	|| d S )Nr   r   r   zMust provide)r0   )
r   r   r   r2   r3   r~   r   r   r'   r(   )r   r   r+   r,   r   r   r   test_no_args_raises  s    
z.TestNamedAggregationSeries.test_no_args_raisesc             C   sR   t jdddgjdddg}|jddd}t jddgddgd}tj|| d S )Nr   r   r   r   r   )r   r   )r   r   r   r   r   r'   r(   )r   r   r*   r,   r   r   r   *test_series_named_agg_duplicates_no_raises   s    zETestNamedAggregationSeries.test_series_named_agg_duplicates_no_raisesc             C   sZ   t jdddgjdddg}|jdd dd d}t jddgddgd}tj|| d S )	Nr   r   r   r   c             S   s   dS )Nr   r   )r   r   r   r   r#   )  s    z9TestNamedAggregationSeries.test_mangled.<locals>.<lambda>c             S   s   dS )Nr   r   )r   r   r   r   r#   )  s    )r   r   )r   r   r   r   r   r'   r(   )r   r   r+   r,   r   r   r   test_mangled'  s    z'TestNamedAggregationSeries.test_mangledinpanythingr   )columnaggfuncc          
   C   s\   t jddddddddg}dt|j }tjt|d |j|jj	|d W d Q R X d S )	Nr   r   r   r   r>   zfunc is expected but recieved )r0   )r   )
r   r   type__name__r2   r3   r~   r   r   r   )r   r   r   r5   r   r   r   test_named_agg_nametuple-  s    
z3TestNamedAggregationSeries.test_named_agg_nametupleN)r   r   )r   
__module____qualname__r   r   r   r   r2   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 jddddgddddgddd	d
gd}|jdjd!d"d}t jddgdd
gdt jddgddddgd}tj|| tjt	j
dd}|jdjd#dtfdt	jfd$d%d|fd}t jdd	gddgddgddgdd
gddgdt jddgdddddddd gd}tj|| d S )&Nr   r   r   r   r   r   r>   r   r?   rR   )r   r.   r7   r   r.   r   r7   )a_maxb_max)rv   r   r   )r1   r[   b   )r   r   )b_mina_mina_meanr   r   a_98g      ?g      @g\(\?gףp=
@r   r   r   r   )r.   r   )r7   r   )r7   r   )r.   r   )r7   r   )r   r   r   r   r   r'   r(   	functoolsr   r%   
percentiler   r&   )r   r   r+   r,   Zp98r   r   r   test_agg_relabel>  s4    &

z.TestNamedAggregationDataFrame.test_agg_relabelc             C   st   t jddddgddddgddd	d
gd}|jdjf ddi}t jdddgit jddgddd}tj|| d S )Nr   r   r   r   r   r   r>   r   r?   rR   )r   r.   r7   r   zmy colr.   r   )rv   )r1   )r.   r   )r   r   r   r   r   r'   r(   )r   r   r+   r,   r   r   r   test_agg_relabel_non_identifierb  s    & z=TestNamedAggregationDataFrame.test_agg_relabel_non_identifierc             C   s  t jddddgddddgd}|jdjddd
}t jddgddgd
t jddgddd}tj|| tjt	j
dd}tjt	j
dd}d|_d|_t jdddddgdddddgd}|jdjd|fd|fd}t jddgddgdt jddgddd}tj|| d S )Nr   r   r   r   r   )r.   r7   r.   r7   r   )r   r   )rv   )r1   2   )r   F   quant50quant70r   r   r>   )col1col2r   r   )Zquantile_50Zquantile_70g      ?g      @g333333?g@)r7   r   )r7   r   )r   r   r   r   r   r'   r(   r   r   r%   r   r   )r   r   r*   r,   r   r   testr   r   r   test_duplicate_no_raisesm  s"     & 
z6TestNamedAggregationDataFrame.test_duplicate_no_raisesc             C   s   t jddddgddddgdt jjddgd	d
ggd}|jddjdddd}t jddgddgddgdddgd}tj|| d S )Nr   r   r   r   r   )r.   r7   r.   r7   r   r   )r1   )r\   r   r   r&   )ZaaZbbccg      ?g      @)r.   r   )r.   r   )r7   r&   )r   r   r   Zfrom_productr   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 jdddgdddgd}|jd}d}tjt|d |jdd	 W d Q R X tjt|d |j  W d Q R X tjt|d |jddd W d Q R X d S )Nr   r   r   r   )r.   r7   r.   zMust provide)r0   )rt   r7   r   )r   r   )r7   r   )r   r   r   )r   r   r   r2   r3   r~   r   )r   r   r*   r0   r   r   r   test_agg_relabel_other_raises  s    
z;TestNamedAggregationDataFrame.test_agg_relabel_other_raisesc          
   C   sH   t jddgddgd}tjtdd |jdjdd
 W d Q R X d S )Nr   r   r   )r.   r7   zColumn 'C' does not exist)r0   r.   r/   r   )r   )r/   r   )r   r   r2   r3   KeyErrorr   r   )r   r   r   r   r   test_missing_raises  s    z1TestNamedAggregationDataFrame.test_missing_raisesc             C   sb   t jddgddgd}|jdjt jddt jddd	d
}|jdjddd
}tj|| d S )Nr   r   r   )r.   r7   r.   r7   r   count)r   r   )r   r   )r7   r   )r7   r   )r   r   r   r   r   r'   r(   )r   r   r+   r,   r   r   r   test_agg_namedtuple  s
    
z1TestNamedAggregationDataFrame.test_agg_namedtuplec             C   s|   t jddgddgddgd}|jdjdd	d
 fddd
 fd}t jddgddgdt jddgddd}tj|| d S )Nr   r   r   r   r   )r.   r7   r/   r.   r7   c             S   s   dS )Nr   r   )r   r   r   r   r#     s    z<TestNamedAggregationDataFrame.test_mangled.<locals>.<lambda>r/   c             S   s   dS )Nr   r   )r   r   r   r   r#     s    )r   r   )rv   )r1   )r   r   r   r   r   r'   r(   )r   r   r+   r,   r   r   r   r     s
    $&z*TestNamedAggregationDataFrame.test_mangledN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   =  s   $r   zCagg_col1, agg_col2, agg_col3, agg_result1, agg_result2, agg_result3r   r.   r7   r   g      @g      @c             C   s   t | S )N)r   )r   r   r   r   r#     s    c             C   s   dS )Nr   r   )r   r   r   r   r#     s    c             C   s   dS )Nr   r   )r   r   r   r   r#     s    c       
      C   s   t ddddgddddgddd	d
gd}tjjdddg|_tjddgdd}|jdjdd}t dddgi|d}	tj	||	 |jdj| ||d}t |||d|d}	tj	||	 d S )Nr   r   r   r   r   r   r>   r   r?   rR   )r   r.   r7   r   r   r   r.   r7   )rv   r   )r   r   )r1   )Zcol_1Zcol_2Zcol_3)r   r   )r   r.   )r   r7   )r   r   )r   r   r   r.   )r   r   )r   r   )
r   r   r   rW   r[   r   r   r   r'   r(   )
Zagg_col1Zagg_col2Zagg_col3Zagg_result1Zagg_result2Zagg_result3r   idxr+   r,   r   r   r   "test_agg_relabel_multiindex_column  s    !&
r   c           
   C   sl   t ddddgddddgddd	d
gd} tjjdddg| _tjtdd | jdj	dd W d Q R X d S )Nr   r   r   r   r   r   r>   r   r?   rR   )r   r.   r7   r   r   r   r.   r7   zdoes not exist)r0   Yr   )r   )r   r   )r   r.   )r   r7   )r   r   r   r   )r   r   )
r   r   r   rW   r[   r2   r3   r   r   r   )r   r   r   r   ,test_agg_relabel_multiindex_raises_not_exist  s
    &r   c              C   s   t ddddgddddgddd	d
gd} tjjdddg| _| jdjddd}tjddgdd}t ddgddgd|d}tj	|| d S )Nr   r   r   r   r   r   r>   r   r?   rR   )r   r.   r7   r   r   r   r.   r7   r   )r   r   )rv   )r1   )r   r   )r   r.   )r   r7   )r   r   r   r.   )r   r   r   r.   )r  r   )r   r   )
r   r   r   rW   r[   r   r   r   r'   r(   )r   r+   r   r,   r   r   r   &test_agg_relabel_multiindex_duplicates  s    &

r  kwargsr   )r   r   c             C   sv   t jdddgdddgdddgd}|jdj| }t jddgt jddgdddt jjd	d
ggd}tj|| d S )Nr   r   r   r   )r   r   r   r   r   )r`   rv   r   r   )r1   r[   )	r   r   r   r   r   r   rW   r'   r(   )r  r   r+   r,   r   r   r    test_groupby_aggregate_empty_key
  s    $r  c              C   sh   t jdddgdddgdddgd} | jdjdg i}t jt jdgg gg g gdd	}tj|| d S )
Nr   r   r   r   )r   r   r   r   r   )r   codes)r[   )r   r   r   r   r   r'   r(   )r   r+   r,   r   r   r   -test_groupby_aggregate_empty_key_empty_return  s    $ r  c              C   sx   t j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 jdddgddd	gd}tj|| d S )Nr   r   zg      ?g?g       @g      @g@g      ?)r   valr   F)as_indexr  r   )r   r   )min_val)r   r
  )r   r   r   r   r   r'   r(   )r   r*   r+   r,   r   r   r   9test_grouby_agg_loses_results_with_as_index_false_relabel  s    $r  c           	   C   s   t j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 jdddgdddgdddgd}tj|| d S )Nr   r   r   r   r   g      ?g?g       @g      @g@g      ?)r   r   r  r   r   F)r	  r  r   )r   r   )r
  )r   r   r
  )r   r   r   r   r   r'   r(   )r   r*   r+   r,   r   r   r   Dtest_grouby_agg_loses_results_with_as_index_false_relabel_multiindex-  s     r  r   c             C   s   | j  S )N)r&   )r   r   r   r   r#   C  s    c             C   s
   t j| S )N)r%   r&   )r   r   r   r   r#   C  s    c             C   s
   t j| S )N)r%   Znanmean)r   r   r   r   r#   C  s    c             C   s   dddgdddgg}t j|t jjdddgdddggd}|jtjddgj| }d
ddd	dddd	dddd	i}t j|}tj	|| d S )Nr   r   r   r>   r?   r   )r[   r   )r   r   )r   r   )r   r   )r   r   )
r   r   r   Zfrom_arraysr   r%   rx   r   r'   r(   )r   rZ   r   r+   expected_dictr,   r   r   r   test_multiindex_custom_funcB  s    &"
r  c             C   s   t j| ddS )Ng?)r   )r%   r   )r   r   r   r   myfuncO  s    r  c             C   s   t j| ddS )Ng?)r   )r%   r   )r   r   r   r   r#   S  s    c             C   sz   t ddddgddddgddd	d
gd}|j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j|| d S )Ncatdogg333333"@g      @g      #@g      A@g@g      @g#@g     h@)kindheightweightr  r  r&   )mean_heightperc90g"@g0'5"@g      4@g5^I@r  r  )rv   )r[   r1   )r  r&   )r   r   r   r   r'   r(   )r   Zanimalsr+   r,   r   r   r   test_lambda_named_aggS  s    


r  c              C   s   t jtjdgd jddtdtdd} dddg| d	< | jd	jd
d }dgdgdggddgddgddggg}t j|tddgdd	dtdddgddd}t	j
|| d S )Nr   rS   r   ZXYZr   )rZ   r[   r1   zgroup 1r   groupingc             S   s   | j  S )N)tolist)r   r   r   r   r#   p  s    z,test_aggregate_mixed_types.<locals>.<lambda>r}   )r`   rv   Xr   Z)r`   )r1   r[   )r   r   r%   rx   Zreshaperh   r   r8   r   r'   r(   )r   r+   Zexpected_datar,   r   r   r   test_aggregate_mixed_typesj  s    (&r  zNot implemented;see GH 31256)reasonc              C   sn   dd } t jdt jdddgi}|jdddgj| }t jdt jdt jgddiddgd	}tj|| d S )
Nc             S   s   t | dkrdS tjS d S )Nr   r   )r   r   NA)r   r   r   r   r     s    z5test_aggregate_udf_na_extension_type.<locals>.aggfuncr.   r   r   r   ZInt64)r`   )r1   )r   r   rx   r   r   r  r'   r(   )r   r   r+   r,   r   r   r   $test_aggregate_udf_na_extension_typez  s
    	&r  c             C   sp   ddg}t jdddd}t j||d}t|jdd |  }t jddgdd	}t j||dd
}tj|| d S )Nr   r   r   r   )r   r   )r   r   r   r   )rv   )r1   rv   )	r   period_ranger   getattrr   
Int64Indexr   r'   r9   )r   groupsr   r   r+   r   r,   r   r   r   $test_groupby_aggregate_period_column  s    r$  c             C   sn   ddg}t jdddd}t j||d}t|jd|  }t jddgdd}t jd	|i|d
}tj|| d S )Nr   r   r   r   )r   r   )r   r   r   )rv   r   )r1   )r   r   r   r!  r   r"  r'   r(   )r   r#  r   r   r+   r   r,   r   r   r   #test_groupby_aggregate_period_frame  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   s|   t jddddgddddgd}|jdjdd	d
 dd
 gi}t jdddgdddgit jddgddd}tj|| d S )Nr   r   r   r   r   )r.   r7   r.   r7   c             S   s   dS )Nr   r   )r   r   r   r   r#     s    z/TestLambdaMangling.test_basic.<locals>.<lambda>c             S   s   dS )Nr   r   )r   r   r   r   r#     s    
<lambda_0>
<lambda_1>)rv   )r1   )r7   r'  )r7   r(  )r   r   r   r   r   r'   r(   )r   r   r+   r,   r   r   r   
test_basic  s      zTestLambdaMangling.test_basicc             C   s^   t jddddgjddddg}|jdd dd g}t jddgddgd	}tj|| d S )
Nr   r   r   r   r   c             S   s   dS )Nr   r   )r   r   r   r   r#     s    z?TestLambdaMangling.test_mangle_series_groupby.<locals>.<lambda>c             S   s   dS )Nr   r   )r   r   r   r   r#     s    )z
<lambda_0>z
<lambda_1>)r   r   r   r   r   r'   r(   )r   r   r+   r,   r   r   r   test_mangle_series_groupby  s     z-TestLambdaMangling.test_mangle_series_groupbyzGH-26611. kwargs for multi-agg.)r  c             C   s   ddd}ddd}t jddgjddgj||gd}t jdgdgd	}tj|| t jddgjddgj||gdd
d}t jdgdgd	}tj|| d S )Nr   c             S   s   | j  | | S )N)r   )r   r   r   r   r   r   r#     s    z5TestLambdaMangling.test_with_kwargs.<locals>.<lambda>r   c             S   s   | j  ||  S )N)r   )r   r   r   r   r   r   r#     s    r   r   r   )z
<lambda_0>z
<lambda_1>
   )r         )r   )r   )r   r   r   r   r   r'   r(   )r   f1f2r+   r,   r   r   r   test_with_kwargs  s    

$(z#TestLambdaMangling.test_with_kwargsc             C   s   t jddddgddddgddd	d
gd}dddg}t jddgddgd	d
gdt j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|| |jddjddd fddd}tj|| d S )Nr  r  g333333"@g      @g      #@g      A@g@g      @g#@g     h@)r  r  r  height_sqr_min
height_max
weight_maxgp=
׳T@g      B@)r1  r2  r3  r  )rv   )r1   r[   )byr  c             S   s   t j| d S )Nr   )r%   r   )r   r   r   r   r#     s    z=TestLambdaMangling.test_agg_with_one_lambda.<locals>.<lambda>)r   r   r   r  c             S   s   t j| d S )Nr   )r%   r   )r   r   r   r   r#     s    )r  r   )r  r   )r   r   r   r   r   r   r'   r(   )r   r   r[   r,   result1result2r   r   r   test_agg_with_one_lambda  s,    




z+TestLambdaMangling.test_agg_with_one_lambdac          	   C   s   t jddddgddddgddd	d
gd}dddddg}t jddgddgd	d
gddgddgdt j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|| |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j|| d S )%Nr  r  g333333"@g      @g      #@g      A@g@g      @g#@g     h@)r  r  r  r1  r2  r3  height_max_2
weight_mingp=
׳T@g      B@)r1  r2  r3  r8  r9  r  )rv   )r1   r[   )r4  r  c             S   s   t j| d S )Nr   )r%   r   )r   r   r   r   r#     s    z=TestLambdaMangling.test_agg_multiple_lambda.<locals>.<lambda>r   r  c             S   s
   t j| S )N)r%   r   )r   r   r   r   r#     s    c             S   s
   t j| S )N)r%   r   )r   r   r   r   r#     s    c             S   s   t j| d S )Nr   )r%   r   )r   r   r   r   r#     s    )r   r   c             S   s
   t j| S )N)r%   r   )r   r   r   r   r#     s    c             S   s
   t j| S )N)r%   r   )r   r   r   r   r#     s    )r  r   )r  r   )r   r   r   r   r   r'   r(   r   )r   r   r[   r,   r5  r6  r   r   r   test_agg_multiple_lambda  s@    




z+TestLambdaMangling.test_agg_multiple_lambdaN)r   r   r   r)  r*  r2   r   xfailr0  r7  r:  r   r   r   r   r&    s
   
'r&  c              C   sf   t jdddgdddgd} | jdjddd	 i}t jtddgddgdjd}t jj|| d S )
Nr   Wg      ?g       @)r.   r7   r.   r7   c             S   s   | j | jd S )Nr   )getr1   )r   r   r   r   r#   &  s    z+test_groupby_get_by_index.<locals>.<lambda>)r   r   r   r   r   r   Ztestingr(   )r   r   r,   r   r   r   test_groupby_get_by_index#  s     r?  c              C   s^   t jddddgddddgd} | jd}|jdg}|jjd|_|jd}tj|| d S )Nr   r   )r   r   r   r   r=  )r   r   r   r   r[   Z	droplevelr'   r(   )r   rX   r+   r,   r   r   r   test_nonagg_agg+  s     

r@  c              C   s   t jddggd ddgd} | jddd	 dd	 g}t jd
d
d
gdddgddddgd}tj|| | d jddd	 dd	 g}t jd
d
d
gdddgdd}tj|| d S )Nr   rS   r   r.   r7   )r[   r   c             S   s   | j  S )N)r   )r   r   r   r   r#   ;  s    z*test_agg_no_suffix_index.<locals>.<lambda>rU      )r.   r7   z<lambda>)r1   c             S   s   | j  S )N)r   )r   r   r   r   r#   B  s    )r1   rv   )r   r   r   r'   r(   r   r9   )r   r+   r,   r   r   r   test_agg_no_suffix_index8  s    "rB  c              C   sh   t ddgtjdddddddtjd	ddddddgd
} | jdjj }| jdd }tj|| d S )Nr  r   i  r   r+  r-     i`= i  )r.   r7   r.   r7   )r   datetimer   r7   r   r   r'   r9   )r   r+   r,   r   r   r   test_aggregate_datetime_objectsG  s    rE  )r   r   )r   r   )r   r   r   r.   )rF  r   )r   r.   r   r7   )rG  r&   )r   r.   )r   r.   r   r7   )rH  r&   )r   r.   )r   r7   )r   r.   )U__doc__rD  r   r   Znumpyr%   r2   Zpandas.errorsr   Zpandas.core.dtypes.commonr   Zpandasr   r   r   r   r   r	   Zpandas._testingZ_testingr'   Zpandas.core.baser
   Zpandas.core.groupby.grouperr   r!   r-   r6   r=   rY   r_   rf   rj   rk   r   r   rr   r|   r   r   r   r   r   r   r   r   r   r   r   Zuint64r   r   ZCategoricalIndexrh   Zinterval_ranger   rW   r   r   r   r   r   r   r   r&   r   r   r  r  r  r  r  r  r  r  r  r;  r  r$  r%  r&  r?  r@  rB  rE  r   r   r   r   <module>   s   


2$	"$$
5}


("x