U
    >vf[                    @   s
  d dl m Z  d dlmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlZd dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlm  mZ  d dl!m"Z" d	d
 Z#dd Z$ej%&dddddgdd Z'dd Z(dd Z)dd Z*ej%&dddgdd Z+dd  Z,d!d" Z-ej%&dddddd#d$gd%d& Z.d'd( Z/d)d* Z0d+d, Z1d-d. Z2d/d0 Z3d1d2 Z4d3d4 Z5d5d6 Z6d7d8 Z7ej%&d9d:d; d<d; gd=d> Z8d?d@ Z9dAdB Z:dCdD Z;dEdF Z<dGdH Z=dIdJ Z>dKdL Z?dMdN Z@dOdP ZAdQdR ZBdSdT ZCdUdV ZDej%&dWdXdYgdZd[ ZEej%&dWd\d]d^d_d`dadbgej%&dcddgddde ZFdfdg ZGdhdi ZHdjdk ZIdldm ZJdndo ZKdpdq ZLdrds ZMdtdu ZNdvdw ZOdxdy ZPdzd{ ZQd|d} ZRd~d ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zidd Zjdd Zkdd Zlej%&ddddggdd Zmdd Zndd Zodd Zpdd Zqdd Zrdd ZsddĄ ZtddƄ Zuej%&ddddddgddggej%&dddddggddτ Zvddф Zwej%&dddggej%&ddgddggej%j&ddgd gdgdged ged ged ddddڍejxddddލejyd gddejyd gddejydgddgdddddddddddgdej%&ddddgej%&d9dddYdXd\d^dgdd Zzdd Z{dd Z|dd Z}dd Z~dd Zdd  Zdd Zdd Zej%&dddggdd Zej%&d	d
dddededddgifddededededededgifddededededededgifgdd Zdd Zdd Zdd Zej%&deddgddejdddgdgd d! Zd"d# Zd$d% Zej%&d&d'd(d)gd*d+ Zd,d- Zej%&d.ed/dfeddfed0dfed1dfed2dfed3dfed/dfeddfed0dfed1dfed2dfed3dfgd4d5 Zd6d7 Zej%&d8d\d9d
gd:d; Zd<d= Zd>d? Zej%je d@dAej%&dBd\dCdDgfd]dEdFgfgdGdH Zej%je d@dAdIdJ ZdKdL ZdMdN ZdOdP ZdQdR Zej%&dcddgdSdT ZdUdV ZdWdX ZdYdZ Zd[d\ Zd]d^ Zd_d` Zdadb Zdcdd Zdedf Zdgdh Zej%&d8d\didjd^gdkdl Zej%&dmdndogdpdq Zej%&drdsdtgdudv Zej%&dwdxdejfgdydz Zej%&d{d|d}d~ddgdddddgd~ddd~gfd|d}d~dddgddddddgd~ddd~gfgdd Zej%&ddؐddddgdd Zej%dej%&ddddddgdd Zdd Zdd ZdS (      )datetime)DecimalN)IS64)PerformanceWarningSpecificationError)Categorical	DataFrameGrouperIndex
MultiIndex
RangeIndexSeries	Timedelta	Timestamp
date_rangeto_datetime)BooleanArray)get_groupby_method_argsc                  C   s$   t tddd} d}| |ks td S )NAB)keylevelz<Grouper(key='A', level='B', axis=0, sort=False, dropna=True))reprr	   AssertionError)resultexpected r   E/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/groupby/test_groupby.py	test_repr!   s    r   c            	      C   s   t jddd} t| }|d d d  d9  < |d}|td |d< |tdd	d
 |d< t j|jd< |tt	dd }|
 }td}td}t|d ||||gtdd}t|||d}t|| d S )Nz1 Day'  periods      r   r   r   UTCtzCi  z2887 days 11:21:02.326710176z2886 days 00:42:34.664668096indexr   r   r'   )pdZtimedelta_ranger   to_framer   NaTilocgroupbylistrangestdr   nparanger   tmassert_frame_equal)	Ztdiserdfgbr   Ztd1Ztd4Zexp_serr   r   r   r   test_groupby_std_datetimelike(   s    
 r;   dtypeint64int32float64Zfloat32c              	      s  t tdd td| d}td}tj| ||}|jdd dd}|D ]\}}t|dksTtqT|	tj
}|d dkstt||tj
 t||
  t|tj|  |d	d }|d
d }|d dkstt|| ||}	tj|		tj
|dd |	tj
tjg}d}
tjt|
d |	tj
tjd W 5 Q R X dddd | fdd}|d dkstd}
tjt|
d |	dd  W 5 Q R X d S )N	      r*   r<   c                 S   s   | d S NrA   r   xr   r   r   <lambda>K       ztest_basic.<locals>.<lambda>F
group_keys   c                 S   s   | |    S NsumrD   r   r   r   rF   W   rG   c                 S   s   | |    S rK   rL   rD   r   r   r   rF   X   rG         Zcheck_index_typenested renamer is not supportedmatch)onetwo
         )r   rJ   r#   c                    s    | j  |   S rK   )namemeanrD   Zgroup_constantsr   r   rF   i   rG      zMust produce aggregated valuec                 S   s   | d S Nr#   r   rD   r   r   r   rF   p   rG   )r   r4   r5   randomshufflereindexr0   lenr   	aggregaterZ   r6   assert_series_equalaggrM   apply	transformr3   pytestraisesr   	Exception)r<   datar*   groupedkvaggedr   transformedZvalue_groupedmsgr   r[   r   
test_basicC   s@    



  rq   c           	      C   s   | j jd }| |}| }| |d }|j jtjksDt|j jtj	ksVtt
j||dd | }tt||d< dd }|d|}|j}|j}t
|| d S )	Nr   OFrP   valuec                 S   s   | j | d   S )Nrs   )locidxmaxgroupr   r   r   	max_value   s    z/test_groupby_nonobject_dtype.<locals>.max_valuer   )r*   codesr0   rM   astyper<   r4   int8r   r=   r6   r7   copyr2   ra   re   dtypesrc   )	mframeZdf_mixed_floatsr   rk   r   r   r9   rx   Zappliedr   r   r   test_groupby_nonobject_dtypes   s    
r   c            	      C   s  t dddddddgttdddtdddd	} d
d }| d dg }| d|dg }t	|| dd }| d|dg }|
 }tj|jd< t	|| dd }| d|dg }|
 }tj|jd< t	|| dd }| d|dg }| d dg }tj|jd< t	|| dd }| d|}| d d 
 }tj|jd< d |_t|| d S )NTigerZLambPonyrN   r=   r<   Z20130101r    r+   c                 S   s
   | j d S Nr   )r/   grpr   r   r   f_0   s    z*test_inconsistent_return_type.<locals>.f_0r   r   c                 S   s   | j dkrd S | jd S )Nr   r   rY   r/   r   r   r   r   f_1   s    
z*test_inconsistent_return_type.<locals>.f_1c                 S   s   | j dkrd S | jd S Nr   r   r   r   r   r   r   f_2   s    
z*test_inconsistent_return_type.<locals>.f_2c                 S   s   | j dkrd S | jd S r   r   r   r   r   r   f_3   s    
z*test_inconsistent_return_type.<locals>.f_3r'   c                 S   s   | j dkrd S | jd jd S )Nr   r   r'   )rY   r/   rt   r   r   r   r   f_4   s    
z*test_inconsistent_return_type.<locals>.f_4)r   r   r4   r5   r   r0   firstre   r6   r7   r|   nanrt   r,   r.   rY   rc   )	r9   r   r   r   r   er   r   r   r   r   r   test_inconsistent_return_type   s>    
r   c                 C   s  ddd}dd }|  dd }|jtjddd}|jtjddd}|jtjddd}|d	}||}	t|| t|| t||	 |j|dd
}|j|dd
}|j|dd
}t|| t|| t||	 dD ]}
|j dd |
d}|jtjddd}|t	jd	}|d	}tj
||dd t
|| |t	jdd	g}|dd	g}tj
||dd |j|dd
}|jt	jd	d
}t
|| tj
||dd qd S )Nr   c                 S   s   t j| ||dS )Naxisr4   
percentile)rE   qr   r   r   r   f   s    z test_pass_args_kwargs.<locals>.fc                 S   s   t j| dddS )NP   r   r   r   rD   r   r   r   rF      rG   z'test_pass_args_kwargs.<locals>.<lambda>c                 S   s   | j S rK   monthrD   r   r   r   rF      rG   r   r   皙?)r   )TFc                 S   s   | j S rK   r   rD   r   r   r   rF      rG   as_indexFZcheck_namesg?)Nr   )r0   rd   r4   r   re   rf   quantiler6   rc   r   r7   )tstsframer   gZ
ts_groupedZ
agg_resultZapply_resultZtrans_resultZagg_expectedZtrans_expectedr   
df_groupedr   Zexpected_seqr   r   r   test_pass_args_kwargs   s>    



r   r   TFc                 C   s   ddddg| _ | jdd |d}|jtjddd	}| | jjd
k d| | jjdk dd}t|j	}|j
tj|_|sttd|_t|| d S )Nr   r   r'   c                 S   s   | j S rK   r   rD   r   r   r   rF      rG   z9test_pass_args_kwargs_duplicate_columns.<locals>.<lambda>r   r   r   r   rJ   r   r#   rJ   r#   )columnsr0   rd   r4   r   r*   r   r   r   Trz   r>   r
   r2   r6   r7   )r   r   r:   resZex_datar   r   r   r   'test_pass_args_kwargs_duplicate_columns   s    
r   c                  C   s   t  } | dd dd dd g}t|t| ks8t| dd dd g}tdd | jD }t||ksrtttjgd	 d
dd	gd} t| ddkstt| dd	kstt| ddgd	kstd S )Nc                 S   s   | j S rK   yearrD   r   r   r   rF     rG   ztest_len.<locals>.<lambda>c                 S   s   | j S rK   r   rD   r   r   r   rF     rG   c                 S   s   | j S rK   dayrD   r   r   r   rF     rG   c                 S   s   | j S rK   r   rD   r   r   r   rF     rG   c                 S   s   | j S rK   r   rD   r   r   r   rF     rG   c                 S   s   h | ]}|j |jfqS r   )r   r   .0rE   r   r   r   	<setcomp>  s     ztest_len.<locals>.<setcomp>rA   rJ   r#   abr   r   r   )	r6   makeTimeDataFramer0   ra   r   r*   r   r4   r   )r9   rk   r   r   r   r   test_len
  s    r   c                  C   sN   t dd ttddd D } tjdd }t |}| |}|  d S )Nc                 S   s   g | ]}d | qS )      ?r   r   r   r   r   
<listcomp>  s     z)test_basic_regression.<locals>.<listcomp>rJ   rV   iL  g      $@)r   r1   r2   r4   r^   r0   rZ   )r   rj   	groupingsrk   r   r   r   test_basic_regression  s
     
r   Zint16r{   c                 C   s   t td}ttd|| d}ttjdddtjtjddtjdg
|d}||}|t}tddgddgd}t	j
||dd	 d
d }||}tddgddgd}t	
|| d S )NrV   r   foobarr)      r#   F)Zcheck_dtypec                 S   s   t t| S rK   )floatra   rD   r   r   r   r   :  s    ztest_with_na_groups.<locals>.f      @       @)r
   r4   r5   r   onesr   r0   rd   ra   r6   rc   )r<   r*   valueslabelsrk   rn   r   r   r   r   r   test_with_na_groups%  s    


r   c               	   C   s8  dd } dd }dd }t ddddgtd	td
dd}t ddddgtd	td
dd}|d| }|d| }t|| d}tjt|d |d| W 5 Q R X tjt|d |d| W 5 Q R X tjt|d |d| W 5 Q R X tjt|d |d| W 5 Q R X d S )Nc                 S   sb   | | j d dk d }|jrLtg gd g gd ddgd}tdg|d}|S |ddg}|S d S )Nr#   rJ   r   clevelsry   namesr   r   r*   )r   emptyr   r   	set_indexrE   yZ
multiindexr   r   r   r   f1F  s    z,test_indices_concatenation_order.<locals>.f1c                 S   s8   | | j d dk d }|jr"t S |ddg}|S d S )Nr#   rJ   r   r   )r   r   r   r   )rE   r   r   r   r   f2P  s
    z,test_indices_concatenation_order.<locals>.f2c                 S   sV   | | j d dk d }|jrNtg gd g gd ddgd}tddg|d}|S |S d S )	Nr#   rJ   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   f3X  s      z,test_indices_concatenation_order.<locals>.f3rJ   r#   r   r"   r@   r   r   r   rA   r   z@Cannot concat indices that do not have the same number of levelsrR   )	r   r2   r0   re   r6   r7   rg   rh   r   )r   r   r   r9   df2result1result2rp   r   r   r    test_indices_concatenation_orderC  s"    
""r   c              	   C   s   |  dd }| }|dd }t|| | }dd |D }t|j}t|| |j	}|dd }t|| d}t
jt|d t|d	 W 5 Q R X d S )
Nc                 S   s   |   S rK   weekdayrD   r   r   r   rF   {  rG   z#test_attr_wrapper.<locals>.<lambda>c                 S   s   t j| ddS )NrJ   )Zddof)r4   r3   rD   r   r   r   rF   ~  rG   c                 S   s   i | ]\}}||  qS r   )describe)r   rY   Zgpr   r   r   
<dictcomp>  s      z%test_attr_wrapper.<locals>.<dictcomp>c                 S   s   | j S rK   r   rD   r   r   r   rF     rG   z-'SeriesGroupBy' object has no attribute 'foo'rR   r   )r0   r3   rd   r6   rc   r   r   r   r7   r<   rg   rh   AttributeErrorgetattr)r   rk   r   r   rp   r   r   r   test_attr_wrapperz  s    
r   c                 C   sr  |  dd }|tj}t|dks*tt|jdks<t|  }dd |jD |d< | dtj}t	j
||dd	 | d
 dd }|dd }t|d
kstt|jdkst|dd }|D ]2\}}| }|jD ]}	t	j||	|dd	 qq|D ]"\}
}|jd  |
kstq|j}|j}| D ],\}}| j|| }||k s@tq@d S )Nc                 S   s   |   S rK   r   rD   r   r   r   rF     rG   z$test_frame_groupby.<locals>.<lambda>r"   r   c                 S   s   g | ]}|  qS r   r   r   r   r   r   r     s     z&test_frame_groupby.<locals>.<listcomp>r   Fr   rX   c                 S   s   |   S rK   r   rD   r   r   r   rF     rG   c                 S   s   | |    S rK   rZ   rD   r   r   r   rF     rG   c                 S   s   |   S rK   r   rD   r   r   r   rF     rG   r   )r0   rb   r4   rZ   ra   r   r   r|   r*   r6   r7   headrf   rc   xsr   groupsindicesitemstakeall)r   rk   
aggregatedZtscopyZstraggedro   rY   rw   rZ   idxr   r   r   rl   rm   Z	samethingr   r   r   test_frame_groupby  s0    
r   c                 C   s   ddddd}| j |dd}|tj}t|t| ks<tt|jdksNtdd }| jj |dd}t	|
|j|
| |D ]\}}t|jdkstqd S )Nr   rJ   r   r   r'   Dr   r#   c                 S   s   | |    S rK   r   rD   r   r   r   rF     rG   z,test_frame_groupby_columns.<locals>.<lambda>)r0   rb   r4   rZ   ra   r   r   r   r6   r7   rf   )r   mappingrk   r   tfZgroupedTrl   rm   r   r   r   test_frame_groupby_columns  s    r   c              	   C   s0  |  d}|jdd}|jjdks&t| j dddjdd}|jjdksLt|ddg tj}|jjdkspt|tjtjd}|jjdkst|d  }|jjdkst|d tj}|jjdkst|d tjtjg}|jjdkstd	}tj	t
|d
 |d tjtjd W 5 Q R X d S )Nr   Tnumeric_onlyFr   r'   r   r'   r   rQ   rR   r   r   )r0   rZ   r*   rY   r   rd   r4   r3   rg   rh   r   )r9   rk   r   rp   r   r   r   test_frame_set_name_single  s$    
r   c                 C   s   | d }| d }|  |j|jg}|jdd}|  ddg }tj|jd d ddgf |jd d ddgf dd ttj	d	tj	d	t
d
d
d
dddgt
ddddddgdddddddgd} |  ddg}|tj d S )Nr   r   Tr   r'   r   Fr      r   r   12)v1v2k1k2rT   rU   threeZfourZfivesixr)   r   r   )r0   getrZ   r6   r7   rt   r   r4   r^   randnarrayrd   rM   )r9   Zcol1Zcol2rk   rn   r   r   r   r   test_multi_func  s(      


r   c                 C   sR   |  ddgd }|tjtjg}t|tj|tjd}t|| d S )Nr   r   r'   )rZ   r3   )r0   rd   r4   rZ   r3   r   r6   r7   )r9   rk   rn   r   r   r   r   !test_multi_key_multiple_functions  s    r   c                  C   s   t dddddddddddgdddddddddddgtjdtjdtjdd} | ddg}tjtjg}||}tj	|d	 ||d
 ||d |gd	d
dgdd}t
|jtstt
|jtstt|| d S )Nr   r   rT   rU      )r   r   r   EFr   r   r   r   r   rJ   )keysr   )r   r4   r^   r   r0   rZ   r3   rd   r,   concat
isinstancer*   r   r   r6   r7   )rj   rk   funcsrn   r   r   r   r   "test_frame_multi_key_function_list  sR    


"
&r  c                  C   s   t dddddddddddgdddddddddddgdddddddddddgtjdtjdtjdd} | d	d
g}tjtjg}tjt	dd |
| W 5 Q R X d S )Nr   r   rT   rU   ZdullZshinyr   )r   r   r'   r   r   r   r   r   z+Could not convert dullshinyshiny to numericrR   )r   r4   r^   r   r0   rZ   r3   rg   rh   	TypeErrorrd   )rj   rk   r  r   r   r   2test_frame_multi_key_function_list_partial_failure<  s\    


/r  opc                 C   s   |   S rK   rL   rD   r   r   r   rF   r  rG   rF   c                 C   s   |   S rK   r   rD   r   r   r   rF   r  rG   c              	   C   s"  | }| ddg}||}g }g }| dD ]J\}}| dD ]6\}	}
|||	f |||
jd d ddgf  q>q,tj|ddgd}tj|ddj}||_dD ]8}||| }|| }|| }t	
|| t	
|| q|d  |d |d g }| ddg d }t	
|| d S )	Nr   r   r'   r   r   rJ   r   r   )r0   appendrt   r   from_tuplesr,   r  r   r*   r6   rc   rZ   )r9   r  rj   rk   r   r  r   Zn1Zgp1Zn2Zgp2mir   colZ
result_colZpivotedexpr   r   r   r   test_groupby_multiple_columnsr  s*    $r  c                  C   s   t ddgddgddggddgd} | jdd	d
d d}tddgdd}t|| | jdd	ddd dd }tdddgdtdddgd}t|| d S )NrJ   r#   r   r"   r   r   r   r   Fr   rY   T)r   rI   c                 S   s   |   S rK   )cumsumrD   r   r   r   rF     rG   z-test_as_index_select_column.<locals>.<lambda>)r   r   )r   rJ   r   rY   r*   )	r   r0   	get_groupr   r6   rc   re   r   r  r9   r   r   r   r   r   test_as_index_select_column  s    "  r  c                  C   sf   t tdddgddd} | jdddd jdd	}t | jd d
 tdd}d g|j_t|| d S )Nr   r   r'   alphar  r  F)byr   r   r#   r   r   )	r   r
   r0   rM   r   r2   r   r6   r7   )r9   leftr   r   r   r   0test_groupby_as_index_select_column_sum_empty_df  s
    
r  c              	   C   s"  | j ddd}|ddg tj}|jdd}t|| |tjtjd}|jdd}| d |d< t|| | j ddd}d	}tjt	|d
 |d dtji W 5 Q R X | j ddgdd}|tj}| }t|| |tjtjd}| }| d |d< t|| |d  }t
|jddid}|d dtji}t|| t
tjddddddgd} ttjddddd}	|  |	}
|
d t|
t|  |	t dD ]P}| j |	dd}
t|
| }| j |	jdd}
t|
| jdd}t|| qd S )Nr   Fr   r'   r   Tr   r   rQ   rR   Qr   r  r   d   )2   rA   ZjimZjoeZjolier"   rV   r  r  )rZ   maxcountru   r  r   drop)r0   rd   r4   rZ   r6   r7   rM   rg   rh   r   r   renamer^   randintr   nthre   r   r   reset_index)r9   rk   r   r   r   	expected2rp   Z	expected3Zresult3r   Zgrattrr  rightr   r   r   test_groupby_as_index_agg  sF    

r)  c                 C   s   | dkrt d|   ttjjddddddgd	}t|d|  }| d
krZ|d
}|	 }| d
kr|d 
|d j|d< |jddd}t||  }t|| || }t|| t|d |  }t|| |d | }t|| d S )N)Zcorrwithr$  ngroupz!GH 5755: Test not applicable for r   r"   )r  r#   )sizer   r   r  r+  Fr   )rg   skipr   r4   r^   r#  r   r0   r"  r%  rz   r<   r6   r7   rd   )Zreduction_funcr9   r   r   r   r   r   r   test_ops_not_as_index  s$    

r-  c                 C   s:  | j ddd}| j ddgdd}|d tj}|tjjd d ddgf }t|ts\tt	|| |d tj}|tjjd d dddgf }t|tstt	|| |d  }| jd d ddgf }t|tstt	|| |d  }| jd d dddgf }t|ts*tt	|| d S )Nr   Fr   r   r'   )
r0   rd   r4   rM   rt   r  r   r   r6   r7   )r9   rk   Zgrouped2r   r   r   r&  r   r   r   !test_as_index_series_return_frame  s$     r.  c              	   C   s>   | j ddd}d}tjt|d |d d W 5 Q R X d S )Nr   Fr   zColumn\(s\) C already selectedrR   r'   r   )r0   rg   rh   
IndexError__getitem__r9   rk   rp   r   r   r   (test_as_index_series_column_slice_raises  s    r2  c                 C   s   | }|j ddd}|jdd}| dgjdd}|dd|j tt||_t|| |j ddgdd}| }| ddg }tt	|jj
 }|dd|d  |dd|d  tt||_t|| d S )	Nr   Fr   Tr   r   r   rJ   )r0   rZ   insertr*   r   ra   r6   r7   r1   zipr   )r9   rj   rk   r   r   Zarraysr   r   r   test_groupby_as_index_cython(  s    r5  c                 C   sN   | j ddgdd}|d t}|tjd d dddgf }t|| d S )Nr   r   Fr   r'   )r0   rd   ra   rt   r6   r7   r9   rk   r   r   r   r   r   #test_groupby_as_index_series_scalar?  s    r7  c              	   C   sf   d}t jt|d |jdd dd W 5 Q R X d}t jt|d | jdd dd	d
 W 5 Q R X d S )Nz(as_index=False only valid with DataFramerR   c                 S   s   |   S rK   r   rD   r   r   r   rF   L  rG   z.test_groupby_as_index_corner.<locals>.<lambda>Fr   z$as_index=False only valid for axis=0c                 S   s   |   S rK   )lowerrD   r   r   r   rF   P  rG   rJ   )r   r   )rg   rh   r  r0   
ValueError)r9   r   rp   r   r   r   test_groupby_as_index_cornerI  s    r:  c                  C   s   t  } | dd dd dd g}| }t | j|j | jjdd dd dd gdd	}|d
d }t |j	| j
 t | jj|j |dd }t | jj|j d S )Nc                 S   s   | j S rK   r   rD   r   r   r   rF   U  rG   z+test_groupby_multiple_key.<locals>.<lambda>c                 S   s   | j S rK   r   rD   r   r   r   rF   U  rG   c                 S   s   | j S rK   r   rD   r   r   r   rF   U  rG   c                 S   s   | j S rK   r   rD   r   r   r   rF   Z  rG   c                 S   s   | j S rK   r   rD   r   r   r   rF   Z  rG   c                 S   s   | j S rK   r   rD   r   r   r   rF   Z  rG   rJ   r   c                 S   s   |   S rK   rL   rD   r   r   r   rF   ]  rG   c                 S   s   |   S rK   rL   rD   r   r   r   rF   a  rG   )r6   r   r0   rM   Zassert_almost_equalr   r   rd   assert_index_equalr*   r   )r9   rk   rn   r   r   r   test_groupby_multiple_keyS  s     r<  c                 C   sP   |   } tj| d< | ddg }| ddg }tj|d< t|| d S )Nbadr   r   )r|   r4   r   r0   rZ   r6   r7   )r9   rn   r   r   r   r   test_groupby_multi_cornere  s    

r>  c              	   C   s  |  d}tjtdd |tj W 5 Q R X tjtdd |  W 5 Q R X | jd d dddgf } t	 | d< |  d}d}tjt|d |tj
 W 5 Q R X tjt|d |
  W 5 Q R X | j ddd	d	d
d	d}d}tjt|d |dd  W 5 Q R X d S )Nr   Could not convertrR   r'   r   r   z/datetime64 type does not support sum operationsr   rJ   )r   r'   r   r   r   z does not support reduction 'sum'c                 S   s   | j dddS )Nr   Fr   rL   rD   r   r   r   rF     rG   z)test_raises_on_nuisance.<locals>.<lambda>)r0   rg   rh   r  rd   r4   rZ   rt   r   nowrM   r1  r   r   r   test_raises_on_nuisanceq  s"    

rA  agg_functionr  minc                 C   sv   |  d}t|| }| }t| j| d dkdf | |jd< t| j| d dkdf | |jd< t|| d S )Nr   r   r   )r   r   r   )r   r   )r0   r   r|   rt   r6   r7   )r9   rB  rk   r   r   r   r   r   test_keep_nuisance_agg  s    
$$rD  rM   rZ   prodr3   varsemmedianr   c           
   	   C   s   |  d}d}||krd|sd|dkr&tnt}dddg}tj||d t|||d W 5 Q R X ndt|||d}|s|d	krdd
ddg}n
dddg}t| jd d |f  d||d}	t	||	 d S )Nr   )rF  r3   rG  rZ   rE  rH  )r3   rG  |z[C|c]ould not convertzcan't multiply sequencerR   r   rM   r   r'   r   )
r0   r9  r  joinrg   rh   r   rt   r6   r7   )
r9   rB  r   rk   Zno_drop_nuisanceklassrp   r   r   r   r   r   r   test_omit_nuisance_agg  s    

rL  c              	   C   s0   |  d}tjtdd |  W 5 Q R X d S )Nr   zcould not convertrR   )r0   rg   rh   r  skew)r9   rk   r   r   r   $test_raise_on_nuisance_python_single  s    
rN  c              	   C   sZ   |  ddg}tjtdd |tj W 5 Q R X tjtdd |  W 5 Q R X d S )Nr   r   r?  rR   )r0   rg   rh   r  rd   r4   rZ   )Zthree_grouprk   r   r   r   &test_raise_on_nuisance_python_multiple  s
    rO  c              
   C   s   t tddddddgtddddddgddgd tjdtjdd	}|d
dg}|ddg tj}|jdd}t	|| | dd jdd}|
dd }|d 
tj}t|d | |jjdkstd S )Nr   r   r   r   r   r   rA   r   )r   r   Zk3r   r   r   r   r   r   Tr   r"   r   r   c                 S   s   |   S rK   r   rD   r   r   r   rF     rG   z*test_empty_groups_corner.<locals>.<lambda>r   r   )r   r4   r   r^   r   r0   rd   rZ   r6   r7   re   rc   r*   rY   r   )r~   r9   rk   r   r   rn   Zagged_Ar   r   r   test_empty_groups_corner  s"    



rQ  c               	   C   s:   t dg} d}tjt|d | dd  W 5 Q R X d S )Nr   z5unsupported operand type\(s\) for \+: 'int' and 'str'rR   c                 S   s   | d S )Nr   r   rD   r   r   r   rF     rG   z$test_nonsense_func.<locals>.<lambda>)r   rg   rh   r  r0   )r9   rp   r   r   r   test_nonsense_func  s    
rR  c              	   C   s   | j }d|d< tdddgtdddgg}tjtdd ||tj W 5 Q R X |j	dd|tj}t
|jtstdd	 }tjtd
d ||| W 5 Q R X d S )NZpeekaboo)bazrU   r   rJ   r?  rR   r  c                 S   s   | j dkrtd|  S )N)r   rT   Test error message)rY   r  rM   )r8   r   r   r   aggfun  s    
z5test_wrap_aggregated_output_multindex.<locals>.aggfunrT  )r   r4   r   rg   rh   r  r0   rd   rZ   r!  r  r   r   r   rb   )r~   r9   r  rn   rU  r   r   r   %test_wrap_aggregated_output_multindex  s     rV  c                 C   sh   | j dd }|jjdks t| j dd }|jjdks@t| d j dd }|jjdksdtd S )Nr   rP  r   rJ   secondr   )r0   r  r*   rY   r   )r~   r   r   r   r   test_groupby_level_apply  s    rX  c                    s   |   }ddddd dddd| j dd }| jdd }tj fdd|d D tjd	}tjfd
d|d D tjd	}| | }| | }d\|j_|j_t	|| t	|| d S )Nr   rJ   )r   r   rS  qux)rT   rU   r   rP  c                    s   g | ]}  |qS r   r   r   )mapper0r   r   r   	  s     z-test_groupby_level_mapper.<locals>.<listcomp>r   r   c                    s   g | ]}  |qS r   rZ  r   )mapper1r   r   r     s     rW  )r   rW  )
r%  r0   rM   r4   r   r=   r*   rY   r6   r7   )r~   Z	deleveledZresult0r   Zmapped_level0Zmapped_level1Z	expected0Z	expected1r   )r[  r\  r   test_groupby_level_mapper  s$      r]  c                  C   s  t ddddddddgtddddddddgd	d
} t ddddddgttddd	d
}| jdd }t|| | jdgd }t|| | jdd }t|| | jdgd }t|| d}tjt	|d | jdd W 5 Q R X tjt	|d | jdd W 5 Q R X d}tjt	|d | jg d W 5 Q R X d}tjt	|d | jddgd W 5 Q R X tjt	|d | jddgd W 5 Q R X d}tjt	|d | jdgd W 5 Q R X d S )NrJ   r#   rA   rV   r   r"   rW   r   r   r  r      rN   r   rP  r(   z2level > 0 or level < -1 only valid with MultiIndexrR   zNo group keys passed!z*multiple levels only valid with MultiIndex)
r   r
   r2   r0   rM   r6   rc   rg   rh   r9  )sr   r   rp   r   r   r   test_groupby_level_nonmulti  s4    2$ra  c                  C   sF   t tdd ddddgd} t d}| jdd }t|| d S )Nr         ?       @r   rJ   rj   r*   )rb  y      @      $@rP  )r   r4   r5   r0   rM   r6   rc   )r   r   r   r   r   r   test_groupby_complex6  s    rd  c                  C   s   t dddddddddg} t tjdddgtjdtdddgdd	td
gddd}| jddd }t|| tdddgdd	|_	| jddd }t|| d S )NrJ   y      ?      ?r   rb  r   r   y      ?        r   r  r   objectr*   r   FsortT)
r   r4   r   r=   r
   r0   r  r6   r7   r*   r9   r   r   r   r   r   test_groupby_complex_numbers?  s     rj  c               
   C   s   t dddddddgtdd	d
ddddgd} t ddddddgtdd	ddddgd}| |}| }| || jj }t|| d S )N      @g      "r   g      Y@g      g     K@g@r   r   r   dr   r   r   r)   r   g      @h)	r   r
   r0   rZ   r`   r*   r   r6   rc   )s1s2rk   rn   r  r   r   r   'test_groupby_series_indexed_differentlyV  s     
rp  c                  C   sn  t tddddddddgddddddddgg } t| }tddd	d
g}ttjdd||d}|jdd	 }t
|j| |jddd	 }t
|j|j |jddtj	}t
|j| |jdddd }t
|j| |jddddd }t
|jtddg t
|j|j |d\}}d|d< |jddj	dd}t
|j|jd d  d S )Nr   rS  r   rY  rT   rU   )r   cat)r   dog)r   rq  )r   rr     r   rf  r   rP  rJ   )r   r   c                 S   s   |   S rK   r   rD   r   r   r   rF   }  rG   z0test_groupby_with_hier_columns.<locals>.<lambda>c                 S   s
   |  dS )NrJ   r   rD   r   r   r   rF     rG   r   r   )r   r   Tr   r(   )r1   r4  r   r  r   r4   r^   r   r0   rZ   r6   r;  r   r*   rd   re   r
   Z	sortlevel)Ztuplesr*   r   r9   r   Zsorted_columns_r   r   r   test_groupby_with_hier_columnse  s6    

ru  c                 C   s@   |  | d j}| }|  | d d  }t|| d S )Nr   )r0   r   rM   r"  r6   r7   r6  r   r   r   test_grouping_ndarray  s    rv  c               
   C   s   t dddddgdd} tddd	dd
gdddddgdddddgdddddgdddddgd| d}|ddddg}|tj}| }t|| d S )Nr   rJ   r#   rA   r   r*   r  Zfoo1Zfoo2Zfoo3Zbar1Zbar2Zbaz1Zbaz2Zspam2Zspam3Zspam1rW   rX   (   r  <   )r   r   rS  spamrj   r)   r   r   rS  ry  )r
   r   r0   rd   r4   rZ   r6   r7   )r*   rj   rk   r   r   r   r   r   test_groupby_wrong_multi_labels  s    rz  c                 C   s   |  | d jdd}| j | d ddjdd}|jjdks@td|ksLt|  | d | d g }| j | d | d gdd }|jjdkstd|kstd|kstd S )Nr   Tr   Fr   r   r   r   )r0   rZ   r*   rY   r   r   )r9   r   r   r   r   r   test_groupby_series_with_name  s    r|  c                 C   sR   |  dd }| jdks t| jdks2tdd }||jdksNtd S )Nr   r'   c                 S   s   t | d S r]   )r4   rM   rD   r   r   r   rF     rG   z.test_seriesgroupby_name_attr.<locals>.<lambda>)r0   r  rY   r   rZ   rd   )r9   r   ZtestFuncr   r   r   test_seriesgroupby_name_attr  s
    r}  c               
   C   sx   t ddddddddgddddddddgtjdd tdd} | dgj }| j| j }t	
|| d S )	Nr   r   rT   rU   rs  r   r   r   )r   r4   r^   r   r5   r0   r   r  r   r6   rc   ri  r   r   r   test_consistency_name  s    	r~  c                 C   sx   ddd}dd }|  d|}|jjd ks2t|  d|d}|jjdksTt|  d|}|jjd ksttd S )Nc                 S   s   t dddd|dS )NrJ   r#   rA   r  rZ   Z	omissionsr  )r   )r9   rY   r   r   r   	summarize  s    z0test_groupby_name_propagation.<locals>.summarizec                 S   s   t dddd| jd d dS )NrJ   r#   rA   r  r   r   r  )r   r/   r9   r   r   r   summarize_random_name  s    z<test_groupby_name_propagation.<locals>.summarize_random_namer   metrics)N)r0   re   r   rY   r   )r9   r  r  r  r   r   r   test_groupby_name_propagation  s    
r  c                  C   sJ   t dd tdD } | d}| }| | d  }t|| d S )Nc                 S   s   g | ]}t d qS )rV   )r4   r5   r   r   r   r   r     s     z2test_groupby_nonstring_columns.<locals>.<listcomp>rV   r   )r   r2   r0   rZ   r6   r7   r6  r   r   r   test_groupby_nonstring_columns  s
    
r  c                  C   st   t dddggdddgd} t ddggddgtdgddd}| d }t|| | d }t|| d S )	Nr   rJ   r#   r   r   r  r  r   )r   r
   r0   r   r6   r7   rM   ri  r   r   r   test_groupby_mixed_type_columns  s    "r  c                  C   s`   t d} | t j t| d d df }t tdd}||tj	}|
  s\td S )N)r  r  r   rV   )r4   r   fillr   r   Ztiler2   r0   rd   rH  Zisnar   r   )arrobjZindsr   r   r   r   (test_cython_grouper_series_bug_noncontig  s    
r  c                  C   s^   t tdd} ttjd| d d d d}tjddd}||}dd	 }|	| d S )
NrV   r  r  r#   r)   r   r"   c                 S   s   t ttt| jS rK   )ra   setmapidr*   rD   r   r   r   rF   	  rG   z5test_series_grouper_noncontig_index.<locals>.<lambda>)
r
   r6   Zrands_arrayr   r4   r^   r   r#  r0   rd   )r*   r   r   rk   r   r   r   r   #test_series_grouper_noncontig_index  s    
r  c                  C   s   t td} tjdddddgdd}d	d
 }dd }| |}||}|jtjksXtt	|d t
sjt||}|jtjkstt	|d t
std S )Nr"   r   r   r   rl  r   rr   r   c                 S   s   t t|  S rK   )r   strrZ   rD   r   r   r   convert_fast  s    z>test_convert_objects_leave_decimal_alone.<locals>.convert_fastc                 S   s$   t | jjdksttt|  S r   )ra   r   baser   r   r  rZ   rD   r   r   r   convert_force_pure  s    zDtest_convert_objects_leave_decimal_alone.<locals>.convert_force_purer   )r   r2   r4   r   r0   rd   r<   Zobject_r   r  r   )r`  r   r  r  rk   r   r   r   r   (test_convert_objects_leave_decimal_alone  s    


r  c                  C   st   t g tjdddd} | d jtjks,t| d }tg dtjd}t dt	g |ddi}t
j||d	d
 d S )Nr   r=   r   )rE   r2   rE   rY   r<   r2   rB   T)Z	by_blocks)r   r4   r5   r<   r?   r   r0   r   r
   r   r6   r7   )r9   r   Z	exp_indexr   r   r   r   "test_groupby_dtype_inference_empty$  s    r  c                  C   sb   t dgdgdgd} | ddgd  }tdgtjdgdggddgddd}t|| d S )	NrJ   l    4;PU  )r   rW  rs   r   rW  rs   r	  r  )r   r0   r  r   r   from_productr6   rc   r  r   r   r   $test_groupby_unit64_float_conversion/  s    r  c              	   C   s   |  t| d jdd}|  | d jdd}tj||dd tjtdd  |  t| d d d  W 5 Q R X td	d
gddgt	j
dd} |  ddg }|  | d | d g dg }d S )Nr   Tr   Fr   z^'foo'$rR   r(   r   rJ   rA   r   r#   )r   r   valr   r   r  )r0   r1   rZ   r6   r7   rg   rh   KeyErrorr   r4   r^   r   r  r   r   r   "test_groupby_list_infer_array_like;  s    $ r  c                  C   st   d} t tdd| d}tddgddggd	d
g|d}|td| dd	g }||jd	gt	}t
|| d S )Nr`  z2015-09-29T11:34:44-0700r#   )startr!   freqr   rV   r      Zmetricr   r   r   )r   r  )r   r   r   r0   r	   rZ   r   r*   rz   r   r6   r7   )r  r*   r9   r   r   r   r   r   $test_groupby_keys_same_size_as_indexJ  s      r  c               	   C   s   d} t tjddtdd}tjt| d |d W 5 Q R X t tjddtdd}tjt| d |d W 5 Q R X d S )	Nz^'Z'$rJ   r   ABCDr  rR   Zr#   )	r   r4   r^   r   r1   rg   rh   r  r0   )rp   Zdf1r   r   r   r   test_groupby_one_rowW  s    r  c                  C   s  t tjdtjtdtjtdtjtdtjtdgtjdtjdtjdtjdgd} | d}tdd	gtd
dgg}t|j	
 }t|dkstt||D ]\}}t|j	| | qt|jjd j|  |jdksttdtjdd	gtjdtdtjd
dgtjdi}|jD ]}t|j| ||  qt|td| jdd	g  t|td| jd
dg  tjtdd |tj W 5 Q R X t tjtjtjgtjtjtjgd}|d j dkst|d j dkstdD ]}||}|j	i kst|jdks t|ji ks0ttjtdd |tj W 5 Q R X tjtdd |tj W 5 Q R X qd S )Nrs  z
2013-01-01z
2013-02-01r   r   )r   dtr  r  rJ   rN   rA   r"   r#   r   z2013-01-01 00:00:00r   z2013-02-01 00:00:00z^NaT$rR   )r   natr   r?   r  zdatetime64[ns]z^nan$)!r   r4   r^   r   r   r   r0   r
   sortedr   r  ra   r   r4  r6   r;  r7   grouperr   r  Zngroupsr   Zintpr   assert_numpy_array_equalr  r/   rg   rh   r  r,   r.   r<   )r9   rk   r   r  rl   r   Znan_dfr   r   r   r   test_groupby_nat_excludeb  s^    


  
   
r  c                  C   sD   t tjtjgtjtjgddgd} | ddgj}|i ks@td S )NrJ   r#   r   r   r   )r   r4   r   r0   r   r   r9   r   r   r   r   #test_groupby_two_group_keys_all_nan  s    $r  c                  C   s   t tdd} ddg| d< ddg| d< ddg| d	< d
dg| d< | dgjdd}tddgddgg}t|jt	dd	g t
|j| d S )Nr#   r)   Zg1Zg2rw   r   zerosrJ   r   l1l2labelTr           r   )r   r2   r0   rZ   r4   r   r6   r;  r   r
   r  r   )rl  tmpZ
res_valuesr   r   r   test_groupby_2d_malformed  s    r  c                  C   s   t t dt dt df} t d}t|| || t jdd}|ddddg }|ddddg }t|t|kst	d S )	Nr   i  ia  )r   r   r'   r   r   r   r   r'   r   )
r4   Zconcatenater5   r   r^   r   r0   rM   ra   r   )r   r   r9   r  r(  r   r   r   test_int32_overflow  s    "
r  c                  C   s  t dddgdddgdddgtjdd} d	d
 | dddg jD }t|}| jdddgdd }t	
|jj|dddg  dd
 | dddg jD }t|}| jdddgdd }t	
|jj| dd
 | dddg jD }t|}| jdddgdd }t	
|jj|dddg  t ddddddgddddddgtjdd} | ddgd }| }dd fdd}|| |ddgd d S )Nr   r   rS  rA   r#   rJ   r   )r   r   r   rl  c                 S   s   g | ]}t |qS r   tupler   rowr   r   r   r     s     z+test_groupby_sort_multi.<locals>.<listcomp>r   r   r   Trg  c                 S   s   g | ]}t |qS r   r  r  r   r   r   r     s     c                 S   s   g | ]}t |qS r   r  r   r   r   r   r     s     r   )r   r   rl  rl  c                 S   s   |   S rK   rL   rD   r   r   r   rF     rG   z)test_groupby_sort_multi.<locals>.<lambda>c           	      S   sV   dd | | j D }t|}|| || }| D ]\}}|| |ks8tq8d S )Nc                 S   s   g | ]}t |qS r   r  r  r   r   r   r     s     zCtest_groupby_sort_multi.<locals>._check_groupby.<locals>.<listcomp>)r   comasarray_tuplesafer0   r   r   )	r9   r   r  fieldr   tupsr   rl   rm   r   r   r   _check_groupby  s
    
z/test_groupby_sort_multi.<locals>._check_groupby)r   r4   r^   r   r   r  r  r0   rM   r6   r  r*   )r9   r  r   rk   r  r   r   r   test_groupby_sort_multi  s4    
	


*r  c                  C   sL   t ddddddgdddgd d} | jdd	d
dd }t||  d S )Nr   r   r   r   rS  r#   )r   rY   r   FrH   c                 S   s   | S rK   r   rD   r   r   r   rF     rG   z/test_dont_clobber_name_column.<locals>.<lambda>)r   r0   re   r6   r7   r  r   r   r   test_dont_clobber_name_column  s
    r  c                  C   s   t  } | jdd dd}|dd }dd |D }t|}t || | d jd	d dd}|d
d }dd |D }t|}t || d S )Nc                 S   s   | j S rK   r   rD   r   r   r   rF     rG   z&test_skip_group_keys.<locals>.<lambda>FrH   c                 S   s   | j ddd d S )Nr   r  rA   sort_valuesrD   r   r   r   rF     rG   c                 S   s$   g | ]\}}|j d ddd qS )r   r  NrA   r  r   r   rw   r   r   r   r     s     z(test_skip_group_keys.<locals>.<listcomp>r   c                 S   s   | j S rK   r   rD   r   r   r   rF     rG   c                 S   s   |   d d S rC   r  rD   r   r   r   rF     rG   c                 S   s    g | ]\}}|  d d qS rC   r  r  r   r   r   r     s     )r6   r   r0   re   r,   r  r7   rc   )Ztsfrk   r   piecesr   r   r   r   test_skip_group_keys  s    

r  c                 C   s:   | d   }d |_|| d tj}|jd ks6td S )Nr'   r   )r|   rY   r0   rd   r4   rM   r   )Zfloat_framer`  r   r   r   r   test_no_nonsense_name  s    r  c                  C   s^   t tddd} d| d< dddg| d< | d}|d	d
d}|d jtjksZtd S )Nr@   rA   r   testg?g      ?g?flrM   r+  )r  r#   )	r   r4   r5   reshaper0   rd   r<   r?   r   )rE   rk   r   r   r   r   test_multifunc_sum_bug  s    
r  c                 C   sV   dd }dd }|  dd |}|  dd |}t|tsFtt|| d S )Nc                 S   s   |   |  dS Nr  rC  r  rv   r   r   r   r     s    z(test_handle_dict_return_value.<locals>.fc                 S   s   t |  |  dS r  )r   r  rC  rv   r   r   r   r     s    z(test_handle_dict_return_value.<locals>.gr   r'   )r0   re   r  r   r   r6   rc   )r9   r   r   r   r   r   r   r   test_handle_dict_return_value  s    r  r  r   r   c                    s   dd }dd   fdd}| j |dd}|| |  |  d	 || |d
 | |d
   |d
  |g |d
 | d S )Nc                 S   s   | j d k	st| S rK   )rY   r   rv   r   r   r   r   (  s    ztest_set_group_name.<locals>.fc                 S   s   | j d k	st|  S rK   )rY   r   rM   rv   r   r   r   freduce,  s    z$test_set_group_name.<locals>.freducec                    s    | S rK   r   rD   r  r   r   freducex0  s    z%test_set_group_name.<locals>.freducexFrH   r   r'   )r0   re   rb   rf   )r9   r  r   r  rk   r   r  r   test_set_group_name&  s    


r  c                     s`   t ddddddgtdd} g   fdd}| jdd	d	d
| dddg} |ks\td S )Nr   rJ   r#   r   r   c                    s     | j |  S rK   )r
  rY   r|   rv   r	  r   r   r   G  s    z6test_group_name_available_in_inference_pass.<locals>.fr   F)rh  rI   )r   r4   r5   r0   re   r   )r9   r   Zexpected_namesr   r	  r   +test_group_name_available_in_inference_passA  s     
r  c                 C   sV   |  | d j }|jjd ks$t|  | d j| d jg }|jjdksRtd S )Nr   r   )NN)r0   r   rM   r*   rY   r   r   r  r   r   r   test_no_dummy_key_namesQ  s    r  c               	   C   s   t ddgddggddddddgddddddggddgd} tdddddd	g| d
}t ddgddggdddgdddggddgd} tdddg| d
}|jddgdd }t|| |jddgdd }t||  d S )NrJ   r#   r   r   r   r   rA   r   r"   r)   Fr   rh  T)r   r   r0   r   r6   rc   
sort_index)r*   ZmseriesZmseries_resultr   r   r   r   #test_groupby_sort_multiindex_seriesZ  s       r  c                  C   s   d} t dd| d}tt| t| d|d}ddd	}|d
d }|d|tji}|d|tjdi}t|| d S )N  z2012/1/1Z5min)r  r  r!   )highlowr)   Fc                    s    fdd}|S )z>
        Run an aggregate func on the subset of data.
        c                    sD   | j | jdd   } r,| | jd   t|dkr<d S |S )Nc                 S   s
   | j dk S )Nr   )hourrD   r   r   r   rF   z  rG   zYtest_groupby_reindex_inside_function.<locals>.agg_before.<locals>._func.<locals>.<lambda>r   )rt   r*   r  dropnara   )rj   rl  fixfuncr   r   _funcy  s    zGtest_groupby_reindex_inside_function.<locals>.agg_before.<locals>._funcr   )r  r  r  r   r  r   
agg_beforet  s    z8test_groupby_reindex_inside_function.<locals>.agg_beforec                 S   s   t | j| j| jS rK   )r   r   r   r   rD   r   r   r   rF     rG   z6test_groupby_reindex_inside_function.<locals>.<lambda>r  T)F)	r   r   r4   r5   r0   rd   r  r6   r7   )r!   indr9   r  rk   Zclosure_badZclosure_goodr   r   r   $test_groupby_reindex_inside_functiono  s    
r  c                  C   s   t ddddgddddgddddgd} | dd	g} | jdd	gd
d}|d}tjdddgdd	gd}t dgdgdgg|dgd}t|| d S )Nr   r   r   rl  rJ   r"   )group1group2rs   r  r  Tr  rM   )r   r   )r   rl  r   r   r	  r#   rs   rf  )r   r   r0   rd   r   r  r6   r7   )r9   r   r   r   r  r   r   r   $test_groupby_multiindex_missing_pair  s    



 r  c               	   C   s  t jdddgddgd} tddd	gg| d
}|j s:ttddddgddddgdddd	ggd}|jdddgdd}| }|j rtt	|| |
d }tt |
d }W 5 Q R X t	|| tddddgddddgdddd	gdddg}|j rtddddgfD ]j}dD ]^}|j
||ddtj}|}t	|| | j
||ddtj}| }t	|| q.q&d S )N)r    )b1c1)b2c2r   r   r	  rJ   rA   r   r  r   rl  r  r  r  r  )r   rj   )r*   r   r   r#   rE   r   zrE   r   r   )FTF)r   rh  rI   )r   r  r   r   Z_is_lexsortedr   pivot_tabler%  r6   r7   r0   rZ   Zassert_produces_warningr   r   r*   re   Zdrop_duplicatesr  )Zlexsorted_miZlexsorted_dfZnot_lexsorted_dfr   r   r9   r   rh  r   r   r   %test_groupby_multiindex_not_lexsorted  sZ     
   "  r  c                  C   s  t tddddddgd} | td}|dd }| jdd	d
g }t|| | d }|td}|dd }|dd	d
g}t|| | j	
t| _	| td}|dd }| jdd	d
g }t|| | d }|td}|dd }|dd	d
g}t|| d S )NZABCDEr#   r   rJ   r)   Zababbc                 S   s   t | dkS r]   ra   rD   r   r   r   rF     rG   z4test_index_label_overlaps_location.<locals>.<lambda>rA   r   c                 S   s   t | dkS r]   r  rD   r   r   r   rF     rG   c                 S   s   t | dkS r]   r  rD   r   r   r   rF     rG   c                 S   s   t | dkS r]   r  rD   r   r   r   rF     rG   )r   r1   r0   filterr/   r6   r7   r   rc   r*   rz   r   )r9   r   actualr   r8   r   r   r   "test_index_label_overlaps_location  s(    r  c                  C   s   d} t | }t|d d| d| d}t|d d d| d| d}|d}|d}|d}|d}t|| d S )	Nr   r#   r         @r   r   r   rZ   )r4   r5   r   r0   rf   r6   r7   )nrE   r9   r   r:   r   gb2r   r   r   r   "test_transform_doesnt_clobber_ints  s    
 



r  sort_columnintsfloatsstringsgroup_column
int_groupsstring_groupsc                    s   t ddddddddgddddddddgddd	d
ddddgdddddddd
gddddddddgd}|j d}||} fdd}|| d S )NrA   rJ   r   r  r   r   rs  rN   r   r"   r#   r@   gffffff@g333333@g@g333333g@g?rl  r   wordZword2Z42Z47)r  r  r  r  r  r  c                    s   t | | j d d S )Nr  )r6   r7   r  rD   r  r   r   	test_sort  s    z.test_groupby_preserves_sort.<locals>.test_sort)r   r  r0   re   )r  r  r9   r   r  r   r  r   test_groupby_preserves_sort  s    
r  c               	   C   s~   t tt ddd tddd} | djj| d< | djj	| d< t
jtd	d
 |  jddddd W 5 Q R X d S )NrW   Mr!   r  r   )	eventDateZthenamer  r   r   z	'badname'rR   Zbadnamer  )r*   r   r   Zaggfunc)r   r   r   todaytolistr2   r   r*   r   r   rg   rh   r  r%  r  r  r   r   r   !test_pivot_table_values_key_error  s       r  r   r'   r  r   r  r   rJ   z
US/Easternr%   
2016-01-01rA   r   r  Int64r   ZFloat64booleanboolintr   r  rq  Zdt64Zdt64tzZperiod)idsmethodr'  rd   re   ru   idxminrM  c              	      s  d }t tr>tdkr>dkr>tjjtdd}	|j|	 t t	rTdkrTd}t d t
rndkrnd	}td
tdd}
tdr|
jjk st|
jd d }
|
jd|d|    fdd}fdd}t |
jd tj}|
jd jdk}t t}t trjsdkrd d}tjt|d |  W 5 Q R X t | tr|dd}| }t|| d S dkr@|s|s|r@dkrd}n|rd}n|rd}nd }tjt|d |  W 5 Q R X t | tsd S dkrd S |dd}|
g  }|r0| }t|| d S | }|
|  }|d k	rh||}tdkrd |j_t|| d S )!NrJ   )ru   r  z0attempt to get arg(min|max) of an empty sequence)rh   rS   )rM   rE  r  r   )rE  rM   r=   r+   ABCr  r<   F)rI   r  c                     s.   dkrt  f | S t  f| S d S )Nr'  )r   )kwargs)r:   r  r  r   r   
get_resultv  s    z&test_empty_groupby.<locals>.get_resultc                     sR   t dgjd} t dkr0tj| | g d}nt|  d d}tg g |d}|S )Nr   r   rJ   r	  r  r   )r   r<   ra   r   r  r
   r   )Zlevr   r   )r  r   r   r    get_categorical_invalid_expected|  s    z<test_empty_groupby.<locals>.get_categorical_invalid_expectedr   )rC  r  zCannot perform z with non-ordered CategoricalrR   Tr   )rE  rM   rM  rM  z!does not support reduction 'skew'z datetime64 type does not supportzPeriod type does not supportzcategory type does not support) r  r   ra   rg   markxfailr9  nodeZ
add_markerr   r	  r   r1   hasattrr}   r<   r   r   r/   r0   r,   ZPeriodDtypekindZorderedrh   r  r6   assert_equalr   rz   r*   rY   )r   r  r   r  r  requestZusing_array_managerr  Zoverride_dtyper  r9   r  r  Zis_perZis_dt64Zis_catrp   r   r   r   )r:   r  r  r  r   r   test_empty_groupby1  s~    '
 








r  c                  C   sl   t tjdd} | d tj| d< ddddg| _| j| d dd}|dd	 }|j	| j	k
 shtd S )
Nr   r   rA   rJ   r#   FrH   c                 S   s   | S rK   r   rD   r   r   r   rF     rG   z<test_empty_groupby_apply_nonunique_columns.<locals>.<lambda>)r   r4   r^   r   rz   r=   r   r0   re   r}   r   r   )r9   r:   r   r   r   r   *test_empty_groupby_apply_nonunique_columns  s    r  c               	   C   s   t ddddgddddgddddgddddgd} tjtdd | dddg d	 W 5 Q R X | d	d  }td
gdtdgd	dd}t	|| d S )NrJ   r#   )r   r   r   r   z
('a', 'b')rR   r   r   r   r   r   r  r  )
r   rg   rh   r  r0   rM   r   r
   r6   rc   r  r   r   r   test_tuple_as_grouping  s    



	r  c               	   C   sP   t dtdtddgddggd} tjtdd | d  W 5 Q R X d S )	NrJ   rA   r#   r   rf  z
^\(7, 8\)$rR   )rN   rs  )	r   r2   r   r  rg   rh   r  r0   rZ   r  r   r   r   test_tuple_correct_keyerror  s    $r  c               	   C   s   t dgdggtdgddtddddd	d
} t dddddgdddddggtjddd d gdtddddd	d
}| tddddg}t	|| d S )NrJ   r   Zmycolsr  
2018-01-01r#   r   dti)r!   r  rY   r   ))r   rM   r   )r   ohlcopen)r   r  r  )r   r  r  )r   r  closer	  )r  rM   r  )
r   r
   r   r   r  r0   r	   rd   r6   r7   ri  r   r   r   test_groupby_agg_ohlc_non_first  s    

r"  c                  C   s   t jdftddddftddddftddddfg} tj| dd gd}tddd	d
g|d}|jdd }tdd	gddgd}t	|| d S )Nr   i  rJ   r#   r   rA   dater	  g      @r   r)   rP  r  )
r,   r.   r   r   r  r   r0   rZ   r6   rc   )r   r  r8   r   r   r   r   r   test_groupby_multiindex_nat
  s    r$  c               	   C   sP   t tdtd} t| ddgd}d}tjt|d |g g W 5 Q R X d S )NrV   Zappler   r  z$Grouper and axis must be same lengthrR   )r4  r2   r   rg   rh   r9  r0   )r   r9   rp   r   r   r   test_groupby_empty_list_raises  s
    r%  c                  C   s   ddgddgddgg} dddg}t j| |d}td	d
g|d}|ddg }dgdgg} ddg}t j| |d}tdg|d}t|| d S )NrE   r   r   rl   r   rW  thirdr	  rJ   r#   rc  rA   r)   )r   from_arraysr   r0   rM   r6   rc   )Zindex_arrayZindex_namesrir`  r   eir   r   r   r   8test_groupby_multiindex_series_keys_len_equal_group_axis#  s    
r*  c                  C   s   t jddgddggddgd} tdd	dd	gdd	d
dgd| d}|tdddg}|ddg}|j|jksrt|dtddg}|ddg}|j|jkstd S )Nr   r   r'   r   r  betar	  rJ   r#   rA   r   r   r)   rP  )r   r  r   r0   r	   r   r   )r  r9   r   r   r   r   r   "test_groupby_groups_in_BaseGrouper3  s    "r,  
group_namerE   c                 C   s   t tddddddgddddgd}d	|j_d
|j_|j| dd }|j	|  j	}t
|| dddgddgg}tj|d
dgd}t tddddddg|d}|j| dd }|j	|  j	}t
|| d S )NrO   rA   r   r   rJ   rV   rW   rf  r   rE   r   r   rS  r   rT   rU   x1)	iterablesr      r   )r   r4   r5   r  r*   rY   r   r0   rM   r   r6   r7   r   r  )r-  r9   resultsr   r/  r  r   r   r   test_groupby_axis_1A  s       
"r2  zop, expectedshifttime2019-01-01 12:00:002019-01-01 12:30:00Zbfill2019-01-01 14:00:002019-01-01 14:30:00ffillc                    s   |  ddddddgt dt dd d t dt dgd}t|j fdd	d
}|d}t|| }t|j fdd	d
}t|| d S )Nr   r   r5  r6  r7  r8  )r  r4  c                    s   | j j S rK   r4  r  Ztz_localizerD   r%   r   r   rF     rG   z+test_shift_bfill_ffill_tz.<locals>.<lambda>)r4  r  c                    s   | j j S rK   r:  rD   r%   r   r   rF     rG   )r   r   Zassignr0   r   r6   r7   )Ztz_naive_fixturer  r   rj   r9   rk   r   r   r%   r   test_shift_bfill_ffill_tzW  s    .
r;  c                  C   sD   t d gdd} | dd d}ttjgdd}t|| d S )NrJ   )r   rE   r   rE   rM   r  )r   r0   rf   r   r4   r   r6   rc   )r9   r  r   r   r   r   test_groupby_only_none_group  s    r<  c                  C   sX   t ddddgddddgd} | jd	d
}| }t dddgdddgd}t|| d S )Nr#   r"   r   rs  r   r   rk  r)   r   rP  g      @)r   r0   rZ   r6   rc   )r8   r:   r   r   r   r   r   test_groupby_duplicate_index  s
    r=  c                 C   s8  t dtdddggddddgd	}|d t|d< |d t|d< |ddg}| d
krbd}nd}|jd d dgj| f| }|dgj| f| jd d }| dkr|t}t	|| |d jd d dgj| f| }|d dgj| f| jd d }| dkr(|t}t	|| d S )NrJ   r  rA   r   Zcol_1Zcol_2Zcol_3Zcol_4rj   r   Zfillna)r9  r   r   )Zdiffr3  )
r   r   rz   r
  r   r/   r0   rf   r6   r  )Ztransformation_funcr  r9   argsr   r   r   r   r   test_group_on_empty_multiindex  s,    
""
$$

r@  r   r   r  )r   r   rA  r   r	  c                 C   sn   | dkrt d|   tddgg|d}|dg}t| |}t|| | }|jdks\tt	|j
| d S )N>   r+  r*  cumcountzNot applicable for rJ   r  r   r   )rg   r,  r   r0   r   r   shaper   r6   r;  r   )Zgroupby_funcr   r9   Zgrp_byr?  r   r   r   r   test_dup_labels_output_shape  s    
rD  c           
      C   s   t dddd}tddgddgddgd}d	|j_||_|| }|sL|j}|j|dd
}| }tddgddgd|d}d|j_	|s|j}t
|| |dkr|g  j|dd
}|g  }n&|jg  j|dd
}|jg  tj}| }	t
|	| d S )Nr  r#   r   )r!   rY   rJ   rA   r   )r{  )r   r'   )r   r   )r   rS  )r   r   )r   r   r)   r   )r   r   r   r   r*   Z_get_axis_numberr   r0   ZnuniquerY   r6   r7   rt   rz   r4   r?   )
r   r  r9   Zaxis_numberr:   r   r   r  r  r   r   r   r   test_groupby_crash_on_nunique  s*    

rE  c                  C   s>   t tddddtd} | jdgd }t||  d S )Nr   r@   rA   r   rP  )	r   r4   r5   r  r   r0   rZ   r6   r7   )r   r   r   r   r   test_groupby_list_level	  s    rF  zmax_seq_items, expected)r"   z({0: [0], 1: [1], 2: [2], 3: [3], 4: [4]})r   z%{0: [0], 1: [1], 2: [2], 3: [3], ...})rJ   z{0: [0], ...}c              	   C   sx   t tjdd}|j|d< td| F |dj	 }||ksFt
|t|jj	 }||ksjt
W 5 Q R X d S )Nr"   rJ   r   zdisplay.max_seq_items)r   r4   r^   r   r*   r,   Zoption_contextr0   r   __repr__r   r   r   )Zmax_seq_itemsr   r9   r   r   r   r   test_groups_repr_truncates	  s    

rH  c                  C   s   t ddddddddg} | ddg} | ddg}|j}dtjd	dgtjd
i}t|dksftd}|| || k	 std S )NrJ   r#   c   r   X   r   r   r   r   r   )
r   r   r0   r   r4   r   r=   ra   r   r   )r9   r   r   r   r   r   r   r   6test_group_on_two_row_multiindex_returns_one_tuple_key 	  s    rK  zklass, attr, valuer   rh  rI   Zobservedr  c                 C   sn   t dgdgdgd}|dkr(|d}|jd||i}| t krJ|dg n|d }t||t||ksjtd S )	NrJ   r#   rA   r   r   r   r   )r   )r   r   r0   r   r   )rK  r'  rs   r9   r   r   r   r   r   #test_subsetting_columns_keeps_attrs.	  s    
rL  c               	   C   sX   t dgdgdgdjdddgdd} d}tjt|d | d	d
g   W 5 Q R X d S )NrJ   r#   rA   r+   r   r   z'Cannot subset columns when using axis=1rR   r   r   )r   r0   rg   rh   r9  rM   )r   rS   r   r   r   test_subsetting_columns_axis_1J	  s    &rM  r  anyc                 C   sH   t dgdd}tdgg|d}|dg}t||  j}t|| d S )Nr   r   r  rJ   r  )r
   r   r0   r   r   r6   r;  )r  r   r9   r   r   r   r   r   #test_groupby_column_index_name_lostR	  s
    rO  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dddg }t ddd	ggtdgdddgtd}t	|| d S )Nr   r   r   rm  r   r   r   rl  rJ   r#   rA   r   r+   r   r   r   )r*   r   r<   )
r   rz   re  r   r0   rC  r4   r   r6   r7   r  r   r   r   test_groupby_duplicate_columns\	  s    "
 
  rP  c                  C   sd   t ddddgddddgdd} d| j_| jdd	 }t ddgddgdd}d|j_t|| d S )
NrJ   r#   rA   r   rA  )r*   rY   )r   r   r   rP  )r   r*   rY   r0   lastr6   rc   )r8   r   r   r   r   r   #test_groupby_series_with_tuple_namei	  s    rR  zGH#38778: fail on 32-bit system)reasonzfunc, values     @X@     X@g     @8@g     8@c                 C   sl   ddddddddg}t ddgd ||d}t|d	|  }t ||d
tddgd	dd}t|| d S )N 7yACa   b    7y1rJ   r#   r   rw   r   r   rw   r   r  r)   )r   r   r0   r
   r6   r7   )r  r   rj   r9   r   r   r   r   r   )test_groupby_numerical_stability_sum_means	  s
    r[  c                  C   s~   ddddddddg} t ddgd | | d}|d	 }dgd d
dg ddg ddg }t ||d}tj||dd d S )NrV  rW  rX  rY  rJ   r#   r   rZ  rw   g07yACg17yACga7y1Cgb7y1CrT  rU  r   T)Zcheck_exact)r   r0   r  r6   r7   )rj   r9   r   Zexp_datar   r   r   r   'test_groupby_numerical_stability_cumsum	  s     r\  c                  C   s|   t jdd} t| }tdD ]}t j|j||f< qd|d< |d}|jdd}|ddddd	g jdd}t	
|| d S )
Nr"   rJ   r   Fskipnar   r#   rA   r   )r4   r^   r   r   r2   r   r/   r0   r  r6   r7   )r  r9   ir:   r   r   r   r   r    test_groupby_cumsum_skipna_false	  s    
r`  c                  C   s   t ddd} t| | d  }tj|d< td|d}|d}|jd	d
d}td|d |d tj|d |d d gi}t|| |jd	d	d}td|d |d tjtjtjgi}t|| d S )Nr  r"   r    r   r#   rJ   r{  r   FT)r   r^  r   r   )	r   r   r,   r.   r   r0   r  r6   r7   )r  r8   r9   r:   r   r  r   r   r   test_groupby_cumsum_timedelta64	  s    

,$ra  c                 C   s4   | }|j dd }| |j }t|| d S )Nr   rP  )r0   rZ   r*   r6   rc   )Z(rand_series_with_duplicate_datetimeindexZdupsr   r   r   r   r   !test_groupby_mean_duplicate_index	  s    rb  c                  C   sV   t dddgtjtjtjg} | | j }t g tg tjdtjd}t	
|| d S )NrJ   r#   rA   r   rB   )r   r4   r   r0   r*   rM   r
   r?   r=   r6   rc   )r`  r   r   r   r   r    test_groupby_all_nan_groups_drop	  s    rc  c                 C   s   t g dddgd}|jddg| d}|j|d}| r^tg g gg g gddgd}|sXdgng }ntd}|stdddgnddg}t g ||d	}t|| d S )
Nr   r   r'   r>  r   r   r	  r   r   )r   r0   rM   r   r   r6   r7   )r   r   r9   r:   r   r*   r   r   r   r   r   test_groupby_empty_multi_column	  s    rd  c                  C   s   t ddggddggddggddgggddgd} t dddgddggitddgd	dd
d}| jdgd}| }t|| d S )Nr   rJ   WrV   rW   ZMWrm   r  re  r<   rY   r)   r  )r   r
   r0   rM   r6   r7   r9   r   r:   r   r   r   r   *test_groupby_aggregation_non_numeric_dtype	  s    "  rh  c                  C   s   t dddddgdd tddD dd tddD d} t dd td	d
D dd td	d
D dtddgdddd}| jdgd}| }t|| d S )NrJ   r   c                 S   s   g | ]}t |d qS daysr   r   r_  r   r   r   r   	  s     zDtest_groupby_aggregation_multi_non_numeric_dtype.<locals>.<listcomp>r   c                 S   s   g | ]}t |d  dqS rV   rj  rk  rl  r   r   r   r   	  s     r  c                 S   s   g | ]}t |d qS ri  rk  rl  r   r   r   r   	  s     rN   r@   c                 S   s   g | ]}t |d  dqS rm  rk  rl  r   r   r   r   	  s     r   r  r=   rE   rf  r)   r  )r   r2   r
   r0   rM   r6   r7   rg  r   r   r   0test_groupby_aggregation_multi_non_numeric_dtype	  s    ro  c                  C   s   t dddddgdd tddD ttddd} t tddtd	dgdd	gd
tddgdddd}| jdgd}| }t|| d S )NrJ   r   c                 S   s   g | ]}t |d qS ri  rk  rl  r   r   r   r   	  s     zKtest_groupby_aggregation_numeric_with_non_numeric_dtype.<locals>.<listcomp>r   r  rN   rj  rs  rn  r=   rE   rf  r)   r  )	r   r2   r1   r   r
   r0   rM   r6   r7   rg  r   r   r   7test_groupby_aggregation_numeric_with_non_numeric_dtype	  s    rp  c                  C   s   dddddddddddddddg} t | }||d dk }|d}| }t d	d	d
ggdddgtdgddd}t|| d S )NFTg      %@)
filter_colgroupby_colbool_col	float_colg     4@g     >@rq  rr  r  g$+H@rs  rt  r  r   )r   r0   r3   r
   r6   r7   )Zdictsr9   Z	df_filterZdfgbr   r   r   r   r   test_groupby_filtered_df_std
  s    

ru  c                  C   s   t ttdttdddgddtjddd	gdd	gd
d} | ddgj}dtdft	
dgdtdft	
d	gdtdft	
dgi}||kstd S )Nabcr  z
2018-02-01z
2018-03-01categoryr   r(   r   rJ   )
categoriesr   r   r   z2018-01-01 00:00:00z2018-02-01 00:00:00r   z2018-03-01 00:00:00r#   )r   r   r1   r   r   Z
from_codesr0   r   r   r4   r   r   r  r   r   r   2test_datetime_categorical_multikey_groupby_indices
  s$    


 

 

 
ry  c               	   C   s   dgd dgd  } t jt jdddgt jddddg }t| |gj}dd	g|_d
}tjt|d" |dd	 j	ddd
  W 5 Q R X d S )NZAlicer"   ZBobrJ   r#   rA   r   rY   r  z<__init__\(\) got an unexpected keyword argument 'min_period'rR   )ZwindowZ
min_period)r4   r   r   r   r   rg   rh   r  r0   ZrollingrM   )Zname_lZval_lZtest_dfZresult_error_msgr   r   r   #test_rolling_wrong_param_min_period4
  s    "
rz  c                  C   sv   t dddgdddgdddgd} tjd	d
}| dg|}t ddgdgddgddgdd}t|| d S )NZThomaszThomas Johni  i  i  ZsadZhappy)NameCreditMoodrM   )r}  r|  r{  i	  )r}  r|  r{  )r   r   moder0   rd   r   r6   r7   )r9   Zaggregate_detailsr   Zexpected_resultr   r   r   .test_by_column_values_with_same_starting_value@
  s"    
r  c                  C   sv   d dddgddddgg} t dtj| ddgdd}|jddgd	 }t ddgtjd
dgddgd}t|| d S )NrJ   r   r#   rA   r   r   r	  r)   rP  )r  r#   )r   rA   )r   r   r'  r0   rM   r  r6   rc   )r  r8   r   r   r   r   r   #test_groupby_none_in_first_mi_levelW
  s     r  c                  C   sp   t ddddgddddgddddgd} | jd gd	 }t ddgd
dgdtddgd dd}t|| d S )NrJ   r#   rA   r   r"   r   rN   )Nr   r   r  r@      r  r  r)   )r   r0   rM   r
   r6   r7   r  r   r   r   test_groupby_none_column_nameb
  s    (&r  c                  C   sV   t ddgtjdgtjdgdddgd} dd	 | d
gD }ddg}||ksRtd S )NrJ   r#   r"   r   rE   r   r)   c                 S   s   g | ]\}}|qS r   r   )r   r   rt  r   r   r   r   m
  s     z5test_single_element_list_grouping.<locals>.<listcomp>r   )rJ   )r#   )r   r4   r   r0   r   r  r   r   r   !test_single_element_list_groupingj
  s    (r  r  cumprodc                 C   sj   d}t d|gd}t|d|  | }t ddgitdgddd}| d	krZ|jd
d}t|| d S )Nl   L33ffrJ   r   r   r   r   r  r)   )r  r  Tr   )r   r   r0   r
   r%  r6   r7   )r  r  r9   r   r   r   r   r   #test_groupby_avoid_casting_to_floatr
  s    r  z	func, val)rM   rA   )rE  r#   c                 C   s\   t dddtjgd| d}t|d| }t d|gitdgd| d| d}t|| d S )	NrJ   r#   r   r   r   r   r  rB   )r   r,   NAr   r0   r
   r6   r7   )any_numeric_ea_dtyper  r  r9   r   r   r   r   r   test_groupby_sum_support_mask~
  s    r  z
val, dtype)o   r
  )   Zuintc                 C   s   t d| | gd| dd}|d }t d| d gitdgd| dd| d	d
}t|| |d }t d| | d gi| d	d}t|| |d }t d| |  gitdgd| dd| d	d
}t|| d S )NrJ   r   8r   r   r   r#   r  Z64rB   )r   r0   rM   r
   r6   r7   r  rE  )r  r<   r9   r   r   r   r   r   test_groupby_overflow
  s$    r  zskipna, val)TrA   c                 C   sT   t ddtjdgd| d}|dj|d}t ddtj|gi| d}t|| d S )NrJ   r#   r   r   r   r]  r   )r   r,   r  r0   r  r6   r7   )r  r^  r  r9   r   r   r   r   r   test_groupby_cumsum_mask
  s    r  zval_in, index, val_outr   r   r  r   rk  rS  blahg      @g      &@c                 C   sx   t | dt|ddd}|d }t |dtddddgddd}t|| | d }| }t|| d S )Nr   r  r  )rj   rY   r*   r   rS  r   )r   r
   r0   rM   r6   rc   r-   r7   )Zval_inr*   Zval_outZseriesr   r   r   r   r   (test_groupby_index_name_in_index_content
  s    r  r  rV       r  r  c                 C   s`   t ddg|  d}|d d|d< |d }t d| gitdgddd}t|| d S )NrJ   T)rr  r	  r	  rr  r  r)   )r   eqr0   rM   r
   r6   r7   )r  r9   r   r   r   r   r   test_sum_of_booleans
  s
    r  z<ignore:invalid value encountered in remainder:RuntimeWarningr   tailr$  r   rQ  c                 C   s   t dtjdtjdgtdd}| dkr@t|d| dd	}nt|d|  }| d
krt ddddgitdddgdd}n$t dddgdddgddddgd}t	|| d S )Nr   r   r   r"   r{  r$  r   r   )r  )r   rQ  r   r#   r   r  r)   )
r   r4   r   r2   r   r0   r   r   r6   r7   )r  r9   r   r   r   r   r   test_groupby_method_drop_na
  s     $r  c               	   C   s&  t jdddd} ttdd }|  }||}tjtdd |	  W 5 Q R X tjtdd |
  W 5 Q R X tjtd	d |  W 5 Q R X tjtd
d |  W 5 Q R X | }|dd  }ttdtjd|_t|| | }|d d }ttdtjd|_t|| d S )Nr  r  r   r  rV   z+Period type does not support sum operationsrR   z.Period type does not support cumsum operationsz,Period type does not support prod operationsz/Period type does not support cumprod operationsir   )r,   period_ranger1   r2   Z	to_seriesr0   rg   rh   r  rM   r  rE  r  r  r
   r4   int_r*   r6   rc   rC  )piZgrpsr8   r:   r   r   r   r   r   test_groupby_reduce_period
  s4    
  r  c                  C   sX   t ddddgg} ddddg| _| | d }|j}| jdddgdd}t|| d S )Nr   rJ   r#   rA   r   )r   r   r0   Z_obj_with_exclusionsr   r6   r7   )r9   r:   r   r   r   r   r   *test_obj_with_exclusions_duplicate_columns  s    r  )r   decimalr   Znumpyr4   rg   Zpandas.compatr   Zpandas.errorsr   r   Zpandasr,   r   r   r	   r
   r   r   r   r   r   r   r   Zpandas._testingZ_testingr6   Zpandas.core.arraysr   Zpandas.core.commoncorecommonr  Zpandas.tests.groupbyr   r   r;   r  Zparametrizerq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r)  r-  r.  r2  r5  r7  r:  r<  r>  rA  rD  rL  rN  rO  rQ  rR  rV  rX  r]  ra  rd  rj  rp  ru  rv  rz  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  r  r  r  r  r  r   r  r  r  r  r"  r$  r%  r*  r,  r2  r;  r<  r=  r@  r  rD  rE  rF  rH  rK  rL  rM  rO  rP  rR  r  r[  r\  r`  ra  rb  rc  rd  rh  ro  rp  ru  ry  rz  r  r  r  r  r  r  r  r  r  r  r  filterwarningsr  r  r  r   r   r   r   <module>   sV  4
/>-
 
7(06
 8 	




 	&

?
)		
	4  v

	,

#









	
 	 	 