U
    f/e%                    @   s4  d dl m Z  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 d dlm  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" Z,ej#$dddddd#d$gd%d& Z-d'd( Z.d)d* Z/d+d, Z0d-d. Z1d/d0 Z2d1d2 Z3d3d4 Z4d5d6 Z5ej#$d7d8d9 d:d9 gd;d< Z6d=d> Z7d?d@ Z8dAdB Z9dCdD Z:dEdF Z;dGdH Z<dIdJ Z=dKdL Z>dMdN Z?dOdP Z@dQdR ZAdSdT ZBdUdV ZCdWdX ZDdYdZ ZEd[d\ ZFd]d^ ZGd_d` ZHdadb ZIdcdd ZJdedf ZKdgdh ZLdidj ZMdkdl ZNdmdn ZOdodp ZPdqdr ZQdsdt ZRdudv ZSdwdx ZTdydz ZUej#Vd{d|d} ZWd~d ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhej#$ddddggdd Zidd Zjdd Zkdd Zldd Zmdd Zndd Zodd Zpdd Zqej#$ddddddgddggej#$dddddggdd Zrdd Zse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jtd gddʍejtd gddʍejtdgddʍg
ej#$ddddgej#$d7ddddddddgej#Vd١ej#Vdڡdd܄ Zuddބ Zvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|ej#$dddggdd Z}ej#$dddddededddgifddededededededgifddededededededgifgdd Z~dd Zdd Zej#$deddgdd ejdddgdgej#V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#Vddd  Zd!d" Zej#$d#d֐d$dgd%d& Zd'd( Zd)d* Zej#je	 d+dej#$d,d֐d-d.gfd/d0d1gfgd2d3 Zej#je	 d+dd4d5 Zd6d7 Zd8d9 Zej#$d:ddgd;d< Zd=d> Zd?d@ ZdS (A      )datetime)Decimal)StringION)IS64)PerformanceWarning)Categorical	DataFrameGrouperIndex
MultiIndex
RangeIndexSeries	Timestamp
date_rangeread_csvto_datetime)SpecificationErrorc                  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-tiezk1ph/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>.       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(   L   r)      zMust produce aggregated valuec                 S   s   | d S Nr8   r   r&   r   r   r   r(   S   r)   )r   nparangerandomshufflereindexgroupbylenr   	aggregater:   tmassert_series_equalaggr-   apply	transformstdpytestraisesr   	Exception)r   datar$   groupedkvaggedr   transformedZvalue_groupedmsgr   r;   r   
test_basic%   s@    



  rV   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 )NrX   )locidxmaxgroupr   r   r   	max_valueb   s    z/test_groupby_nonobject_dtype.<locals>.max_valuer   )r$   codesrC   r-   astyperF   assert_frame_equalcopyrangerD   rI   dtypesrG   )	mframeZdf_mixed_floatsr   rP   r   r   dfr]   Zappliedr   r   r   test_groupby_nonobject_dtypeV   s    
rf   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*   r6   )val1val2   r8      r/   c                 S   s   | d | d    S Nrh   r:   Zdatafr   r   r   funcw   s    z&test_groupby_return_type.<locals>.funcrg   T)squeezec                 S   s   | d | d    S rk   rl   rm   r   r   r   rn      s    XYcolumnsF)
r   rF   assert_produces_warningFutureWarningrC   rI   
isinstancer   r   count)df1rn   r   df2re   r   r   r   test_groupby_return_typek   s4    		rz   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Ponyr.   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   r9   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   )r9   r   rY   r   r   r   r   r      s    
)r   r   r>   r?   r   rC   firstrI   rF   r`   ra   nanrY   pdNaTr9   rG   )re   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
|| |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r>   
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_names)Nr   )rC   rH   r>   r   rI   rJ   quantilerF   rG   r   r`   )tstsframer   gZ
ts_groupedZ
agg_resultZapply_resultZtrans_resultZagg_expectedZtrans_expectedr   
df_groupedr   r   r   r   test_pass_args_kwargs   s8    



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   r8   r*   r8   )rs   rC   rH   r>   r   r$   r   r   r   Tr
   rb   rF   r`   )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*   r8   abr   r   r   )	rF   makeTimeDataFramerC   rD   r   r$   r   r>   r   )re   rP   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*   r5   iL  g      $@)r   listrb   r>   r@   rC   r:   )r   rO   	groupingsrP   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 )Nr5   r}   foobarr$      r8   F)Zcheck_dtypec                 S   s   t t| S r+   )floatrD   r&   r   r   r   r   @  s    ztest_with_na_groups.<locals>.f      @       @)r
   r>   r?   r   onesr   rC   rH   rD   rF   rG   )r   r$   valueslabelsrP   rS   r   r   r   r   r   test_with_na_groups+  s    


r   c               	   C   s8  dd } dd }dd }t ddddgtd	td
dd}t ddddgtd	td
dd}|d| }|d| }t|| d}tjt|d |d| W 5 Q R X tjt|d |d| W 5 Q R X tjt|d |d| W 5 Q R X tjt|d |d| W 5 Q R X d S )Nc                 S   sb   | | j d dk d }|jrLtg gd g gd ddgd}tdg|d}|S |ddg}|S d S )Nr8   r*   r   clevelsr^   namesr   rs   r$   )r   emptyr   r   	set_indexr'   yZ
multiindexr   r   r   r   f1M  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 )Nr8   r*   r   r   )r   r   r   r   )r'   r   r   r   r   f2W  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 )	Nr8   r*   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   f3_  s      z,test_indices_concatenation_order.<locals>.f3r*   r8   r      r!   r   r   r   r"   r   z@Cannot concat indices that do not have the same number of levelsr1   )	r   rb   rC   rI   rF   r`   rL   rM   r   )r   r   r   re   ry   result1result2rU   r   r   r    test_indices_concatenation_orderI  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)r>   rK   r&   r   r   r   r(     r)   c                 S   s   i | ]\}}||  qS r   )describe)r   r9   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'r1   r   )rC   rK   rH   rF   rG   r   r   r   r`   r   rL   rM   AttributeErrorgetattr)r   rP   r   r   rU   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   r7   c                 S   s   |   S r+   r   r&   r   r   r   r(     r)   c                 S   s   | |    S r+   rl   r&   r   r   r   r(     r)   c                 S   s   |   S r+   rl   r&   r   r   r   r(     r)   r   )rC   rE   r>   r:   rD   r   rs   ra   r$   rF   r`   headrJ   rG   xsr   groupsindicesitemstakeall)r   rP   
aggregatedZtscopyZstraggedrT   r9   r\   r:   idxr   r   r   rQ   rR   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   r8   c                 S   s   | |    S r+   rl   r&   r   r   r   r(     r)   z,test_frame_groupby_columns.<locals>.<lambda>)rC   rE   r>   r:   rD   r   rs   r   rF   r`   rJ   )r   mappingrP   r   tfZgroupedTrQ   rR   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   r0   r1   r   r   )rC   r:   r$   r9   r   rH   r>   rK   rL   rM   r   )re   rP   r   rU   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k2r3   r4   threeZfourZfivesixr   r   r   )rC   getr:   rF   r`   rY   r   r>   r@   randnarrayrH   r-   )re   Zcol1Zcol2rP   rS   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:   rK   )rC   rH   r>   r:   rK   r   rF   r`   )re   rP   rS   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	|d ||d ||d |gdddgdd}t
|jtstt
|jtstt|| d S )Nr   r   r3   r4   ZdullZshiny   )r   r   r   r   EFr   r   r   r   r   r*   )keysr   )r   r>   r@   r   rC   r:   rK   rH   r   concatrv   r$   r   r   rF   r`   )rO   rP   funcsrS   r   r   r   r   "test_frame_multi_key_function_list  sj    


/
&r   opc                 C   s   |   S r+   r,   r&   r   r   r   r(   P  r)   r(   c                 C   s   |   S r+   rl   r&   r   r   r   r(   P  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   )rC   appendrY   r   from_tuplesr   r   r   r$   rF   rG   r:   )re   r   rO   rP   r   r   r   Zn1Zgp1Zn2Zgp2mir   colZ
result_colZpivotedexpr   r   r   r   test_groupby_multiple_columnsP  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*   r8   r   r   r   r   r   rr   Fr   r9   c                 S   s   |   S r+   )cumsumr&   r   r   r   r(   x  r)   z-test_as_index_select_column.<locals>.<lambda>)r   r   )r   r*   r   r9   r$   )	r   rC   	get_groupr   rF   rG   rI   r   r  re   r   r   r   r   r   test_as_index_select_columnq  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  rr   F)byr   numeric_onlyr8   r   r   )r   r
   rC   r-   rs   rb   rF   r`   )re   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   Tr0   r1   r   Qr   rr   r   d   )2   r"   ZjimZjoeZjolier   r5   r  r  )r:   maxrw   rZ   r	  r   )Zdrop)rC   rH   r>   r:   rF   r`   r-   rL   rM   r   r   renamer@   randintr   nthrI   r   r   reset_index)re   rP   r   r   r   	expected2rU   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}|	 }|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  r8   )sizer   r   rr   r"  Fr   )rL   skipr   r>   r@   r  r   rC   r  r  rF   r`   rH   )Zreduction_funcre   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   )
rC   rH   r>   r-   rY   rv   r   r   rF   r`   )re   rP   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 selectedr1   r   r   )rC   rL   rM   
IndexError__getitem__)re   rP   rU   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*   )rC   r:   insertr$   r>   r?   rD   rF   r`   r   zipr   )re   rO   rP   r   r   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   )rC   rH   rD   rY   rF   r`   re   rP   r   r   r   r   r   #test_groupby_as_index_series_scalar  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 DataFramer1   c                 S   s   |   S 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 r+   )lowerr&   r   r   r   r(   )  r)   r*   )r   r   )rL   rM   	TypeErrorrC   
ValueError)re   r   rU   r   r   r   test_groupby_as_index_corner"  s    r2  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(   3  r)   c                 S   s   | j S r+   r   r&   r   r   r   r(   3  r)   c                 S   s   | j S r+   r   r&   r   r   r   r(   3  r)   r*   r   c                 S   s   |   S r+   r,   r&   r   r   r   r(   6  r)   c                 S   s   |   S r+   r,   r&   r   r   r   r(   :  r)   )rF   r   rC   r-   Zassert_almost_equalr   r   rH   assert_index_equalr$   rs   )re   rP   rS   r   r   r   test_groupby_multiple_key,  s     r4  c                 C   sP   |   } tj| d< | ddg }| ddg }tj|d< t|| d S )Nbadr   r   )ra   r>   r   rC   r:   rF   r`   )re   rS   r   r   r   r   test_groupby_multi_corner>  s    

r6  c              	   C   s   |  d}| }| jd d dddgf  d }t|| |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   z2'DatetimeArray' does not implement reduction 'sum'r1   c                 S   s   | j dddS )Nr   Fr  r,   r&   r   r   r   r(   `  r)   z$test_omit_nuisance.<locals>.<lambda>)rC   r:   rY   rF   r`   rH   r>   r   nowr-   rL   rM   r0  )re   rP   r   r   rS   r  rU   r   r   r   test_omit_nuisanceJ  s"    
"
r8  c                 C   sD   |  d}| }| jd d dddgf  d }t|| d S )Nr   r   r   )rC   ZsemrY   rF   r`   r-  r   r   r   test_omit_nuisance_semc  s    
"r9  c                 C   s2   |  ddg}|tj}| }t|| d S )Nr   r   )rC   rH   r>   r:   rF   r`   )Zthree_grouprP   rS   r  r   r   r   "test_omit_nuisance_python_multiplek  s    r:  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+   rl   r&   r   r   r   r(     r)   z*test_empty_groups_corner.<locals>.<lambda>r   r   )r   r>   r   r@   r   rC   rH   r:   rF   r`   rI   rG   r$   r9   r   )rd   re   rP   r   r   rS   Zagged_Ar   r   r   test_empty_groups_corners  s"    



r<  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'r1   c                 S   s   | d S )Nr   r   r&   r   r   r   r(     r)   z$test_nonsense_func.<locals>.<lambda>)r   rL   rM   r0  rC   )re   rU   r   r   r   test_nonsense_func  s    
r=  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)bazr4   r   r*   c                 S   s   | j dkrtn|  S d S )N)r   r3   )r9   r0  r-   )serr   r   r   aggfun  s    
z5test_wrap_aggregated_output_multindex.<locals>.aggfunzDropping invalid columnsr1   )r   r>   r   rC   rH   r:   rv   rs   r   r   rF   rt   ru   rE   rD   )rd   re   r   rS   r@  Zagged2r   r   r   %test_wrap_aggregated_output_multindex  s     rA  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   r;  r   r*   secondr   )rC   rw   r$   r9   r   )rd   r   r   r   r   test_groupby_level_apply  s    rC  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   r>  qux)r3   r4   r   r;  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   rE  r   )mapper1r   r   r     s     rB  )r   rB  )	r  rC   r-   r>   r   r$   r9   rF   r`   )rd   Z	deleveledZresult0r   Zmapped_level0Zmapped_level1Z	expected0Z	expected1r   )rF  rG  r   test_groupby_level_mapper  s    rH  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*   r8   r"   r5   r   r   r6   r   r   r  r      r.   r   r;  z2level > 0 or level < -1 only valid with MultiIndexr1   zNo group keys passed!z*multiple levels only valid with MultiIndex)
r   r
   rb   rC   r-   rF   rG   rL   rM   r1  )sr   r   rU   r   r   r   test_groupby_level_nonmulti  s4    2$rM  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*   rO   r$   )rN  y      @      $@r;  )	r   r>   r?   rC   r-   rF   rG   rt   ru   )r   r   r   r   r   r   test_groupby_complex  s    rP  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
   rC   r:   rB   r$   r   rF   rG   )s1s2rP   rS   r  r   r   r   'test_groupby_series_indexed_differently  s     
rV  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   r>  r   rD  r3   r4   )r   cat)r   dog)r   rW  )r   rX     r   r$   rs   r   r;  r*   )r   r   c                 S   s   |   S r+   rl   r&   r   r   r   r(     r)   z0test_groupby_with_hier_columns.<locals>.<lambda>c                 S   s
   |  dS )Nr*   rl   r&   r   r   r   r(     r)   r   r   )r   r   rJ  )r   r*  r   r  r   r>   r@   r   rC   r:   rF   r3  rs   r$   rH   rI   r
   Z	sortlevel)Ztuplesr$   rs   re   r   Zsorted_columns_r   r   r   test_groupby_with_hier_columns  s6    

r\  c                 C   s:   |  | d j}| }|  d }tj||dd d S )Nr   Fr   )rC   r   r-   rF   r`   r-  r   r   r   test_grouping_ndarray%  s      r]  c                  C   sJ   d} t t| dd} | ddddg}|tj}| }t|| d S )Nzindex,foo,bar,baz,spam,data
0,foo1,bar1,baz1,spam2,20
1,foo1,bar2,baz1,spam3,30
2,foo2,bar2,baz1,spam2,40
3,foo1,bar1,baz2,spam1,50
4,foo3,bar1,baz2,spam1,60r   )Z	index_colr   r   r>  Zspam)r   r   rC   rH   r>   r:   rF   r`   )rO   rP   r   r   r   r   r   test_groupby_wrong_multi_labels/  s    r^  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   )rC   r:   r$   r9   r   r   )re   r   r   r   r   r   test_groupby_series_with_name@  s    r`  c                 C   sR   |  dd }| jdks t| jdks2tdd }||jdksNtd S )Nr   r   c                 S   s   t | d S r=   )r>   r-   r&   r   r   r   r(   S  r)   z.test_seriesgroupby_name_attr.<locals>.<lambda>)rC   rw   r9   r   r:   rH   )re   r   ZtestFuncr   r   r   test_seriesgroupby_name_attrM  s
    ra  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   r3   r4   rY  r   r   r   )r   r>   r@   r   r?   rC   r   rw   r   rF   rG   re   r   r   r   r   r   test_consistency_nameW  s    	rc  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*   r8   r"   rw   r:   Z	omissionsr  )r   )re   r9   r   r   r   	summarizej  s    z0test_groupby_name_propagation.<locals>.summarizec                 S   s   t dddd| jd d dS )Nr*   r8   r"   rd  r   r   r  )r   r   re   r   r   r   summarize_random_namem  s    z<test_groupby_name_propagation.<locals>.summarize_random_namer   metrics)N)rC   rI   rs   r9   r   )re   re  rg  rh  r   r   r   test_groupby_name_propagationh  s    
ri  c                  C   sJ   t dd tdD } | d}| }| | d  }t|| d S )Nc                 S   s   g | ]}t d qS )r5   )r>   r?   r   r   r   r   r   |  s     z2test_groupby_nonstring_columns.<locals>.<listcomp>r5   r   )r   rb   rC   r:   rF   r`   r-  r   r   r   test_groupby_nonstring_columns{  s
    
rj  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*   r8   r   r   rr   r  r   )r   r
   rC   r   rF   r`   r-   rb  r   r   r   test_groupby_mixed_type_columns  s    "rk  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   r5   )r>   r   fillr   r   Ztilerb   rC   rH   ZmedianZisnar   r   )ZarrobjZindsr   r   r   r   (test_cython_grouper_series_bug_noncontig  s    
rn  c                  C   s^   t tdd} ttjd| d d d d}tjddd}||}dd	 }|	| d S )
Nr5   r  r  r8   r   r   r   c                 S   s   t ttt| jS r+   )rD   setmapidr$   r&   r   r   r   r(     r)   z5test_series_grouper_noncontig_index.<locals>.<lambda>)
r
   rF   Zrands_arrayr   r>   r@   r   r  rC   rH   )r$   r   r   rP   r   r   r   r   #test_series_grouper_noncontig_index  s    
rr  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   rR  r   rW   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   )rD   r   baser   r   rs  r:   r&   r   r   r   convert_force_pure  s    zDtest_convert_objects_leave_decimal_alone.<locals>.convert_force_purer   )r   rb   r>   r   rC   rH   r   Zobject_r   rv   r   )rL  r   rt  rv  rP   r   r   r   r   (test_convert_objects_leave_decimal_alone  s    


rw  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'   rb   r'   )r9   r   rb   r#   T)Z	by_blocks)r   r>   r?   r   r    r   rC   r   r
   r   rF   r`   )re   r   Z	exp_indexr   r   r   r   "test_groupby_dtype_inference_empty  s    rx  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   rB  rX   r   rB  rX   r  r  )r   rC   r  r   r   from_productrF   rG   r  r   r   r   $test_groupby_unit64_float_conversion  s    rz  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'$r1   rJ  r   r*   r"   r   r8   )r   r   valr   r   r{  )rC   r   r:   rF   r`   rL   rM   KeyErrorr   r>   r@   r   r  r   r   r   "test_groupby_list_infer_array_like  s    $ r}  c                  C   st   d} t tdd| d}tddgddggd	d
g|d}|td| dd	g }||jd	gt	}t
|| d S )NrL  z2015-09-29T11:34:44-0700r8   )startr~   freqr   r5   r      Zmetricr   r   r   )r   r  )r   r   r   rC   r	   r:   r   r$   r_   r   rF   r`   )r  r$   re   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   ABCDrr   r1   Zr8   )	r   r>   r@   r   r   rL   rM   r|  rC   )rU   rx   ry   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 )NrY  z
2013-01-01z
2013-02-01r   r   )r   dtrs  r  r*   r.   r"   r   r8   r   z2013-01-01 00:00:00r}   z2013-02-01 00:00:00z^NaT$r1   )r   natr   r    r  zdatetime64[ns]z^nan$)!r   r>   r@   r   r   r   rC   r
   sortedr   r   rD   r   r*  rF   r3  r`   grouperr   rm  Zngroupsr   Zintpr   assert_numpy_array_equalr  r   rL   rM   r|  r   r   r   )re   rP   r   r   rQ   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*   r8   r   r   r   )r   r>   r   rC   r   r   re   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 )Nr8   r   Zg1Zg2r\   r   zerosr*   r   l1l2label        r   )r   rb   rC   r:   r>   r   rF   r3  rs   r
   r  r   )rR  tmpZ
res_valuesr   r   r   test_groupby_2d_malformedE  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   )
r>   Zconcatenater?   r   r@   r   rC   r-   rD   r   )r   r   re   r  r  r   r   r   test_int32_overflowQ  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   r>  r"   r8   r*   r   )r   r   r   rR  c                 S   s   g | ]}t |qS r   tupler   rowr   r   r   r   e  s     z+test_groupby_sort_multi.<locals>.<listcomp>r   r   r   T)sortc                 S   s   g | ]}t |qS r   r  r  r   r   r   r   j  s     c                 S   s   g | ]}t |qS r   r  r   r   r   r   r   o  s     r   )r   r   rR  rR  c                 S   s   |   S r+   r,   r&   r   r   r   r(   z  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_tuplesaferC   r   r   )	re   r   r   fieldr   tupsr   rQ   rR   r   r   r   _check_groupbyz  s
    
z/test_groupby_sort_multi.<locals>._check_groupby)r   r>   r@   r   r   r  r  rC   r-   rF   r  r$   )re   r  r   rP   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   r>  r8   )r   r9   r   c                 S   s   | S r+   r   r&   r   r   r   r(     r)   z/test_dont_clobber_name_column.<locals>.<lambda>)r   rC   rI   rF   r`   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     )rF   r   rC   rI   r   r   r`   rG   )ZtsfrP   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   )ra   r9   rC   rH   r>   r-   r   )Zfloat_framerL  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?flr-   r"  )r  r8   )	r   r>   r?   reshaperC   rH   r   r    r   )r'   rP   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  minr  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   )rC   rI   rv   r   r   rF   rG   )re   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+   )r9   r   r[   r   r   r   r     s    ztest_set_group_name.<locals>.fc                 S   s   | j d k	st|  S r+   )r9   r   r-   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   )rC   rI   rE   rJ   )re   r  r   r   rP   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*   r8   r   r   c                    s     | j |  S r+   )r  r9   ra   r[   r  r   r   r     s    z6test_group_name_available_in_inference_pass.<locals>.fr   F)r  r  )r   r>   r?   rC   rI   r   )re   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)rC   r   r-   r$   r9   r   r   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*   r8   r   r   r   r   r"   r   r   r   Fr   r  T)r   r   rC   r   rF   rG   
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   )rY   r$   rp  dropnarD   )rO   rR  fixrn   r   r   _func  s    zGtest_groupby_reindex_inside_function.<locals>.agg_before.<locals>._funcr   )rn   r  r  r   r  r   
agg_before  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(   "  r)   z6test_groupby_reindex_inside_function.<locals>.<lambda>r  T)F)	r   r   r>   r?   rC   rH   r  rF   r`   )r~   indre   r  rP   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   rR  r*   r   )group1group2rX   r  r  Tr  r-   )r   r   )r   rR  )r   r   r  r8   rX   rZ  )r   r   rC   rH   r   r  rF   r`   )re   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 ]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   rr   r   rR  r  r  r  r  )rs   rO   )r$   rs   r   r8   )r'   r   zr'   r   r   )FTr  )r   r  r   rs   Z_is_lexsortedr   pivot_tabler  rF   r`   rC   r:   rt   r   r   r$   rI   Zdrop_duplicatesr  )Zlexsorted_miZlexsorted_dfZnot_lexsorted_dfr   r   re   r   r  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ABCDEr8   r   r*   r   Zababbc                 S   s   t | dkS r=   rD   r&   r   r   r   r(   u  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   rC   filterr   rF   r`   r   rG   r$   r_   r   )re   r   actualr   r?  r   r   r   "test_index_label_overlaps_locationp  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   r8   r         @r   r   r   r:   )r>   r?   r   rC   rJ   rF   r`   )nr'   re   ry   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   rY  r.   r   r   r8   r!   gffffff@g333333@g@g333333g@g?rR  r   wordZword2Z42Z47)r  r  r  r  r  r  c                    s   t | | j d d S )Nr  )rF   r`   r  r&   r  r   r   	test_sort  s    z.test_groupby_preserves_sort.<locals>.test_sort)r   r  rC   rI   )r  r  re   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 )Nr6   M)r~   r  r   )	eventDateZthenamer  r   r   z	'badname'r1   Zbadnamerw   )r$   rs   r   Zaggfunc)r   r   r   todaytolistrb   r   r$   r   r   rL   rM   r|  r  r  rf  r   r   r   !test_pivot_table_values_key_error  s       r  rs   r   r   r   r  r   r*   z
US/EasterntzInt64r}   ZFloat64booleanmethodr  rH   rI   rZ   idxminmadr  r  r-   prodskewz-ignore:Dropping invalid columns:FutureWarningz(ignore:.*Select only valid:FutureWarningc              	      s  d }t |tr,t | ts,dkr,dkr,npt |trjt|dkrjdkrjtjjtdd}|j	| n2t |trt|dkrdkrtjjt
dd}|j	| nt |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	| nvt |trrt|dkrrdkrrdkrrtjjtd
d}|j	| n*t |tjjjrdkrdkrd}t |d trĈdkrĈdkrd}t|||dtdd}t|dr|j|jk st|jd d }|||    fdd}	| dkrdkrdkr|jd jdkrd}
tjt|
d |	  W 5 Q R X d S t |trd}
tjt|
d |	  W 5 Q R X d S ndkrdkr|jd jdkr|	 }||g  }t|| d S t |tr~|	 }||g  }t|dkrndkrnt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	r| |}t|dkr|d |j!_"t|| d S )"N)r-   r  rI   r*   z'str' object is not callable)rM   r2   )rZ   r  z0attempt to get arg(min|max) of an empty sequencez 'Categorical' does not implement)r  r  r  r-   r  r  z (DataFrame|Series) are differentr8   )r  r  r-   r  r   )r  r-   r   r   ABCrr   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  z datetime64 type does not supportr1   zcategory type does not supportr  r}   r   r   r  r   )#rv   r   r   rD   rL   markxfailr0  nodeZ
add_markerr1  r   r   corer+  ZBooleanArrayboolr   hasattrrc   r   r   r   rC   kindrM   r   rF   Zassert_equalr   ry  objectr_   r$   r9   )rs   r   r   r  r   requestZoverride_dtyper  re   r  rU   r   r   Zlevr  r   r  r   test_empty_groupby  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*   r8   )r   r   r   r   z
('a', 'b')r1   r   r   r   r   r   r  r
  )
r   rL   rM   r|  rC   r-   r   r
   rF   rG   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"   r8   r   rZ  z
^\(7, 8\)$r1   )r.   rY  )	r   rb   r   ry  rL   rM   r|  rC   r:   rf  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-01r8   r   dti)r~   r  r9   r   ))r   r-   r   )r   ohlcopen)r   r   r  )r   r   r  )r   r   closer  )r  r-   r   )
r   r
   r   r   r  rC   r	   rH   rF   r`   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*   r8   r   r"   dater  g      @r   r   r;  r  )
r   r   r   r   r  r   rC   r:   rF   rG   )r   r  r?  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 )Nr5   Zappler   rr   z$Grouper and axis must be same lengthr1   )r*  rb   r   rL   rM   r1  rC   )r   re   rU   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   rQ   r   rB  thirdr  r*   r8   rO  r"   r   )r   Zfrom_arraysr   rC   r-   rF   rG   )Zindex_arrayZindex_namesrirL  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*   r8   r"   r   r   r   r;  )r   ry  r   rC   r	   r   r   )r  re   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 )Nr/   r"   r   r   r*   r5   r6   rZ  r   r'   r   r   r>  r   r3   r4   x1)	iterablesr      r   )r   r>   r?   r  r$   r9   rs   rC   r-   r   rF   r`   r   ry  )r  re   resultsr   r  r  r   r   r   test_groupby_axis_1  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  )rq  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  rq  c                    s   | j j S r+   r  r&   r  r   r   r(   @  r)   )r   r   ZassignrC   r   rF   r`   )Ztz_naive_fixturer   r   rO   re   rP   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'   r-   r  )r   rC   rJ   r   r>   r   rF   rG   )re   r  r   r   r   r   test_groupby_only_none_groupD  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 )Nr8   r   r   rY  r   r   rQ  r   r   r;  g      @)r   rC   r:   rF   rG   )r?  r   r   r   r   r   r   test_groupby_duplicate_indexN  s
    r  r   r   r  )r   r   r  r   r  z)ignore:tshift is deprecated:FutureWarningc                 C   s   | dkrt d tddgg|d}|dg}g }| dkrH|d n6| dkr\|| n"| dkr~td	g|_|dd
g t|| | }|j	dkst
t|j| d S )N>   r"  r!  cumcountzNot applicabler*   rr   r   >   r  fillnar   Ztshiftr  r   r   )rL   r#  r   rC   r  r   r$   extendr   shaper   rF   r3  rs   )Zgroupby_funcr   re   Zgrp_byargsr   r   r   r   test_dup_labels_output_shapeX  s    	
r#  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-01r8   r   )r~   r9   r*   r"   r   )r_  )r   r   )r   r   )r   r>  )r   r   )r   r   r   r   )r   r   rs   r   r$   Z_get_axis_numberr   rC   Znuniquer9   rF   r`   rY   r_   r>   r    )
r   r  re   Zaxis_numberr   r   r   r  r  r   r   r   r   test_groupby_crash_on_nuniquev  s*    

r$  c                  C   s>   t tddddtd} | jdgd }t||  d S )Nr   r!   r"   r}   r;  )	r   r>   r?   r  r   rC   r:   rF   r`   )r   r   r   r   r   test_groupby_list_level  s    r%  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   r>   r@   r   r$   r   Zoption_contextrC   r   __repr__r   r   r   )Zmax_seq_itemsr   re   r   r   r   r   test_groups_repr_truncates  s    

r'  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*   r8   c   r   X   r   r   r   r   r}   )
r   r   rC   r   r>   r   r   rD   r   r   )re   r   r   r   r   r   r   r   6test_group_on_two_row_multiindex_returns_one_tuple_key  s    r*  zklass, attr, valuer   r  r  ro   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*   r8   r"   r   r   r   r   )r   )r   r   rC   r   r   )klassr  rX   re   r   r   r   r   r   #test_subsetting_columns_keeps_attrs  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*   r8   r"   r   r   r   z'Cannot subset columns when using axis=1r1   r   r   )r   rC   rL   rM   r1  r-   )r   r2   r   r   r   test_subsetting_columns_axis_1  s    &r.  rn   anyc                 C   sH   t dgdd}tdgg|d}|dg}t||  j}t|| d S )Nr   r   r  r*   rr   )r
   r   rC   r   rs   rF   r3  )rn   r   re   r   r   r   r   r   #test_groupby_column_index_name_lost  s
    r0  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   rS  r   r   r   rR  r*   r8   r"   r   r   r   r   r   rr   )r   r_   r  rs   rC   r  rF   r`   r  r   r   r   test_groupby_duplicate_columns  s    "r1  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*   r8   r"   r   r  )r$   r9   )r   r   r   r;  )r   r$   r9   rC   lastrF   rG   )r?  r   r   r   r   r   #test_groupby_series_with_tuple_name		  s    r3  zGH#38778: fail on 32-bit systemzfunc, values     @X@     X@r:   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*   r8   r   r\   r   r   r\   r   r  r   )r   r   rC   r
   rF   r`   )rn   r   rO   re   r   r   r   r   r   )test_groupby_numerical_stability_sum_mean	  s
    r;  c                  C   s~   ddddddddg} t ddgd | | d}|d	 }dgd d
dg ddg ddg }t ||d}tj||dd d S )Nr6  r7  r8  r9  r*   r8   r   r:  r\   g07yACg17yACga7y1Cgb7y1Cr4  r5  r   T)Zcheck_exact)r   rC   r	  rF   r`   )rO   re   r   Zexp_datar   r   r   r   'test_groupby_numerical_stability_cumsum 	  s     r<  c                 C   s4   | }|j dd }| |j }t|| d S )Nr   r;  )rC   r:   r$   rF   rG   )Z(rand_series_with_duplicate_datetimeindexZdupsr   r   r   r   r   !test_groupby_mean_duplicate_index-	  s    r=  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*   r8   r"   r}   r#   )r   r>   r   rC   r$   r-   r
   r    r   rF   rG   )rL  r   r   r   r   r    test_groupby_all_nan_groups_drop4	  s    r>  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   )rO   rs   r   r  r  r   r   )r   rC   r-   r   r   rF   r`   )r   r  re   r   r   r$   rs   r   r   r   r   test_groupby_empty_multi_column<	  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@  rA  r  g$+H@rB  rC  r  r   )r   rC   rK   r
   rF   r`   )Zdictsre   Z	df_filterZdfgbr   r   r   r   r   test_groupby_filtered_df_stdL	  s    

rD  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}   rJ  r   r*   )
categoriesr   r   r   z2018-01-01 00:00:00z2018-02-01 00:00:00r   z2018-03-01 00:00:00r8   )r   r   r   r   r   Z
from_codesrC   r   r   r>   r   r   r  r   r   r   2test_datetime_categorical_multikey_groupby_indices`	  s$    


 

 

 
rH  )r   decimalr   ior   Znumpyr>   rL   Zpandas.compatr   Zpandas.errorsr   Zpandasr   r   r   r	   r
   r   r   r   r   r   r   r   Zpandas._testingZ_testingrF   Zpandas.core.baser   Zpandas.core.commonr  commonr  r   r  ZparametrizerV   rf   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r$  r%  r(  r,  r.  r2  r4  r6  r8  r9  r:  r<  r=  rA  rC  rH  rM  rP  rV  r\  r]  r^  r`  ra  rc  ri  rj  rk  filterwarningsrn  rr  rw  rx  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r
  r  r  r  r  r  r  r#  r$  r%  r'  r*  paramr  r-  r.  r0  r1  r3  r;  r<  r=  r>  r?  rD  rH  r   r   r   r   <module>   s  4
0*>)
 
8(=
 	8	

 &




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