U
    sVc*o                    @   sJ
  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
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
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" Z0d#d$ Z1ej()dddddd%d&gd'd( Z2d)d* Z3d+d, Z4d-d. Z5d/d0 Z6d1d2 Z7d3d4 Z8d5d6 Z9d7d8 Z:ej()d9d:d; d<d; gd=d> Z;d?d@ Z<dAdB Z=dCdD Z>dEdF Z?dGdH Z@dIdJ ZAdKdL ZBdMdN ZCdOdP ZDdQdR ZEdSdT ZFdUdV ZGej()dWdXdYgdZd[ ZHej()dWd\d]d^d_d`dadbgej()dcejIddgddde ZJdfdg ZKdhdi ZLdjdk ZMdldm ZNdndo ZOdpdq ZPdrds ZQdtdu ZRdvdw ZSdxdy ZTdzd{ ZUd|d} ZVd~d ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^ej(_ddd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zidd Zjdd Zkdd Zldd Zmdd Zndd Zodd Zpdd Zqej()ddddggdd Zrdd Zsdd Ztdd Zudd Zvdd ZwddÄ Zxddń ZyddǄ Zzej()ddddddgddggej()dddddggddЄ Z{dd҄ Z|e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j}d gddݍej}d gddݍej}dgddݍg
ddddddddddg
dej()ddddgej()d9ddddYdXd\d^dgej(_dej(_ddd Z~dd Zdd Zdd Zdd Zdd Zdd 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 Zej(_d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d0dfeddfed1dfed2dfed3dfed4dfed5dfejed6dej(jd7d8d9ed0dfeddfed1dfed2dfed3dfed4dfed5dfgej(_d:d;d< Zd=d> Zej()d?d\d@d	gdAdB ZdCdD ZdEdF Zej(je	 dGd8ej()dHd\dIdJgfd]dKdLgfgdMdN Zej(je	 dGd8dOdP ZdQdR ZdSdT ZdUdV ZdWdX Zej()dcddgdYdZ Zd[d\ Zd]d^ Zd_d` Zdadb Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Zdodp Zej()d?d\dqd^gdrds Zej()dtdudvgdwdx Zej()dydzd{gd|d} Zej()d~ddejfgdd ZdS (      )datetime)DecimalN)lib)IS64)PerformanceWarningSpecificationError)Categorical	DataFrameGrouperIndex
MultiIndex
RangeIndexSeries	Timedelta	Timestamp
date_rangeto_datetime)BooleanArray)"maybe_normalize_deprecated_kernels)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-xj8nt62q/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| ||}|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	      indexr!   c                 S   s   | d S Nr%   r   xr   r   r   <lambda>3       ztest_basic.<locals>.<lambda>F
group_keys   c                 S   s   | |    S Nsumr)   r   r   r   r+   ?   r,   c                 S   s   | |    S r0   r1   r)   r   r   r   r+   @   r,         )Zcheck_index_typenested renamer is not supportedmatch)onetwo
         )r   r/      c                    s    | j  |   S r0   )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aggr2   apply	transformstdpytestraisesr   	Exception)r!   datar'   groupedkvaggedr   transformedZvalue_groupedmsgr   r@   r   
test_basic*   s@    



  r[   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'   codesrH   r2   astyperK   assert_frame_equalcopyrangerI   rN   dtypesrL   )	mframeZdf_mixed_floatsr   rU   r   r   dfrb   Zappliedr   r   r   test_groupby_nonobject_dtype[   s    
rk   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/   r;   )val1val2   r=      r4   c                 S   s   | d | d    S Nrm   r?   Zdatafr   r   r   func|   s    z&test_groupby_return_type.<locals>.funcrl   T)squeezec                 S   s   | d | d    S rp   rq   rr   r   r   r   rs      s    XYcolumnsF)
r	   rK   assert_produces_warningFutureWarningrH   rN   
isinstancer   r   count)df1rs   r   df2rj   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Ponyr3   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   rC   rD   r   rH   firstrN   rK   re   rf   nanr^   pdNaTr>   rL   )rj   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rC   
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 r0   monthr)   r   r   r   r+      r,   r   r   皙?)r   )TFc                 S   s   | j S r0   r   r)   r   r   r   r+      r,   as_indexFZcheck_namesg?)Nr   )rH   rM   rC   r   rN   rO   quantilerK   rL   r	   re   )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 r0   r   r)   r   r   r   r+   	  r,   z9test_pass_args_kwargs_duplicate_columns.<locals>.<lambda>r   r   r   r   r/   r   r=   r/   r=   )rx   rH   rM   rC   r   r'   r   r   r	   Tr   rg   rK   re   )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 r0   yearr)   r   r   r   r+     r,   ztest_len.<locals>.<lambda>c                 S   s   | j S r0   r   r)   r   r   r   r+     r,   c                 S   s   | j S r0   dayr)   r   r   r   r+     r,   c                 S   s   | j S r0   r   r)   r   r   r   r+     r,   c                 S   s   | j S r0   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   )	rK   makeTimeDataFramerH   rI   r   r'   r	   rC   r   )rj   rU   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/   r:   iL  g      $@)r   listrg   rC   rE   rH   r?   )r   rT   	groupingsrU   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 )Nr:   r   foobarr'      r=   F)Zcheck_dtypec                 S   s   t t| S r0   )floatrI   r)   r   r   r   r   I  s    ztest_with_na_groups.<locals>.f      @       @)r   rC   rD   r   onesr   rH   rM   rI   rK   rL   )r!   r'   valueslabelsrU   rX   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levelsrc   namesr   rx   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 levelsr6   )	r	   rg   rH   rN   rK   re   rQ   rR   r   )r   r   r   rj   r~   result1result2rZ   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 r0   weekdayr)   r   r   r   r+     r,   z#test_attr_wrapper.<locals>.<lambda>c                 S   s   t j| ddS )Nr/   )Zddof)rC   rP   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 r0   r   r)   r   r   r   r+     r,   z-'SeriesGroupBy' object has no attribute 'foo'r6   r   )rH   rP   rM   rK   rL   r   r	   r   re   r!   rQ   rR   AttributeErrorgetattr)r   rU   r   r   rZ   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 r0   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 r0   r   r)   r   r   r   r+     r,   c                 S   s   | |    S r0   rq   r)   r   r   r   r+     r,   c                 S   s   |   S r0   rq   r)   r   r   r   r+     r,   r   )rH   rJ   rC   r?   rI   r   rx   rf   r'   rK   re   headrO   rL   xsr   groupsindicesitemstakeall)r   rU   
aggregatedZtscopyZstraggedrY   r>   ra   r?   idxr   r   r   rV   rW   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 r0   rq   r)   r   r   r   r+     r,   z,test_frame_groupby_columns.<locals>.<lambda>)rH   rJ   rC   r?   rI   r   rx   r   rK   re   rO   )r   mappingrU   r   tfZgroupedTrV   rW   r   r   r   test_frame_groupby_columns  s    r   c              	   C   s  |  d}d}tjt|d | }W 5 Q R X |jjdks@ttjt|d | j ddd }W 5 Q R X |jjdks|td}tjt|d |t	j}W 5 Q R X |jjdkstt
jtdd |jt	jdd	 W 5 Q R X |t	jt	jd
}|jjdkst|d  }|jjdks$t|d t	j}|jjdksFt|d t	jt	jg}|jjdksntd}t
jt|d |d t	jt	jd W 5 Q R X d S )Nr   !The default value of numeric_onlyr6   Fr   $The operation <function mean.*failed"got an unexpected keyword argumentTnumeric_onlyr   r   r   r5   r   r   )rH   rK   ry   rz   r?   r'   r>   r   rM   rC   rQ   rR   	TypeErrorrP   r   )rj   rU   rZ   r   r   r   r   test_frame_set_name_single  s2    
r   c                 C   s  | d }| d }|  |j|jg}d}tjt|d  | }|  ddg }W 5 Q R X 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   r6   r   r   Fr      r   r   12)v1v2k1k2r8   r9   threeZfourZfivesixr   r   r   )rH   getrK   ry   rz   r?   re   r^   r	   rC   rE   randnarrayrM   r2   )rj   Zcol1Zcol2rU   rZ   rX   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?   rP   )rH   rM   rC   r?   rP   r	   rK   re   )rj   rU   rX   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   r8   r9   ZdullZshiny   )r   r   r   r   EFr   r   z&\['C'\] did not aggregate successfullyr6   r   r  r  r/   )keysr   )r	   rC   rE   r  rH   r?   rP   rK   ry   rz   rM   r   concatr{   r'   r   r   re   )rT   rU   funcsrX   r   r   r   r   "test_frame_multi_key_function_list'  sr    


/ &r  opc                 C   s   |   S r0   r1   r)   r   r   r   r+   g  r,   r+   c                 C   s   |   S r0   rq   r)   r   r   r   r+   g  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   )rH   appendr^   r   from_tuplesr   r	  r   r'   rK   rL   r?   )rj   r  rT   rU   r   r  r   Zn1Zgp1Zn2Zgp2mir   colZ
result_colZpivotedexpr   r   r   r   test_groupby_multiple_columnsg  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 )Nr/   r=   r   r   r   r   r   rw   Fr   r>   T)r   r.   c                 S   s   |   S r0   )cumsumr)   r   r   r   r+     r,   z-test_as_index_select_column.<locals>.<lambda>)r   r   )r   r/   r   r>   r'   )	r	   rH   	get_groupr   rK   rL   rN   r   r  rj   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  rw   F)byr   r   r=   r   r   )r	   r   rH   r2   rx   rg   rK   re   )rj   leftr   r   r   r   0test_groupby_as_index_select_column_sum_empty_df  s    r  c              	   C   sJ  | j ddd}d}tjt|d |tj}| }W 5 Q R X t|| |tjtjd}tjt|d | }| d |d< W 5 Q R X 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   r6   r   r   Tr5   r   Qr   rw   r   d   )2   r%   ZjimZjoeZjolier   r:   r   r  )r?   maxr|   r_   r  r   Zdrop)rH   rK   ry   rz   rM   rC   r?   re   r2   rQ   rR   r   r	   renamerE   randintr   nthrN   r   r   reset_index)rj   rU   rZ   r   r   r   	expected2Z	expected3Zresult3r   Zgrattrr  rightr   r   r   test_groupby_as_index_agg  sL    

r*  c              	   C   s  | dkrt d|   | dkr$tnd }ttjjdddddd	gd
}tj|dd t	|
d|  }W 5 Q R X | dkr|d}| }| dkr|d |d j|d< |j
ddd}tj|dd t	||  }W 5 Q R X t|| tj|dd || }W 5 Q R X t|| tj|dd t	|d	 |  }W 5 Q R X t|| tj|dd |d	 | }W 5 Q R X t|| d S )N)Zcorrwithr%  ngroupz!GH 5755: Test not applicable for madr   r   )r  r=   )sizer   r   rw   The 'mad' method is deprecatedr6   r-  Fr   )rQ   skiprz   r	   rC   rE   r$  rK   ry   r   rH   r#  r&  rd   r!   re   rM   )Zreduction_funcwarnrj   r   r   r   r   r   r   test_ops_not_as_index  s0    
r1  c              	   C   s  | j ddd}| j ddgdd}d}tjt|d4 |d tj}|tjjd d ddgf }W 5 Q R X t|t	szt
t|| tjtdd |jtjd	d
 W 5 Q R X |d tj}|tjjd d dddgf }t|t	st
t|| |d  }d}tjt|d  | jd d ddgf }W 5 Q R X t|t	sNt
t|| |d  }| jd d dddgf }t|t	st
t|| d S )Nr   Fr   r   z#The operation <function sum.*failedr6   r   r   Tr   r   )rH   rK   ry   rz   rM   rC   r2   r^   r{   r	   r   re   rQ   rR   r   r?   )rj   rU   Zgrouped2rZ   r   r   r   r'  r   r   r   !test_as_index_series_return_frame  s0    ( $r2  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 selectedr6   r   r   )rH   rQ   rR   
IndexError__getitem__)rj   rU   rZ   r   r   r   (test_as_index_series_column_slice_raises#  s    r5  c              	   C   s   | }|j ddd}d}tjt|d | }| dg }W 5 Q R X |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   r6   r   r   r/   )rH   rK   ry   rz   r?   insertr'   rC   rD   rI   re   r   zipr   )rj   rT   rU   rZ   r   r   Zarraysr   r   r   test_groupby_as_index_cython,  s"    r8  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   )rH   rM   rI   r^   rK   re   rj   rU   r   r   r   r   r   #test_groupby_as_index_series_scalarE  s    r:  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 DataFramer6   c                 S   s   |   S r0   r   r)   r   r   r   r+   R  r,   z.test_groupby_as_index_corner.<locals>.<lambda>Fr   z$as_index=False only valid for axis=0c                 S   s   |   S r0   )lowerr)   r   r   r   r+   V  r,   r/   )r   r   )rQ   rR   r   rH   
ValueError)rj   r   rZ   r   r   r   test_groupby_as_index_cornerO  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 r0   r   r)   r   r   r   r+   [  r,   z+test_groupby_multiple_key.<locals>.<lambda>c                 S   s   | j S r0   r   r)   r   r   r   r+   [  r,   c                 S   s   | j S r0   r   r)   r   r   r   r+   [  r,   c                 S   s   | j S r0   r   r)   r   r   r   r+   `  r,   c                 S   s   | j S r0   r   r)   r   r   r   r+   `  r,   c                 S   s   | j S r0   r   r)   r   r   r   r+   `  r,   r/   r   c                 S   s   |   S r0   r1   r)   r   r   r   r+   c  r,   c                 S   s   |   S r0   r1   r)   r   r   r   r+   g  r,   )rK   r   rH   r2   Zassert_almost_equalr   r   rM   assert_index_equalr'   rx   )rj   rU   rX   r   r   r   test_groupby_multiple_keyY  s     r?  c                 C   sP   |   } tj| d< | ddg }| ddg }tj|d< t|| d S )Nbadr   r   )rf   rC   r   rH   r?   rK   re   )rj   rX   r   r   r   r   test_groupby_multi_cornerk  s    

rA  c              	   C   s   |  d}d}tjt|d |tj}| }W 5 Q R X t|| | jd d dddgf } t	
 | d< |  d}tjt|d |tj}| }W 5 Q R X 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   r6   r   r   r  r   r/   )r   r   r   r  r   z does not support reduction 'sum'c                 S   s   | j dddS )Nr   Fr   r1   r)   r   r   r   r+     r,   z$test_omit_nuisance.<locals>.<lambda>)rH   rK   ry   rz   rM   rC   r?   re   r^   r   nowr2   rQ   rR   r   )rj   rU   rZ   rX   r  r   r   r   r   r   test_omit_nuisancew  s"    

rC  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   )rH   r   rf   r^   rK   re   )rj   rD  rU   r   r   r   r   r   test_keep_nuisance_agg  s    
$$rF  r2   r?   prodrP   varsemmedianr   c           
   	   C   sn  |t jks|s|dkrt}nd }| d}|dkrv|dkrv|dkrFtnt}tj|dd t|||d W 5 Q R X n|t jkrd	| }nd
}t	j
||d t|||d}W 5 Q R X |t jks|s|dkrddddg}n
dddg}|dkr|dkrd }n|dkr|dk	rt}nd }d}t	j
||d* t| jd d |f d||d}	W 5 Q R X t	||	 d S )Nr2   r   )rH  rP   rI  FrH  z!could not convert string to floatr6   r   z6The default value of numeric_only in DataFrameGroupBy.Dropping invalid columns)r?   rG  rJ  r   r   r   )r2   rP   rH  rI  Tr   )r   
no_defaultrz   rH   r   r<  rQ   rR   r   rK   ry   r^   re   )
rj   rD  r   r0  rU   klassrZ   r   rx   r   r   r   r   test_omit_nuisance_agg  sB    


rN  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   )rK   ry   rz   rH   skewr^   re   r9  r   r   r   test_omit_nuisance_warnings  s
    
"rQ  c              	   C   sP   |  ddg}d}tjt|d |tj}| }W 5 Q R X t|| d S )Nr   r   r   r6   )rH   rK   ry   rz   rM   rC   r?   re   )Zthree_grouprU   rZ   rX   r  r   r   r   "test_omit_nuisance_python_multiple  s    rR  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}tjt|d |	tj
}|
 }W 5 Q R X 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   r6   r   r   r   c                 S   s   |   S r0   rq   r)   r   r   r   r+     r,   z*test_empty_groups_corner.<locals>.<lambda>r   r   )r	   rC   r  rE   r  rH   rK   ry   rz   rM   r?   re   rN   rL   r'   r>   r   )ri   rj   rU   rZ   r   r   rX   Zagged_Ar   r   r   test_empty_groups_corner  s&    



rT  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'r6   c                 S   s   | d S )Nr   r   r)   r   r   r   r+     r,   z$test_nonsense_func.<locals>.<lambda>)r	   rQ   rR   r   rH   )rj   rZ   r   r   r   test_nonsense_func  s    
rU  c              	   C   s   | j }d|d< tdddgtdddgg}d}tjt|d ||tj}W 5 Q R X t	|j
tsnttjtdd ||jtjdd	 W 5 Q R X d
d }tjtdd |||}W 5 Q R X t|j
d t|j
kstd S )NZpeekaboo)bazr9   r   r/   r   r6   r   Tr   c                 S   s   | j dkrtn|  S d S )N)r   r8   )r>   r   r2   )serr   r   r   aggfun  s    
z5test_wrap_aggregated_output_multindex.<locals>.aggfunrK  )r   rC   r  rK   ry   rz   rH   rM   r?   r{   rx   r   r   rQ   rR   r   rJ   rI   )ri   rj   r  rZ   rX   rX  Zagged2r   r   r   %test_wrap_aggregated_output_multindex  s      rY  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   rS  r   r/   secondr   )rH   r|   r'   r>   r   )ri   r   r   r   r   test_groupby_level_apply  s    r[  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   rV  qux)r8   r9   r   rS  c                    s   g | ]}  |qS r   r   r   )mapper0r   r   r   2  s     z-test_groupby_level_mapper.<locals>.<listcomp>r   c                    s   g | ]}  |qS r   r]  r   )mapper1r   r   r   3  s     rZ  )r   rZ  )	r&  rH   r2   rC   r  r'   r>   rK   re   )ri   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 )Nr/   r=   r%   r:   r   r   r;   r   r   r  r     r3   r   rS  z2level > 0 or level < -1 only valid with MultiIndexr6   zNo group keys passed!z*multiple levels only valid with MultiIndex)
r   r   rg   rH   r2   rK   rL   rQ   rR   r<  )sr   r   rZ   r   r   r   test_groupby_level_nonmulti<  s4    2$re  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/   rT   r'   )rf  y      @      $@rS  )	r   rC   rD   rH   r2   rK   rL   ry   rz   )r   r   r   r   r   r   test_groupby_complex\  s    rh  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 )Nr/   y      ?      ?r   rf  r   r   y      ?        r   r  r   objectr'   rx   FsortT)
r	   rC   r  r"   r   rH   r|   rK   re   r'   rj   r   r   r   r   r   test_groupby_complex_numbersi  s     rn  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   rH   r?   rG   r'   r   rK   rL   )s1s2rU   rX   r  r   r   r   'test_groupby_series_indexed_differently  s     
rt  c                  C   s  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< d}t
jt|d |jdd	 }W 5 Q R X t
|j|jd d  d S )Nr   rV  r   r\  r8   r9   )r   cat)r   dog)r   ru  )r   rv     r   rj  r   rS  r/   )r   r   c                 S   s   |   S r0   rq   r)   r   r   r   r+     r,   z0test_groupby_with_hier_columns.<locals>.<lambda>c                 S   s
   |  dS )Nr/   rq   r)   r   r   r   r+     r,   r   r   )r   r   r   r6   rb  )r   r7  r   r  r	   rC   rE   r  rH   r?   rK   r>  rx   r'   rM   rN   r   Z	sortlevelry   rz   )Ztuplesr'   rx   rj   r   Zsorted_columns_rZ   r   r   r   test_groupby_with_hier_columns  s:    

ry  c              	   C   sX   |  | d j}d}tjt|d | }|  d }W 5 Q R X tj||dd d S )Nr   r   r6   Fr   )rH   r   rK   ry   rz   r2   re   )rj   rU   rZ   r   r   r   r   r   test_grouping_ndarray  s      rz  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spam1r;   r<   (   r   <   )r   r   rV  spamrT   r   r   r   rV  r}  )r   r	   rH   rM   rC   r?   rK   re   )r'   rT   rU   r   r   r   r   r   test_groupby_wrong_multi_labels  s    r~  c              	   C   s   d}t jt|d. | | d  }| j| d dd }W 5 Q R X |jjdksVtd|ksbt| | d | d g }| j| d | d gdd }|jjdkstd|kstd|kstd S )Nr   r6   r   Fr   r   r   r   )	rK   ry   rz   rH   r?   r'   r>   r   r   )rj   rZ   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 rB   )rC   r2   r)   r   r   r   r+     r,   z.test_seriesgroupby_name_attr.<locals>.<lambda>)rH   r|   r>   r   r?   rM   )rj   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   r8   r9   rw  r   r   r   )r	   rC   rE   r  rD   rH   r   r|   r   rK   rL   rm  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 )Nr/   r=   r%   r|   r?   Z	omissionsr  )r   )rj   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%   r  r   r   r  )r   r   rj   r   r   r   summarize_random_name  s    z<test_groupby_name_propagation.<locals>.summarize_random_namer   metrics)N)rH   rN   rx   r>   r   )rj   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 )r:   )rC   rD   r   r   r   r   r     s     z2test_groupby_nonstring_columns.<locals>.<listcomp>r:   r   )r	   rg   rH   r?   rK   re   r9  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   rw   r  r   )r	   r   rH   r   rK   re   r2   rm  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   r:   )rC   r   fillr   r   Ztilerg   rH   rM   rJ  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 )
Nr:   r  r   r=   r   r   r   c                 S   s   t ttt| jS r0   )rI   setmapidr'   r)   r   r   r   r+   ?  r,   z5test_series_grouper_noncontig_index.<locals>.<lambda>)
r   rK   Zrands_arrayr   rC   rE   r  r$  rH   rM   )r'   r   r   rU   r   r   r   r   #test_series_grouper_noncontig_index5  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   rp  r   r\   r   c                 S   s   t t|  S r0   )r   strr?   r)   r   r   r   convert_fastH  s    z>test_convert_objects_leave_decimal_alone.<locals>.convert_fastc                 S   s$   t | jjdksttt|  S r   )rI   r   baser   r   r  r?   r)   r   r   r   convert_force_pureK  s    zDtest_convert_objects_leave_decimal_alone.<locals>.convert_force_purer   )r   rg   rC   r  rH   rM   r!   Zobject_r   r{   r   )rd  r   r  r  rU   r   r   r   r   (test_convert_objects_leave_decimal_aloneC  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*   rg   r*   r>   r!   rg   r&   T)Z	by_blocks)r	   rC   rD   r!   r#   r   rH   r   r   r   rK   re   )rj   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   rZ  r]   r   rZ  r]   r  r  )r	   rH   r!  r   r   from_productrK   rL   r  r   r   r   $test_groupby_unit64_float_conversionf  s    r  c              	   C   s   d}t jt|d. | t| d  }| | d  }W 5 Q R X 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   r6   r   Fr   z^'foo'$rb  r   r/   r%   r   r=   )r   r   valr   r   r  )rK   ry   rz   rH   r   r?   re   rQ   rR   KeyErrorr	   rC   rE   r  )rj   rZ   r   r   r   r   r   "test_groupby_list_infer_array_liker  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 )Nrd  z2015-09-29T11:34:44-0700r=   )startr   freqr   r:   r      Zmetricr   r   r   )r   r  )r   r   r	   rH   r
   r?   r   r'   rd   r   rK   re   )r  r'   rj   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   ABCDrw   r6   Zr=   )	r	   rC   rE   r  r   rQ   rR   r  rH   )rZ   r}   r~   r   r   r   test_groupby_one_row  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 )Nrw  z
2013-01-01z
2013-02-01r   r   )r   dtr  r  r/   r3   r%   r   r=   r   z2013-01-01 00:00:00r   z2013-02-01 00:00:00z^NaT$r6   )r   natr   r#   r  zdatetime64[ns]z^nan$)!r	   rC   rE   r  r   r   rH   r   sortedr   r  rI   r   r7  rK   r>  re   grouperr   r  Zngroupsr  Zintpr   assert_numpy_array_equalr  r   rQ   rR   r  r   r   r!   )rj   rU   r   r  rV   r   Znan_dfr   r   r   r   test_groupby_nat_exclude  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	   rC   r   rH   r   r   rj   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}tjt|d | dg }W 5 Q R X tddgddgg}t	|j
tdd	g t|j| d S )Nr=   r   Zg1Zg2ra   r   zerosr/   r   l1l2labelr   r6           r   )r	   rg   rK   ry   rz   rH   r?   rC   r  r>  rx   r   r  r   )rp  rZ   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   )
rC   ZconcatenaterD   r	   rE   r  rH   r2   rI   r   )r   r   rj   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   rV  r%   r=   r/   r   )r   r   r   rp  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   Trk  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   rp  rp  c                 S   s   |   S r0   r1   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_tuplesaferH   r   r   )	rj   r   r  fieldr   tupsr   rV   rW   r   r   r   _check_groupby  s
    
z/test_groupby_sort_multi.<locals>._check_groupby)r	   rC   rE   r  r   r  r  rH   r2   rK   r  r'   )rj   r  r   rU   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   rV  r=   )r   r>   r   Fr-   c                 S   s   | S r0   r   r)   r   r   r   r+   '  r,   z/test_dont_clobber_name_column.<locals>.<lambda>)r	   rH   rN   rK   re   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 r0   r   r)   r   r   r   r+   /  r,   z&test_skip_group_keys.<locals>.<lambda>Fr-   c                 S   s   | j ddd d S )Nr   r  r%   sort_valuesr)   r   r   r   r+   0  r,   c                 S   s$   g | ]\}}|j d ddd qS )r   r  Nr%   r  r   r   ra   r   r   r   r   2  s     z(test_skip_group_keys.<locals>.<listcomp>r   c                 S   s   | j S r0   r   r)   r   r   r   r+   7  r,   c                 S   s   |   d d S r(   r  r)   r   r   r   r+   8  r,   c                 S   s    g | ]\}}|  d d qS r(   r  r  r   r   r   r   :  s     )rK   r   rH   rN   r   r	  re   rL   )ZtsfrU   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   )rf   r>   rH   rM   rC   r2   r   )Zfloat_framerd  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?flr2   r-  )r  r=   )	r	   rC   rD   reshaperH   rM   r!   r#   r   )r*   rU   r   r   r   r   test_multifunc_sum_bugI  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!  rE  r  r`   r   r   r   r   U  s    z(test_handle_dict_return_value.<locals>.fc                 S   s   t |  |  dS r  )r   r!  rE  r`   r   r   r   r   X  s    z(test_handle_dict_return_value.<locals>.gr   r   )rH   rN   r{   r   r   rK   rL   )rj   r   r   r   r   r   r   r   test_handle_dict_return_valueT  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 r0   )r>   r   r`   r   r   r   r   d  s    ztest_set_group_name.<locals>.fc                 S   s   | j d k	st|  S r0   )r>   r   r2   r`   r   r   r   freduceh  s    z$test_set_group_name.<locals>.freducec                    s    | S r0   r   r)   r  r   r   r   l  s    z test_set_group_name.<locals>.fooFr-   r   r   )rH   rN   rJ   rO   )rj   r  r   r   rU   r   r  r   test_set_group_nameb  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 r0   )r  r>   rf   r`   r  r   r   r     s    z6test_group_name_available_in_inference_pass.<locals>.fr   F)rl  r.   )r	   rC   rD   rH   rN   r   )rj   r   Zexpected_namesr   r  r   +test_group_name_available_in_inference_pass}  s     
r  c              	   C   s   d}t jt|d | | d j }W 5 Q R X |jjd ksBtt jt|d$ | | d j| d jg }W 5 Q R X |jj	dkstd S )Nr   r6   r   r   )NN)
rK   ry   rz   rH   r   r2   r'   r>   r   r   )rj   rZ   r   r   r   r   test_no_dummy_key_names  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   rl  T)r   r   rH   r   rK   rL   
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  dropnarI   )rT   rp  fixrs   r   r   _func  s    zGtest_groupby_reindex_inside_function.<locals>.agg_before.<locals>._funcr   )rs   r  r  r   r  r   
agg_before  s    z8test_groupby_reindex_inside_function.<locals>.agg_beforec                 S   s   t | j| j| jS r0   )r   r   r   r   r)   r   r   r   r+     r,   z6test_groupby_reindex_inside_function.<locals>.<lambda>r  T)F)	r   r	   rC   rD   rH   rM   r!  rK   re   )r   indrj   r  rU   Zclosure_badZclosure_goodr   r   r   $test_groupby_reindex_inside_function  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   rp  r/   r   )group1group2r]   r  r  Tr  r2   )r   r   )r   rp  r   r   r  r=   r]   rj  )r	   r   rH   rM   r   r  rK   re   )rj   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  r/   r%   r   rw   r   rp  r  r  r  r  )rx   rT   )r'   rx   r   r=   r*   r   zr*   r   r   )FTF)r   rl  r.   )r   r  r	   rx   Z_is_lexsortedr   pivot_tabler&  rK   re   rH   r?   ry   r   r   r'   rN   Zdrop_duplicatesr  )Zlexsorted_miZlexsorted_dfZnot_lexsorted_dfr   r   rj   r   rl  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   r/   r   Zababbc                 S   s   t | dkS rB   rI   r)   r   r   r   r+     r,   z4test_index_label_overlaps_location.<locals>.<lambda>r%   r   c                 S   s   t | dkS rB   r  r)   r   r   r   r+     r,   c                 S   s   t | dkS rB   r  r)   r   r   r   r+   %  r,   c                 S   s   t | dkS rB   r  r)   r   r   r   r+   +  r,   )r	   r   rH   filterr   rK   re   r   rL   r'   rd   r   )rj   r   actualr   rW  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?   )rC   rD   r	   rH   rO   rK   re   )nr*   rj   r~   r   r   gb2r   r   r   r   "test_transform_doesnt_clobber_ints0  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   rw  r3   r   r   r=   r$   gffffff@g333333@g@g333333g@g?rp  r   wordZword2Z42Z47)r  r  r  r  r  r  c                    s   t | | j d d S )Nr  )rK   re   r  r)   r  r   r   	test_sortY  s    z.test_groupby_preserves_sort.<locals>.test_sort)r	   r  rH   rN   )r  r  rj   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 )Nr;   M)r   r  r   )	eventDateZthenamer  r   r   z	'badname'r6   Zbadnamer|   )r'   rx   r   Zaggfunc)r	   r   r   todaytolistrg   r   r'   r   r   rQ   rR   r  r&  r  r  r   r   r   !test_pivot_table_values_key_error_  s       r  rx   r   r  r   r  r   r/   z
US/EasterntzInt64r   ZFloat64booleanboolintr   r  ru  Zdt64Zdt64tz)idsmethodr(  rM   rN   r_   idxminr,  rP  z-ignore:Dropping invalid columns:FutureWarningz(ignore:.*Select only valid:FutureWarningc              	      s  d }t |trXt | tsXdkrX|rTdkrTd}d| }	tjjt|	d}
|j|
 nnt |trt	|dkrdkrtjjt
dd}
|j|
 n0t |trt	|dkrt | tstjjtd	d}
|j|
 nt |trt	|dkrd
krtjjtdd}
|j|
 nt |trXt	|dkrXdkrXt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rd}t |d trdkrd}t|||dtdd}t|dr|j|jk st|jd d }|j|dd|    fdd}| dkr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rd#}	ndkrd$ d%}	nd&}	tjt|	d! |  W 5 Q R X d S ndkr|jd jdkrV| }||g  }t|| d S t |tr| }||g  }t	|dkrd'krtdg|jd(}tj||gd)d*gd+}tg g |d,}t|| d S |jd tkr| }||g  }t|| d S d-krt |trt	|dkr| }||g  }t	|dkr~t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)r2   rG  rP  r,  r,  z3Cannot interpret 'CategoricalDtype.* as a data typez1Regex pattern "'Categorical' does not implement.*)rR   r7   r/   )r_   r  z0attempt to get arg(min|max) of an empty sequencez 'Categorical' does not implement)r2   rG  z (DataFrame|Series) are differentr=   )rE  r!  r2   z>Cannot interpret 'datetime64\[ns, US/Eastern\]' as a data typer  r   )rG  r2   r"   r   ABCrw   r!   Fr-   c               
      sj   dkrt nd } tj| ddd@ dkrBt  W  5 Q R  S t W  5 Q R  S W 5 Q R X d S )Nr,  r.  F)r7   Zraise_on_extra_warningsr(  )rz   rK   ry   r   )r0  r   r  r  r   r   
get_result  s      z&test_empty_groupby.<locals>.get_resultr   )rG  r2   rP  r  rP  z!does not support reduction 'skew'z datetime64 type does not supportr6   )rG  r2   rP  r,  z!does not support reduction 'mean'zdoes not support reduction ''zcategory type does not supportrG  r   r   r   r  r   )r,  rE  r!  rP  r  )$r{   r   r   rQ   markxfailr   node
add_markerrI   r<  r   r   ZDatetimeIndexr  r   r
  r	   hasattrrh   r!   r   r   rH   kindrR   r   rK   assert_equalr   r  ri  r   rd   r'   r>   )rx   r  r   r  r  requestZusing_array_managerZoverride_dtypeZ	right_msgrZ   r  rj   r  r   r   Zlevr  cir   r  r   test_empty_groupbyq  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   r%   r/   r=   Fr-   c                 S   s   | S r0   r   r)   r   r   r   r+   a  r,   z<test_empty_groupby_apply_nonunique_columns.<locals>.<lambda>)r	   rC   rE   r  rd   r"   rx   rH   rN   rh   r   r   )rj   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')r6   r   r   r   r   r   r  r  )
r	   rQ   rR   r  rH   r2   r   r   rK   rL   r  r   r   r   test_tuple_as_groupinge  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   rj  z
^\(7, 8\)$r6   )r3   rw  )	r	   rg   r   r  rQ   rR   r  rH   r?   r  r   r   r   test_tuple_correct_keyerrorx  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   r2   r   )r   ohlcopen)r   r"  r  )r   r"  r  )r   r"  closer  )r  r2   r"  )
r	   r   r   r   r  rH   r
   rM   rK   re   rm  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   rS  r  )
r   r   r   r   r  r   rH   r?   rK   rL   )r   r  rW  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 )Nr:   Zappler   rw   z$Grouper and axis must be same lengthr6   )r7  rg   r	   rQ   rR   r<  rH   )r   rj   rZ   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 )Nr*   r   r   rV   r   rZ  thirdr  r/   r=   rg  r%   r   )r   from_arraysr   rH   r2   rK   rL   )Zindex_arrayZindex_namesrird  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  r/   r=   r%   r   r   r   rS  )r   r  r	   rH   r
   r   r   )r  rj   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 )Nr4   r%   r   r   r/   r:   r;   rj  r   r*   r   r   rV  r   r8   r9   x1)	iterablesr      r   )r	   rC   rD   r  r'   r>   rx   rH   r2   r   rK   re   r   r  )r0  rj   resultsr   r2  r  r   r   r   test_groupby_axis_1  s       
"r5  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   r8  r9  r:  r;  )r  r7  c                    s   | j j S r0   r7  r  Ztz_localizer)   r  r   r   r+   "	  r,   z+test_shift_bfill_ffill_tz.<locals>.<lambda>)r7  r  c                    s   | j j S r0   r=  r)   r  r   r   r+   &	  r,   )r   r	   ZassignrH   r   rK   re   )Ztz_naive_fixturer  r   rT   rj   rU   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*   r2   r  )r	   rH   rO   r   rC   r   rK   rL   )rj   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   rw  r   r   ro  r   r   rS  g      @)r   rH   r?   rK   rL   )rW  r   r   r   r   r   r   test_groupby_duplicate_index4	  s
    r@  z&ignore:.*is deprecated.*:FutureWarningc                 C   sh  | dkr"t jjtd}|j| 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rd}n| dkrd}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rX|t	}t|| d S )Ntshift)rR   r/   r  r%   r   Zcol_1Zcol_2Zcol_3Zcol_4rT   rx   Zfillna)r<  )r/   r   r   r   )Zdiffr6  )rQ   r  r  NotImplementedErrorr  r  r	   r   rd   r  r   r   rH   rO   rK   r  )Ztransformation_funcr  r  rj   argsr   r   r   r   r   test_group_on_empty_multiindex>	  s6    
""
$$

rE  r   r   r  )r   r   rF  r   r  z)ignore:tshift is deprecated:FutureWarningc              	   C   s   | dkrt d|   t| } | dkr,tnd }tddgg|d}|dg}| dkrbtdg|_t| |}t	j
|d	d
 t|| | }W 5 Q R X |jdkstt	|j| d S )N>   r+  cumcountr-  zNot applicable for )r,  rA  r/   rw   r   rA  r  zis deprecatedr6   r   )rQ   r/  r   rz   r	   rH   r   r'   r   rK   ry   r   shaper   r>  rx   )Zgroupby_funcr   r0  rj   Zgrp_byrD  r   r   r   r   test_dup_labels_output_shapec	  s    	
rI  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 )N
2016-01-01r=   r   )r   r>   r/   r%   r   )r  )r   r   )r   r   )r   rV  )r   r   )r   r   r   r   )r   r	   rx   r   r'   Z_get_axis_numberr   rH   Znuniquer>   rK   re   r^   rd   rC   r#   )
r   r!  rj   Zaxis_numberr   r   r   r  r  r   r   r   r   test_groupby_crash_on_nunique	  s*    

rK  c                  C   s>   t tddddtd} | jdgd }t||  d S )Nr   r$   r%   r   rS  )	r	   rC   rD   r  r   rH   r?   rK   re   )r   r   r   r   r   test_groupby_list_level	  s    rL  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	   rC   rE   r  r'   r   Zoption_contextrH   r   __repr__r   r  r   )Zmax_seq_itemsr   rj   r   r   r   r   test_groups_repr_truncates	  s    

rN  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   rH   r   rC   r  r"   rI   r   r   )rj   r   r   r   r   r   r   r   6test_group_on_two_row_multiindex_returns_one_tuple_key	  s    rQ  zklass, attr, valuer   rl  r.   rt   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   rH   r   r   )rM  r(  r]   rj   r   r   r   r   r   #test_subsetting_columns_keeps_attrs	  s     
rS  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=1r6   r   r   )r	   rH   rQ   rR   r<  r2   )r   r7   r   r   r   test_subsetting_columns_axis_1	  s    &rT  rs   anyc                 C   sH   t dgdd}tdgg|d}|dg}t||  j}t|| d S )Nr   r   r  r/   rw   )r   r	   rH   r   rx   rK   r>  )rs   r   rj   r   r   r   r   r   #test_groupby_column_index_name_lost	  s
    rV  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   rq  r   r   r   rp  r/   r=   r%   r   r   r   r   r   rw   )r	   rd   ri  rx   rH   rE  rK   re   r  r   r   r   test_groupby_duplicate_columns	
  s    "rW  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   rF  )r'   r>   )r   r   r   rS  )r   r'   r>   rH   lastrK   rL   )rW  r   r   r   r   r   #test_groupby_series_with_tuple_name
  s    rY  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   ra   r   r   ra   r   r  r   )r	   r   rH   r   rK   re   )rs   r   rT   rj   r   r   r   r   r   )test_groupby_numerical_stability_sum_mean
  s
    ra  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 )Nr\  r]  r^  r_  r/   r=   r   r`  ra   g07yACg17yACga7y1Cgb7y1CrZ  r[  r   T)Zcheck_exact)r	   rH   r  rK   re   )rT   rj   r   Zexp_datar   r   r   r   'test_groupby_numerical_stability_cumsum+
  s     rb  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   r/   r   Fskipnar   r=   r%   r   )rC   rE   r  r	   rg   r   r   rH   r  rK   re   )r  rj   ir   r   r   r   r   r    test_groupby_cumsum_skipna_false8
  s    
rf  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 )NrJ  r   r   r   r=   r/   r  r   FT)r   rd  r   r   )	r   r   r   r   r	   rH   r  rK   re   )r!  rW  rj   r   r   r  r   r   r   test_groupby_cumsum_timedelta64H
  s    

,$rg  c                 C   s4   | }|j dd }| |j }t|| d S )Nr   rS  )rH   r?   r'   rK   rL   )Z(rand_series_with_duplicate_datetimeindexZdupsr   r   r   r   r   !test_groupby_mean_duplicate_indexZ
  s    rh  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   rC   r   rH   r'   r2   r   r#   r"   rK   rL   )rd  r   r   r   r   r    test_groupby_all_nan_groups_dropa
  s    ri  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   rB  r   r   r  r   r   )r	   rH   r2   r   r   rK   re   )r   r   rj   r   r   r'   rx   r   r   r   r   test_groupby_empty_multi_columni
  s    rj  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/   Wr:   r;   ZMWrW   rw   ri  r!   r>   r   r  )r	   r   rH   r2   rK   re   rj   r   r   r   r   r   r   *test_groupby_aggregation_non_numeric_dtypey
  s    "  rn  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   re  r   r   r   r   
  s     zDtest_groupby_aggregation_multi_non_numeric_dtype.<locals>.<listcomp>r   c                 S   s   g | ]}t |d  dqS r:   rp  rq  rr  r   r   r   r   
  s     r  c                 S   s   g | ]}t |d qS ro  rq  rr  r   r   r   r   
  s     r3   r$   c                 S   s   g | ]}t |d  dqS rs  rq  rr  r   r   r   r   
  s     )r   r  r"   r*   rl  r   r  )r	   rg   r   rH   r2   rK   re   rm  r   r   r   0test_groupby_aggregation_multi_non_numeric_dtype
  s    rt  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}d}tjt|d | }W 5 Q R X t	|| d S )Nr/   r   c                 S   s   g | ]}t |d qS ro  rq  rr  r   r   r   r   
  s     zKtest_groupby_aggregation_numeric_with_non_numeric_dtype.<locals>.<listcomp>r   r  r  r3   rw  r"   r*   rl  r   r  r   r6   )
r	   rg   r   r   rH   rK   ry   rz   r2   re   )rj   r   r   rZ   r   r   r   r   7test_groupby_aggregation_numeric_with_non_numeric_dtype
  s    
ru  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     >@rv  rw  r  g$+H@rx  ry  r  r   )r	   rH   rP   r   rK   re   )Zdictsrj   Z	df_filterZdfgbr   r   r   r   r   test_groupby_filtered_df_std
  s    

rz  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   rb  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_codesrH   r   r   rC   r  r   r  r   r   r   2test_datetime_categorical_multikey_groupby_indices
  s$    


 

 

 
r~  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'r6   )ZwindowZ
min_period)rC   r   r	   r   rx   rQ   rR   r   rH   Zrollingr2   )Zname_lZval_lZtest_dfZresult_error_msgr   r   r   #test_rolling_wrong_param_min_period
  s    "
r  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%   backfillr6   r   rS  pad)r   rK   ry   rz   rH   r  r  )rd  r   r   r   test_pad_backfill_deprecation
  s
    r  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Moodr2   )r  r  r  i	  )r  r  r  )r	   r   moderH   rM   r   rK   re   )rj   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 )Nr/   r   r=   r%   r   r   r  r   rS  )r  r=   )r   r%   )r   r   r*  rH   r2   r  rK   rL   )r  rW  r   r   r   r   r   #test_groupby_none_in_first_mi_level  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 )Nr/   r=   r%   r   r   r   r3   )Nr   r   r  r$      r  r  r   )r	   rH   r2   r   rK   re   r  r   r   r   test_groupby_none_column_name  s    (&r  c               	   C   sd   t tjdgtjdgtjdgdddgd} d}tjt|d	 tt| d
g\}}W 5 Q R X d S )Nr/   r   r=   r   r*   r   r   zIn a future version of pandas, a length 1 tuple will be returned when iterating over a groupby with a grouper equal to a list of length 1. Don't supply a list with a single grouper to avoid this warning.r6   r   )	r	   rC   r   rK   ry   rz   nextiterrH   )rj   rZ   r   rx  r   r   r   !test_single_element_list_grouping   s     r  r  c                 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33ffr/   r   r   r   r   r  r   r  Tr"  )r	   r   rH   r   r&  rK   re   )rs   r  rj   r   r   r   r   r   #test_groupby_avoid_casting_to_float0  s    r  z	func, val)r2   r%   )rG  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 )	Nr/   r=   r   r   r   r   r  r&   )r	   r   NAr   rH   r   rK   re   )any_numeric_ea_dtypers   r  rj   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 )Nr/   r   8r   r   r   r=   Z64r  r&   )r	   rH   r2   r   rK   re   r  rG  )r  r!   rj   r   r   r   r   r   test_groupby_overflowI  s$    r  zskipna, val)Tr%   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 )Nr/   r=   r   r   r   rc  r   )r	   r   r  rH   r  rK   re   )r  rd  r  rj   r   r   r   r   r   test_groupby_cumsum_maskb  s    r  )r   decimalr   ZnumpyrC   rQ   Zpandas._libsr   Zpandas.compatr   Zpandas.errorsr   r   Zpandasr   r   r	   r
   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingrK   Zpandas.core.arraysr   Zpandas.core.commoncorecommonr  Zpandas.core.groupby.baser   Zpandas.tests.groupbyr   r    r  Zparametrizer[   rk   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r*  r1  r2  r5  r8  r:  r=  r?  rA  rC  rF  rL  rN  rQ  rR  rT  rU  rY  r[  r`  re  rh  rn  rt  ry  rz  r~  r  r  r  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/  r5  r>  r?  r@  rE  r  rI  rK  rL  rN  rQ  paramr  rS  rT  rV  rW  rY  ra  rb  rf  rg  rh  ri  rj  rn  rt  ru  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   sP  4
0*>-
 
8($@
 	;&!	



0	
 (



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