U
    b@                    @   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	 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mZmZ d dlmZ d dl m!  m"Z# d d	l$m%Z% d
d Z&ej'(dddddgdd Z)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# Z0ej'(dddddd$d%gd&d' Z1d(d) Z2d*d+ Z3d,d- Z4d.d/ Z5d0d1 Z6d2d3 Z7d4d5 Z8d6d7 Z9ej'(d8d9d: d;d: gd<d= Z:d>d? Z;d@dA Z<dBdC Z=dDdE Z>dFdG Z?dHdI Z@dJdK ZAdLdM ZBdNdO ZCdPdQ ZDdRdS ZEdTdU ZFej'(dVdWdXgdYdZ ZGej'(dVd[d\d]d^d_d`gdadb ZHdcdd ZIdedf ZJdgdh ZKdidj ZLdkdl ZMdmdn ZNdodp ZOdqdr ZPdsdt ZQdudv ZRdwdx ZSdydz ZTd{d| ZUd}d~ ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\ej']ddd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zidd Zjdd Zkdd Zldd Zmdd Zndd Zoej'(ddddggdd Zpdd Zqdd Zrdd Zsdd Ztdd Zudd Zvdd ZwddĄ Zxej'(ddddddgddggej'(dddddggdd̈́ Zyddτ Zzej'(dddggej'(ddgddggej'(ddgd gdgdged ged ged dddd؍ej{d gddڍej{d gddڍej{dgddڍg
ej'(ddddgej'(d8ddddXdWd[d]dgej']dej']ddd Z|dd Z}dd Z~dd Zdd Zdd Zdd Zdd Zdd Zej'(dddggdd Zej'(ddddded edddgifdded edededededgifdded eded edededgifgdd Zdd	 Zd
d Zej'(deddgddejdddgdgej']d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d#dfed$dfed%dfed&dfed'dfejed(dej'jd)d*d+ed"dfeddfed#dfed$dfed%dfed&dfed'dfgej']d,d-d. Zd/d0 Zej'(d1d[d2dgd3d4 Zd5d6 Zd7d8 Zej'je d9d*ej'(d:d[d;d<gfd\d=d>gfgd?d@ Zej'je d9d*dAdB ZdCdD ZdEdF Zej'(dGddgdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdS (X      )datetime)DecimalN)IS64)PerformanceWarning)Categorical	DataFrameGrouperIndex
MultiIndex
RangeIndexSeries	Timedelta	Timestamp
date_rangeto_datetime)BooleanArrayFloatingArrayIntegerArray)SpecificationError)"maybe_normalize_deprecated_kernelsc                  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))reprr   AssertionError)resultexpected r   E/tmp/pip-unpacked-wheel-ck39h295/pandas/tests/groupby/test_groupby.py	test_repr#   s    r    dtypeint64Zint32float64Zfloat32c              	      s  t tdd td| d}td}tj| ||}|dd }|D ]\}}t|dksPtqP|	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	      indexr!   c                 S   s   | d S Nr%   r   xr   r   r   <lambda>3       ztest_basic.<locals>.<lambda>   c                 S   s   | |    S Nsumr)   r   r   r   r+   ?   r,   c                 S   s   | |    S r.   r/   r)   r   r   r   r+   @   r,         F)Zcheck_index_typenested renamer is not supportedmatch)onetwo
         )r   r-      c                    s    | j  |   S r.   )namemeanr)   Zgroup_constantsr   r   r+   Q   r,      zMust produce aggregated valuec                 S   s   | d S Nr;   r   r)   r   r   r   r+   X   r,   )r   nparangerandomshufflereindexgroupbylenr   	aggregater=   tmassert_series_equalaggr0   apply	transformstdpytestraisesr   	Exception)r!   datar'   groupedkvaggedr   transformedZvalue_groupedmsgr   r>   r   
test_basic*   s@    



  rY   c           	      C   s   | j jd }| |}| }| |d }t|| | }tt	||d< dd }|d
|}|j}|j}t|| d S )Nr   Ovaluec                 S   s   | j | d   S )Nr[   )locidxmaxgroupr   r   r   	max_valueg   s    z/test_groupby_nonobject_dtype.<locals>.max_valuer   )r'   codesrF   r0   astyperI   assert_frame_equalcopyrangerG   rL   dtypesrJ   )	mframeZdf_mixed_floatsr   rS   r   r   dfr`   Zappliedr   r   r   test_groupby_nonobject_dtype[   s    
ri   c               	   C   s(  t ddddddddddddg} dd	 }tt | jd
dd|}W 5 Q R X t|tshtt ddddddddddddg}dd	 }tt |jd
dd|}W 5 Q R X t|tstt ddgddggddgd}tt |jddd	 }W 5 Q R X t|t s$td S )Nr-   r9   )val1val2   r;      r2   c                 S   s   | d | d    S Nrk   r=   Zdatafr   r   r   func|   s    z&test_groupby_return_type.<locals>.funcrj   T)squeezec                 S   s   | d | d    S rn   ro   rp   r   r   r   rq      s    XYcolumnsF)
r   rI   assert_produces_warningFutureWarningrF   rL   
isinstancer   r   count)df1rq   r   df2rh   r   r   r   test_groupby_return_typep   s4    		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Ponyr1   r"   r!   Z20130101)periodsr   r   Cc                 S   s
   | j d S Nr   )ilocgrpr   r   r   f   s    z(test_inconsistent_return_type.<locals>.fr   r   c                 S   s   | j dkrd S | jd S )Nr~   r   r<   r   r   r   r   r   r      s    
c                 S   s   | j dkrd S | jd S Nr   r   r   r   r   r   r   r      s    
c                 S   s   | j dkrd S | jd S r   r   r   r   r   r   r      s    
r   c                 S   s   | j dkrd S | jd jd S )Nr   r   r   )r<   r   r\   r   r   r   r   r      s    
)r   r   rA   rB   r   rF   firstrL   rI   rc   rd   nanr\   pdNaTr<   rJ   )rh   r   r   r   er   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rA   
percentile)r*   qr   r   r   r   r      s    z test_pass_args_kwargs.<locals>.fc                 S   s   t j| dddS )NP   r   r   r   r)   r   r   r   r+      r,   z'test_pass_args_kwargs.<locals>.<lambda>c                 S   s   | j S r.   monthr)   r   r   r   r+      r,   r   r   皙?)r   )TFc                 S   s   | j S r.   r   r)   r   r   r   r+      r,   as_indexFZcheck_namesg?)Nr   )rF   rK   rA   r   rL   rM   quantilerI   rJ   r   rc   )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	}|s|t
td|_t|| d S )Nr   r   r   c                 S   s   | j S r.   r   r)   r   r   r   r+   	  r,   z9test_pass_args_kwargs_duplicate_columns.<locals>.<lambda>r   r   r   r   r-   r   r;   r-   r;   )rv   rF   rK   rA   r   r'   r   r   r   Tr	   re   rI   rc   )r   r   gb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 r.   yearr)   r   r   r   r+     r,   ztest_len.<locals>.<lambda>c                 S   s   | j S r.   r   r)   r   r   r   r+     r,   c                 S   s   | j S r.   dayr)   r   r   r   r+     r,   c                 S   s   | j S r.   r   r)   r   r   r   r+     r,   c                 S   s   | j S r.   r   r)   r   r   r   r+     r,   c                 S   s   h | ]}|j |jfqS r   )r   r   .0r*   r   r   r   	<setcomp>  s     ztest_len.<locals>.<setcomp>r%   r-   r;   abr   r   r   )	rI   makeTimeDataFramerF   rG   r   r'   r   rA   r   )rh   rS   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>r-   r8   iL  g      $@)r   listre   rA   rC   rF   r=   )r   rR   	groupingsrS   r   r   r   test_basic_regression)  s
     
r   Zint16Zint8c                 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 )Nr8   r   foobarr'      r;   F)Zcheck_dtypec                 S   s   t t| S r.   )floatrG   r)   r   r   r   r   I  s    ztest_with_na_groups.<locals>.f      @       @)r	   rA   rB   r   onesr   rF   rK   rG   rI   rJ   )r!   r'   valueslabelsrS   rV   r   r   r   r   r   test_with_na_groups4  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;   r-   r   clevelsra   namesr   rv   r'   )r   emptyr
   r   	set_indexr*   yZ
multiindexr   r   r   r   f1V  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;   r-   r   r   )r   r   r   r   )r*   r   r   r   r   f2`  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;   r-   r   r   r   r   r   r   )r   r   r
   r   r   r   r   r   f3h  s      z,test_indices_concatenation_order.<locals>.f3r-   r;   r      r$   r   r   r   r%   r   z@Cannot concat indices that do not have the same number of levelsr4   )	r   re   rF   rL   rI   rc   rO   rP   r   )r   r   r   rh   r|   result1result2rX   r   r   r    test_indices_concatenation_orderR  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 r.   weekdayr)   r   r   r   r+     r,   z#test_attr_wrapper.<locals>.<lambda>c                 S   s   t j| ddS )Nr-   )Zddof)rA   rN   r)   r   r   r   r+     r,   c                 S   s   i | ]\}}||  qS r   )describe)r   r<   Zgpr   r   r   
<dictcomp>  s      z%test_attr_wrapper.<locals>.<dictcomp>c                 S   s   | j S r.   r   r)   r   r   r   r+     r,   z-'SeriesGroupBy' object has no attribute 'foo'r4   r   )rF   rN   rK   rI   rJ   r   r   r   rc   r!   rO   rP   AttributeErrorgetattr)r   rS   r   r   rX   r   r   r   test_attr_wrapper  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 r.   r   r)   r   r   r   r+     r,   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   r:   c                 S   s   |   S r.   r   r)   r   r   r   r+     r,   c                 S   s   | |    S r.   ro   r)   r   r   r   r+     r,   c                 S   s   |   S r.   ro   r)   r   r   r   r+     r,   r   )rF   rH   rA   r=   rG   r   rv   rd   r'   rI   rc   headrM   rJ   xsr   groupsindicesitemstakeall)r   rS   
aggregatedZtscopyZstraggedrW   r<   r_   r=   idxr   r   r   rT   rU   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   r-   r   r   r   Dr   r;   c                 S   s   | |    S r.   ro   r)   r   r   r   r+     r,   z,test_frame_groupby_columns.<locals>.<lambda>)rF   rH   rA   r=   rG   r   rv   r   rI   rc   rM   )r   mappingrS   r   tfZgroupedTrT   rU   r   r   r   test_frame_groupby_columns  s    r   c              	   C   s   |  d}| }|jjdks"t| j ddd }|jjdksDt|tj}|jjdks`t|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   Fr   r   r   r   r3   r4   r   r   )rF   r=   r'   r<   r   rK   rA   rN   rO   rP   r   )rh   rS   r   rX   r   r   r   test_frame_set_name_single  s$    
r   c                 C   s   | d }| d }|  |j|jg}| }|  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   r   r   Fr      r   r   12)v1v2k1k2r6   r7   threeZfourZfivesixr   r   r   )rF   getr=   rI   rc   r\   r   rA   rC   randnarrayrK   r0   )rh   Zcol1Zcol2rS   rV   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   )r=   rN   )rF   rK   rA   r=   rN   r   rI   rc   )rh   rS   rV   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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 tj|d 
||d 
||d 
|gdddgdd}t|jtstt|jts
tt|| d S )Nr   r   r6   r7   ZdullZshiny   )r   r   r   r   EFr   r   z&\['C'\] did not aggregate successfullyr4   r   r   r   r-   )keysr   )r   rA   rC   r   rF   r=   rN   rI   rw   rx   rK   r   concatry   r'   r
   r   rc   )rR   rS   funcsrV   r   r   r   r   "test_frame_multi_key_function_list  sr    


/ &r  opc                 C   s   |   S r.   r/   r)   r   r   r   r+   \  r,   r+   c                 C   s   |   S r.   ro   r)   r   r   r   r+   \  r,   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   r-   r   r   )rF   appendr\   r
   from_tuplesr   r   r   r'   rI   rJ   r=   )rh   r  rR   rS   r   r   r   Zn1Zgp1Zn2Zgp2mir   colZ
result_colZpivotedexpr   r   r   r   test_groupby_multiple_columns\  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 }tdddgdtdddgd}t|| d S )Nr-   r;   r   r   r   r   r   ru   Fr   r<   c                 S   s   |   S r.   )cumsumr)   r   r   r   r+     r,   z-test_as_index_select_column.<locals>.<lambda>)r   r   )r   r-   r   r<   r'   )	r   rF   	get_groupr   rI   rJ   rL   r
   r  rh   r   r   r   r   r   test_as_index_select_column}  s    "  r  c                  C   s\   t tdddgddd} | jdddd jdd	}t | jd d
 tdd}t|| d S )Nr   r   r   alphar  ru   F)byr   numeric_onlyr;   r   r   )r   r	   rF   r0   rv   re   rI   rc   )rh   leftr   r   r   r   0test_groupby_as_index_select_column_sum_empty_df  s    r  c              	   C   s  | j ddd}|tj}| }t|| |tjtj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   Tr3   r4   r   Qr   ru   r   d   )2   r%   ZjimZjoeZjolier   r8   r  r  )r=   maxrz   r]   r  r   )Zdrop)rF   rK   rA   r=   rI   rc   r0   rO   rP   r   r   renamerC   randintr   nthrL   r   r   reset_index)rh   rS   r   r   r   	expected2rX   Z	expected3Zresult3r   Zgrattrr  rightr   r   r   test_groupby_as_index_agg  sF    

r"  c                 C   s  | dkrt d | dkr$t d ttjjddddd	d
gd}t|d	|  }| dkrf|d}|	 }| dkr|d	 
|d	 j|d	< |jd	dd}t||  }t|| || }t|| t|d
 |  }t|| |d
 | }t|| d S )N)corrwithzTest not applicable)r  ngroupz,Skip until behavior is determined (GH #5755)r   r   )r  r;   )sizer   r   ru   r%  Fr   )rO   skipr   rA   rC   r  r   rF   r  r  rb   r!   rI   rc   rK   )Zreduction_funcrh   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   )
rF   rK   rA   r0   r\   ry   r   r   rI   rc   )rh   rS   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 selectedr4   r   r   )rF   rO   rP   
IndexError__getitem__)rh   rS   rX   r   r   r   (test_as_index_series_column_slice_raises  s    r+  c                 C   s   | }|j ddd}| }| dg }|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   r   r   r-   )rF   r=   insertr'   rA   rB   rG   rI   rc   r   zipr   )rh   rR   rS   r   r   Zarraysr   r   r   test_groupby_as_index_cython  s    r.  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   )rF   rK   rG   r\   rI   rc   rh   rS   r   r   r   r   r   #test_groupby_as_index_series_scalar(  s    r0  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 DataFramer4   c                 S   s   |   S r.   r   r)   r   r   r   r+   5  r,   z.test_groupby_as_index_corner.<locals>.<lambda>Fr   z$as_index=False only valid for axis=0c                 S   s   |   S r.   )lowerr)   r   r   r   r+   9  r,   r-   )r   r   )rO   rP   	TypeErrorrF   
ValueError)rh   r   rX   r   r   r   test_groupby_as_index_corner2  s    r4  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 r.   r   r)   r   r   r   r+   >  r,   z+test_groupby_multiple_key.<locals>.<lambda>c                 S   s   | j S r.   r   r)   r   r   r   r+   >  r,   c                 S   s   | j S r.   r   r)   r   r   r   r+   >  r,   c                 S   s   | j S r.   r   r)   r   r   r   r+   C  r,   c                 S   s   | j S r.   r   r)   r   r   r   r+   C  r,   c                 S   s   | j S r.   r   r)   r   r   r   r+   C  r,   r-   r   c                 S   s   |   S r.   r/   r)   r   r   r   r+   F  r,   c                 S   s   |   S r.   r/   r)   r   r   r   r+   J  r,   )rI   r   rF   r0   Zassert_almost_equalr   r   rK   assert_index_equalr'   rv   )rh   rS   rV   r   r   r   test_groupby_multiple_key<  s     r6  c                 C   sP   |   } tj| d< | ddg }| ddg }tj|d< t|| d S )Nbadr   r   )rd   rA   r   rF   r=   rI   rc   )rh   rV   r   r   r   r   test_groupby_multi_cornerN  s    

r8  c              	   C   s   |  d}|tj}| }t|| | jd d dddgf } t | d< |  d}|tj	}|	 }t|| | j ddddddd}d	}t
jt|d
 |dd  W 5 Q R X d S )Nr   r   r   r   r   r-   )r   r   r   r   r   z does not support reduction 'sum'r4   c                 S   s   | j dddS )Nr   Fr  r/   r)   r   r   r   r+   k  r,   z$test_omit_nuisance.<locals>.<lambda>)rF   rK   rA   r=   rI   rc   r\   r   nowr0   rO   rP   r2  )rh   rS   rV   r	  r   r   rX   r   r   r   test_omit_nuisanceZ  s    

r:  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   )rF   r   rd   r\   rI   rc   rh   r;  rS   r   r   r   r   r   test_keep_nuisance_aggn  s    
$$r>  r0   r=   prodrN   varmedianc                 C   sL   |  d}t|| }t| jd d dddgf  d| }t|| d S )Nr   r   r   )rF   r   r\   rI   rc   r=  r   r   r   test_omit_nuisance_agg|  s    
&rB  c              	   C   s^   t jtddF | d}| }| jd d dddgf d }t || W 5 Q R X d S )Nalways)Zfilter_levelr   r   r   )rI   rw   rx   rF   skewr\   rc   r/  r   r   r   test_omit_nuisance_warnings  s
    
"rE  c                 C   s2   |  ddg}|tj}| }t|| d S )Nr   r   )rF   rK   rA   r=   rI   rc   )Zthree_grouprS   rV   r	  r   r   r   "test_omit_nuisance_python_multiple  s    rF  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}|tj}| }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   r%   r   )r   r   Zk3r   r   r   r   r   r   r   c                 S   s   |   S r.   ro   r)   r   r   r   r+     r,   z*test_empty_groups_corner.<locals>.<lambda>r   r   )r   rA   r   rC   r   rF   rK   r=   rI   rc   rL   rJ   r'   r<   r   )rg   rh   rS   r   r   rV   Zagged_Ar   r   r   test_empty_groups_corner  s"    



rH  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'r4   c                 S   s   | d S )Nr   r   r)   r   r   r   r+     r,   z$test_nonsense_func.<locals>.<lambda>)r   rO   rP   r2  rF   )rh   rX   r   r   r   test_nonsense_func  s    
rI  c              	   C   s   | j }d|d< tdddgtdddgg}||tj}t|jtsPt	dd }t
jtdd |||}W 5 Q R X t|jd t|jkst	d S )	NZpeekaboo)bazr7   r   r-   c                 S   s   | j dkrtn|  S d S )N)r   r6   )r<   r2  r0   )serr   r   r   aggfun  s    
z5test_wrap_aggregated_output_multindex.<locals>.aggfunzDropping invalid columnsr4   )r   rA   r   rF   rK   r=   ry   rv   r
   r   rI   rw   rx   rH   rG   )rg   rh   r   rV   rL  Zagged2r   r   r   %test_wrap_aggregated_output_multindex  s     rM  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   rG  r   r-   secondr   )rF   rz   r'   r<   r   )rg   r   r   r   r   test_groupby_level_apply  s    rO  c                    s   |   }ddddd dddd| j dd }| jdd }t fdd|d D }tfd	d|d
 D }| | }| | }d\|j_|j_t|| t|| d S )Nr   r-   )r   r   rJ  qux)r6   r7   r   rG  c                    s   g | ]}  |qS r   r   r   )mapper0r   r   r     s     z-test_groupby_level_mapper.<locals>.<listcomp>r   c                    s   g | ]}  |qS r   rQ  r   )mapper1r   r   r     s     rN  )r   rN  )	r  rF   r0   rA   r   r'   r<   rI   rc   )rg   Z	deleveledZresult0r   Zmapped_level0Zmapped_level1Z	expected0Z	expected1r   )rR  rS  r   test_groupby_level_mapper  s    rT  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 )Nr-   r;   r%   r8   r   r   r9   r   r   r  r      r1   r   rG  z2level > 0 or level < -1 only valid with MultiIndexr4   zNo group keys passed!z*multiple levels only valid with MultiIndex)
r   r	   re   rF   r0   rI   rJ   rO   rP   r3  )sr   r   rX   r   r   r   test_groupby_level_nonmulti  s4    2$rY  c               	   C   st   t tdd ddddgd} t d}| jdd }t|| tt | jdd}W 5 Q R X t|| d S )Nr         ?       @r   r-   rR   r'   )rZ  y      @      $@rG  )	r   rA   rB   rF   r0   rI   rJ   rw   rx   )r   r   r   r   r   r   test_groupby_complex	  s    r\  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	d
tdgddd}| jd	dd }t|| tdddgdd	d
|_	| jd	dd }t|| d S )Nr-   y      ?      ?r   rZ  r   r   y      ?        objectr   r!   r<   r   r'   rv   FsortT)
r   rA   r   r"   r	   rF   rz   rI   rc   r'   rh   r   r   r   r   r   test_groupby_complex_numbers  s     rc  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	   rF   r=   rE   r'   r   rI   rJ   )s1s2rS   rV   r	  r   r   r   'test_groupby_series_indexed_differently.  s     
ri  c                  C   sj  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	 }t
|j|jd d  d S )Nr   rJ  r   rP  r6   r7   )r   cat)r   dog)r   rj  )r   rk     r   r_  r   rG  r-   )r   r   c                 S   s   |   S r.   ro   r)   r   r   r   r+   U  r,   z0test_groupby_with_hier_columns.<locals>.<lambda>c                 S   s
   |  dS )Nr-   ro   r)   r   r   r   r+   X  r,   r   r   )r   r   rV  )r   r-  r
   r  r   rA   rC   r   rF   r=   rI   r5  rv   r'   rK   rL   r	   Z	sortlevel)Ztuplesr'   rv   rh   r   Zsorted_columns_r   r   r   test_groupby_with_hier_columns=  s6    

rn  c                 C   s:   |  | d j}| }|  d }tj||dd d S )Nr   Fr   )rF   r   r0   rI   rc   r/  r   r   r   test_grouping_ndarrayc  s      ro  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   r-   r;   r%   r   r'   r  Zfoo1Zfoo2Zfoo3Zbar1Zbar2Zbaz1Zbaz2Zspam2Zspam3Zspam1r9   r:   (   r  <   )r   r   rJ  spamrR   r   r   r   rJ  rr  )r	   r   rF   rK   rA   r=   rI   rc   )r'   rR   rS   r   r   r   r   r   test_groupby_wrong_multi_labelsm  s    rs  c                 C   s   |  | d  }| j | d dd }|jjdks8td|ksDt|  | d | d g }| j | d | d gdd }|jjdkstd|kstd|kstd S )Nr   Fr   r   r   r   )rF   r=   r'   r<   r   r   )rh   r   r   r   r   r   test_groupby_series_with_name  s    ru  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@   )rA   r0   r)   r   r   r   r+     r,   z.test_seriesgroupby_name_attr.<locals>.<lambda>)rF   rz   r<   r   r=   rK   )rh   r   ZtestFuncr   r   r   test_seriesgroupby_name_attr  s
    rv  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   r6   r7   rl  r   r   r   )r   rA   rC   r   rB   rF   r   rz   r   rI   rJ   rb  r   r   r   test_consistency_name  s    	rw  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 )Nr-   r;   r%   rz   r=   Z	omissionsr  )r   )rh   r<   r   r   r   	summarize  s    z0test_groupby_name_propagation.<locals>.summarizec                 S   s   t dddd| jd d dS )Nr-   r;   r%   rx  r   r   r  )r   r   rh   r   r   r   summarize_random_name  s    z<test_groupby_name_propagation.<locals>.summarize_random_namer   metrics)N)rF   rL   rv   r<   r   )rh   ry  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 )r8   )rA   rB   r   r   r   r   r     s     z2test_groupby_nonstring_columns.<locals>.<listcomp>r8   r   )r   re   rF   r=   rI   rc   r/  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   r-   r;   r   r   ru   r  r   )r   r	   rF   r   rI   rc   r0   rb  r   r   r   test_groupby_mixed_type_columns  s    "r  zignore:Mean of:RuntimeWarningc                  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   r8   )rA   r   fillr   r   Ztilere   rF   rK   rA  Zisnar   r   )Z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 )
Nr8   r  r  r;   r   r   r   c                 S   s   t ttt| jS r.   )rG   setmapidr'   r)   r   r   r   r+     r,   z5test_series_grouper_noncontig_index.<locals>.<lambda>)
r	   rI   Zrands_arrayr   rA   rC   r   r  rF   rK   )r'   r   r   rS   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   re  r   rZ   r   c                 S   s   t t|  S r.   )r   strr=   r)   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   )rG   r   baser   r   r  r=   r)   r   r   r   convert_force_pure  s    zDtest_convert_objects_leave_decimal_alone.<locals>.convert_force_purer   )r   re   rA   r   rF   rK   r!   Zobject_r   ry   r   )rX  r   r  r  rS   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   )r*   re   r*   )r<   r!   re   r&   T)Z	by_blocks)r   rA   rB   r!   r#   r   rF   r   r	   r   rI   rc   )rh   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 )	Nr-   l    4;PU  )r   rN  r[   r   rN  r[   r  r  )r   rF   r  r   r
   from_productrI   rJ   r  r   r   r   $test_groupby_unit64_float_conversion  s    r  c              	   C   s   |  t| 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   Fr   z^'foo'$r4   rV  r   r-   r%   r   r;   )r   r   valr   r   r  )rF   r   r=   rI   rc   rO   rP   KeyErrorr   rA   rC   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 )NrX  z2015-09-29T11:34:44-0700r;   )startr   freqr   r8   r      Zmetricr   r   r   )r   r  )r   r   r   rF   r   r=   r   r'   rb   r   rI   rc   )r  r'   rh   r   r   r   r   r   $test_groupby_keys_same_size_as_index)  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'$r-   r   ABCDru   r4   Zr;   )	r   rA   rC   r   r   rO   rP   r  rF   )rX   r{   r|   r   r   r   test_groupby_one_row6  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 )Nrl  z
2013-01-01z
2013-02-01r   r   )r   dtr  r  r-   r1   r%   r   r;   r   z2013-01-01 00:00:00r   z2013-02-01 00:00:00z^NaT$r4   )r   natr   r#   r  zdatetime64[ns]z^nan$)!r   rA   rC   r   r   r   rF   r	   sortedr   r   rG   r   r-  rI   r5  rc   grouperr   r  Zngroupsr   Zintpr   assert_numpy_array_equalr  r   rO   rP   r  r   r   r!   )rh   rS   r   r   rT   r   Znan_dfr   r   r   r   test_groupby_nat_excludeA  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 )Nr-   r;   r   r   r   )r   rA   r   rF   r   r   rh   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 }tddgddgg}t|jt	dd	g t
|j| d S )Nr;   r   Zg1Zg2r_   r   zerosr-   r   l1l2label        r   )r   re   rF   r=   rA   r   rI   r5  rv   r	   r  r   )re  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 )	Ni'  i  ia  )r   r   r   r   r   r   r   r   r   )
rA   ZconcatenaterB   r   rC   r   rF   r0   rG   r   )r   r   rh   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   rJ  r%   r;   r-   r   )r   r   r   re  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   Tr`  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   re  re  c                 S   s   |   S r.   r/   r)   r   r   r   r+     r,   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_tuplesaferF   r   r   )	rh   r   r   fieldr   tupsr   rT   rU   r   r   r   _check_groupby  s
    
z/test_groupby_sort_multi.<locals>._check_groupby)r   rA   rC   r   r   r  r  rF   r0   rI   r  r'   )rh   r  r   rS   r  r   r   r   test_groupby_sort_multi  s4    
	


*r  c                  C   sH   t ddddddgdddgd d} | dd	d
 }t||  d S )Nr   r   r   r   rJ  r;   )r   r<   r   c                 S   s   | S r.   r   r)   r   r   r   r+     r,   z/test_dont_clobber_name_column.<locals>.<lambda>)r   rF   rL   rI   rc   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 r.   r   r)   r   r   r   r+     r,   z&test_skip_group_keys.<locals>.<lambda>F)
group_keysc                 S   s   | j ddd d S )Nr   r  r%   sort_valuesr)   r   r   r   r+     r,   c                 S   s$   g | ]\}}|j d ddd qS )r   r  Nr%   r  r   r   r_   r   r   r   r     s     z(test_skip_group_keys.<locals>.<listcomp>r   c                 S   s   | j S r.   r   r)   r   r   r   r+     r,   c                 S   s   |   d d S r(   r  r)   r   r   r   r+     r,   c                 S   s    g | ]\}}|  d d qS r(   r  r  r   r   r   r     s     )rI   r   rF   rL   r   r   rc   rJ   )ZtsfrS   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   )rd   r<   rF   rK   rA   r0   r   )Zfloat_framerX  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$   r%   r   testg?g      ?g?flr0   r%  )r  r;   )	r   rA   rB   reshaperF   rK   r!   r#   r   )r*   rS   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  r<  r  r^   r   r   r   r     s    z(test_handle_dict_return_value.<locals>.fc                 S   s   t |  |  dS r  )r   r  r<  r^   r   r   r   r     s    z(test_handle_dict_return_value.<locals>.gr   r   )rF   rL   ry   r   r   rI   rJ   )rh   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}|  |}|| |  |  d || |d | |d   |d  |g |d | d S )	Nc                 S   s   | j d k	st| S r.   )r<   r   r^   r   r   r   r     s    ztest_set_group_name.<locals>.fc                 S   s   | j d k	st|  S r.   )r<   r   r0   r^   r   r   r   freduce  s    z$test_set_group_name.<locals>.freducec                    s    | S r.   r   r)   r  r   r   r     s    z test_set_group_name.<locals>.foor   r   )rF   rL   rH   rM   )rh   r  r   r   rS   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   r-   r;   r   r   c                    s     | j |  S r.   )r  r<   rd   r^   r  r   r   r   '  s    z6test_group_name_available_in_inference_pass.<locals>.fr   F)ra  r  )r   rA   rB   rF   rL   r   )rh   r   Zexpected_namesr   r  r   +test_group_name_available_in_inference_pass!  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)rF   r   r0   r'   r<   r   r   r  r   r   r   test_no_dummy_key_names1  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 )Nr-   r;   r   r   r   r   r%   r   r   r   Fr   ra  T)r
   r   rF   r   rI   rJ   
sort_index)r'   ZmseriesZmseries_resultr   r   r   r   #test_groupby_sort_multiindex_series:  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 )Ni  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   )hourr)   r   r   r   r+   [  r,   zYtest_groupby_reindex_inside_function.<locals>.agg_before.<locals>._func.<locals>.<lambda>r   )r\   r'   r  dropnarG   )rR   re  fixrq   r   r   _funcZ  s    zGtest_groupby_reindex_inside_function.<locals>.agg_before.<locals>._funcr   )rq   r  r  r   r  r   
agg_beforeU  s    z8test_groupby_reindex_inside_function.<locals>.agg_beforec                 S   s   t | j| j| jS r.   )r   r   r   r   r)   r   r   r   r+   d  r,   z6test_groupby_reindex_inside_function.<locals>.<lambda>r  T)F)	r   r   rA   rB   rF   rK   r  rI   rc   )r   indrh   r  rS   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   re  r-   r   )group1group2r[   r  r  Tr  r0   )r   r   )r   re  )r   r   r  r;   r[   r_  )r   r   rF   rK   r
   r  rI   rc   )rh   r   r   r   r	  r   r   r   $test_groupby_multiindex_missing_pairk  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 ]f}dD ]Z}|j
||dtj}|}t	|| | j
||dtj}| }t	|| q.q&d S )N)r    )b1c1)b2c2r   r   r  r-   r%   r   ru   r   re  r  r  r  r  )rv   rR   )r'   rv   r   r;   r*   r   zr*   r   r   )FTr  )r
   r  r   rv   Z_is_lexsortedr   pivot_tabler  rI   rc   rF   r=   rw   r   r   r'   rL   Zdrop_duplicatesr  )Zlexsorted_miZlexsorted_dfZnot_lexsorted_dfr   r   rh   r   ra  r   r   r   %test_groupby_multiindex_not_lexsorted  sT     
   " 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   r-   r   Zababbc                 S   s   t | dkS r@   rG   r)   r   r   r   r+     r,   z4test_index_label_overlaps_location.<locals>.<lambda>r%   r   c                 S   s   t | dkS r@   r  r)   r   r   r   r+     r,   c                 S   s   t | dkS r@   r  r)   r   r   r   r+     r,   c                 S   s   t | dkS r@   r  r)   r   r   r   r+     r,   )r   r   rF   filterr   rI   rc   r   rJ   r'   rb   r   )rh   r   actualr   rK  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   r=   )rA   rB   r   rF   rM   rI   rc   )nr*   rh   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 )Nr%   r-   r   r  r   r   rl  r1   r   r   r;   r$   gffffff@g333333@g@g333333g@g?re  r   wordZword2Z42Z47)r  r  r  r  r  r  c                    s   t | | j d d S )Nr  )rI   rc   r  r)   r  r   r   	test_sort  s    z.test_groupby_preserves_sort.<locals>.test_sort)r   r  rF   rL   )r  r  rh   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 )Nr9   M)r   r  r   )	eventDateZthenamer  r   r   z	'badname'r4   Zbadnamerz   )r'   rv   r   Zaggfunc)r   r   r   todaytolistre   r   r'   r   r   rO   rP   r  r  r  rz  r   r   r   !test_pivot_table_values_key_error  s       r  rv   r   r   r   r  r   r-   z
US/EasterntzInt64r   ZFloat64booleanmethodr   rK   rL   r]   idxminmadrD  z-ignore:Dropping invalid columns:FutureWarningz(ignore:.*Select only valid:FutureWarningc              	      sP  d }t |trXt | tsXdkrX|rTdkrTd}d| }	tjjt|	d}
|j|
 nt |trt	|dkrdkrtjjt
dd}
|j|
 nvt |trt	|dkrt | tstjjtd	d}
|j|
 n6t |trt	|dkrd
krtjjtdd}
|j|
 nt |trZt	|dkrZdkrZtjjtdd}
|j|
 nt |ttfrdkrt | trtjjtdd}
|j|
 nndkrt | tst |tjr|jd k	r|rtjjtdd}
|j|
 nt |trd
krd}t |d tr*dkr*d}t|||dtdd}t|drd|j|jk sdt|jd d }|||    fdd}| dkrXdkr|jd jdkrdkrd}	nd}	tjt|	d  |  W 5 Q R X d S d!krt |trdkrd"}	ndkr,d# d$}	nd%}	tjt|	d  |  W 5 Q R X d S ndkrH|jd jdkr| }||g  }t|| d S t |tr| }||g  }t	|dkrd&krtdg|jd'}tj ||gd(d)gd*}tg g |d+}t|| d S |jd t!krH| }||g  }t|| d S d,krt |trt	|dkr| }||g  }t	|dkrtdg|jd'}tj ||g|d*}tg g |d+}n.tdg|jd'}t"||d d-}tg g |d+}t|| d S | }|||  }|d k	r&|#|}t	|dkr@|d |j$_%t|| d S ).N)r0   r?  rD  r  r  z3Cannot interpret 'CategoricalDtype.* as a data typez1Regex pattern "'Categorical' does not implement.*)rP   r5   r-   )r]   r  z0attempt to get arg(min|max) of an empty sequencez 'Categorical' does not implement)r0   r?  z (DataFrame|Series) are differentr;   )r<  r  r0   z(can only perform ops with numeric valuesz>Cannot interpret 'datetime64\[ns, US/Eastern\]' as a data typer  r   )r?  r0   r"   r   ABCru   r!   c                      s&   dkrt   S t  S d S )Nr   )r   r   r   r  r  r   r   
get_result  s    z&test_empty_groupby.<locals>.get_resultr   )r?  r0   rD  r  rD  z!does not support reduction 'skew'z datetime64 type does not supportr4   )r?  r0   rD  r  z!does not support reduction 'mean'zdoes not support reduction ''zcategory type does not supportr?  r   r   r   r  r   )r  r<  r  rD  r  )&ry   r   r   rO   markxfailr   nodeZ
add_markerrG   r3  r2  r   r   r   ZDatetimeIndexr  r   boolr   hasattrrf   r!   r   r   rF   kindrP   r   rI   Zassert_equalr
   r  r]  r	   rb   r'   r<   )rv   r   r   r  r  requestZusing_array_managerZoverride_dtypeZ	right_msgrX   r  rh   r  r   r   Zlevr  cir   r  r   test_empty_groupby  s,   
 
 $ 
  










r  c                  C   sh   t tjdd} | d tj| d< ddddg| _| | d }|dd }|j	| j	k
 sdtd S )Nr   r   r%   r-   r;   c                 S   s   | S r.   r   r)   r   r   r   r+     r,   z<test_empty_groupby_apply_nonunique_columns.<locals>.<lambda>)r   rA   rC   r   rb   r"   rv   rF   rL   rf   r   r   )rh   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 )Nr-   r;   )r   r   r   r   z
('a', 'b')r4   r   r   r   r   r   r  r  )
r   rO   rP   r  rF   r0   r   r	   rI   rJ   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 )	Nr-   r%   r;   r   r_  z
^\(7, 8\)$r4   )r1   rl  )	r   re   r
   r  rO   rP   r  rF   r=   rz  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 )Nr-   r   Zmycolsr  
2018-01-01r;   r   dti)r   r  r<   r   ))r   r0   r   )r   ohlcopen)r   r  r  )r   r  r  )r   r  closer  )r  r0   r  )
r   r	   r   r
   r  rF   r   rK   rI   rc   rb  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  r-   r;   r   r%   dater  g      @r   r   rG  r  )
r   r   r   r
   r  r   rF   r=   rI   rJ   )r   r  rK  r   r   r   r   r   test_groupby_multiindex_nat3  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 )Nr8   Zappler   ru   z$Grouper and axis must be same lengthr4   )r-  re   r   rO   rP   r3  rF   )r   rh   rX   r   r   r   test_groupby_empty_list_raisesC  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 )Nr*   r   r   rT   r   rN  thirdr  r-   r;   r[  r%   r   )r
   Zfrom_arraysr   rF   r0   rI   rJ   )Zindex_arrayZindex_namesrirX  r   eir   r   r   r   8test_groupby_multiindex_series_keys_len_equal_group_axisL  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  r-   r;   r%   r   r   r   rG  )r
   r  r   rF   r   r   r   )r  rh   r   r   r   r   r   "test_groupby_groups_in_BaseGrouper\  s    "r  
group_namer*   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 )Nr2   r%   r   r   r-   r8   r9   r_  r   r*   r   r   rJ  r   r6   r7   x1)	iterablesr      r   )r   rA   rB   r  r'   r<   rv   rF   r0   r   rI   rc   r
   r  )r  rh   resultsr   r!  r  r   r   r   test_groupby_axis_1j  s       
"r$  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:00Z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   r'  r(  r)  r*  )r  r&  c                    s   | j j S r.   r&  r  Ztz_localizer)   r  r   r   r+     r,   z+test_shift_bfill_ffill_tz.<locals>.<lambda>)r&  r  c                    s   | j j S r.   r+  r)   r  r   r   r+     r,   )r   r   ZassignrF   r   rI   rc   )Ztz_naive_fixturer  r   rR   rh   rS   r   r   r  r   test_shift_bfill_ffill_tz  s    .
r,  c                  C   sD   t d gdd} | dd d}ttjgdd}t|| d S )Nr-   )r   r*   r   r*   r0   r  )r   rF   rM   r   rA   r   rI   rJ   )rh   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   rl  r   r   rd  r   r   rG  g      @)r   rF   r=   rI   rJ   )rK  r   r   r   r   r   r   test_groupby_duplicate_index  s
    r.  r   r   r  )r   r   r/  r   r  z)ignore:tshift is deprecated:FutureWarningc                 C   s   | dkrt d t| } tddgg|d}|dg}g }| dkrP|d n6| dkrd|| n"| dkrtd	g|_|dd
g t	|| | }|j
dkstt|j| d S )N>   r%  cumcountr$  zNot applicabler-   ru   r   >   fillnar  r#  Ztshiftr  r   r   )rO   r&  r   r   rF   r  r   r'   extendr   shaper   rI   r5  rv   )Zgroupby_funcr   rh   Zgrp_byargsr   r   r   r   test_dup_labels_output_shape  s     	
r5  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 )Nz
2016-01-01r;   r   )r   r<   r-   r%   r   )rt  )r   r   )r   r   )r   rJ  )r   r   )r   r   r   r   )r   r   rv   r   r'   Z_get_axis_numberr   rF   Znuniquer<   rI   rc   r\   rb   rA   r#   )
r   r  rh   Zaxis_numberr   r   r   r  r	  r   r   r   r   test_groupby_crash_on_nunique  s*    

r6  c                  C   s>   t tddddtd} | jdgd }t||  d S )Nr   r$   r%   r   rG  )	r   rA   rB   r  r   rF   r=   rI   rc   )r   r   r   r   r   test_groupby_list_level	  s    r7  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], ...})r-   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   r-   r   zdisplay.max_seq_items)r   rA   rC   r   r'   r   Zoption_contextrF   r   __repr__r   r   r   )Zmax_seq_itemsr   rh   r   r   r   r   test_groups_repr_truncates	  s    

r9  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 )Nr-   r;   c   r   X   r   r   r   r   r   )
r   r   rF   r   rA   r   r"   rG   r   r   )rh   r   r   r   r   r   r   r   6test_group_on_two_row_multiindex_returns_one_tuple_key4	  s    r<  zklass, attr, valuer   ra  r  rr   Zobservedr  r   z5GH 35443: Attribute currently not passed on to series)reason)Zmarksz:ignore:The `squeeze` parameter is deprecated:FutureWarningc                 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 )	Nr-   r;   r%   r   r   r   r   )r   )r   r   rF   r   r   )klassr   r[   rh   r   r   r   r   r   #test_subsetting_columns_keeps_attrsB	  s     
r?  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 )Nr-   r;   r%   r   r   r   z'Cannot subset columns when using axis=1r4   r   r   )r   rF   rO   rP   r3  r0   )r   r5   r   r   r   test_subsetting_columns_axis_1k	  s    &r@  rq   anyc                 C   sH   t dgdd}tdgg|d}|dg}t||  j}t|| d S )Nr   r   r  r-   ru   )r	   r   rF   r   rv   rI   r5  )rq   r   rh   r   r   r   r   r   #test_groupby_column_index_name_losts	  s
    rB  c                  C   sz   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dddgd}t|| d S )Nr   r   r   rf  r   r   r   re  r-   r;   r%   r   r   r   r   r   ru   )r   rb   r]  rv   rF   r<  rI   rc   r  r   r   r   test_groupby_duplicate_columns}	  s    "rC  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 )
Nr-   r;   r%   r   r/  )r'   r<   )r   r   r   rG  )r   r'   r<   rF   lastrI   rJ   )rK  r   r   r   r   r   #test_groupby_series_with_tuple_name	  s    rE  zGH#38778: fail on 32-bit systemz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    7y1r-   r;   r   r_   r   r   r_   r   r  r   )r   r   rF   r	   rI   rc   )rq   r   rR   rh   r   r   r   r   r   )test_groupby_numerical_stability_sum_mean	  s
    rM  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 )NrH  rI  rJ  rK  r-   r;   r   rL  r_   g07yACg17yACga7y1Cgb7y1CrF  rG  r   T)Zcheck_exact)r   rF   r  rI   rc   )rR   rh   r   Zexp_datar   r   r   r   'test_groupby_numerical_stability_cumsum	  s     rN  c                 C   s4   | }|j dd }| |j }t|| d S )Nr   rG  )rF   r=   r'   rI   rJ   )Z(rand_series_with_duplicate_datetimeindexZdupsr   r   r   r   r   !test_groupby_mean_duplicate_index	  s    rO  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 )Nr-   r;   r%   r   r&   )r   rA   r   rF   r'   r0   r	   r#   r"   rI   rJ   )rX  r   r   r   r   r    test_groupby_all_nan_groups_drop	  s    rP  r  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   )rR   rv   r   r  r  r   r   )r   rF   r0   r
   r   rI   rc   )r   r  rh   r   r   r'   rv   r   r   r   r   test_groupby_empty_multi_column	  s    rQ  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  r-   Wr8   r9   ZMWrU   ru   r]  r^  r   r  )r   r	   rF   r0   rI   rc   rh   r   r   r   r   r   r   *test_groupby_aggregation_non_numeric_dtype	  s    "  rT  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 )Nr-   r   c                 S   s   g | ]}t |d qS daysr   r   ir   r   r   r   	  s     zDtest_groupby_aggregation_multi_non_numeric_dtype.<locals>.<listcomp>r   c                 S   s   g | ]}t |d  dqS r8   rV  rW  rX  r   r   r   r   	  s     r  c                 S   s   g | ]}t |d qS rU  rW  rX  r   r   r   r   	  s     r1   r$   c                 S   s   g | ]}t |d  dqS rZ  rW  rX  r   r   r   r   	  s     )r   r  r"   r*   r^  r   r  )r   re   r	   rF   r0   rI   rc   rS  r   r   r   0test_groupby_aggregation_multi_non_numeric_dtype	  s    r[  c                  C   s|   t dddddgdd tddD ttddd} t ddd	gitddgd
ddd}| jdgd}| }t|| d S )Nr-   r   c                 S   s   g | ]}t |d qS rU  rW  rX  r   r   r   r   	  s     zKtest_groupby_aggregation_numeric_with_non_numeric_dtype.<locals>.<listcomp>r   r  r  r1   rl  r"   r*   r^  r   r  )r   re   r   r	   rF   r0   rI   rc   rS  r   r   r   7test_groupby_aggregation_numeric_with_non_numeric_dtype	  s    
r\  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     >@r]  r^  r  g$+H@r_  r`  r  r   )r   rF   rN   r	   rI   rc   )Zdictsrh   Z	df_filterZdfgbr   r   r   r   r   test_groupby_filtered_df_std
  s    

ra  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   rV  r   r-   )
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   r   r   r   Z
from_codesrF   r   r   rA   r   r   r  r   r   r   2test_datetime_categorical_multikey_groupby_indices
  s$    


 

 

 
re  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Bobr-   r;   r%   r   r<   r  z<__init__\(\) got an unexpected keyword argument 'min_period'r4   )ZwindowZ
min_period)rA   r   r   r   rv   rO   rP   r2  rF   Zrollingr0   )Zname_lZval_lZtest_dfZresult_error_msgr   r   r   #test_rolling_wrong_param_min_period1
  s    "
rf  c               	   C   sf   t dddg} tjtdd | jdd  W 5 Q R X tjtdd | jdd  W 5 Q R X d S )	Nr-   r;   r%   backfillr4   r   rG  pad)r   rI   rw   rx   rF   rg  rh  )rX  r   r   r   test_pad_backfill_deprecation=
  s
    ri  )r   decimalr   ZnumpyrA   rO   Zpandas.compatr   Zpandas.errorsr   Zpandasr   r   r   r   r	   r
   r   r   r   r   r   r   Zpandas._testingZ_testingrI   Zpandas.core.arraysr   r   r   Zpandas.core.baser   Zpandas.core.commoncorecommonr  Zpandas.core.groupby.baser   r    r  ZparametrizerY   ri   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r"  r'  r(  r+  r.  r0  r4  r6  r8  r:  r>  rB  rE  rF  rH  rI  rM  rO  rT  rY  r\  rc  ri  rn  ro  rs  ru  rv  rw  r}  r~  r  filterwarningsr  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  r5  r6  r7  r9  r<  paramr  r?  r@  rB  rC  rE  rM  rN  rO  rP  rQ  rT  r[  r\  ra  re  rf  ri  r   r   r   r   <module>   s  4
0*>-
 
8(@
 	8#	




	 &




?
)		
	2  

 M
	
,

#











	
 	