U
    Mf6                     @   s   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
Zd dl
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#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& Z)d'd( Z*d)d* Z+d+d, Z,d-d. Z-d/d0 Z.ejd1d2d3 d4d3 gd5d6 Z/d7d8 Z0d9d: Z1d;d< Z2d=d> Z3d?d@ Z4dAdB Z5dCdD Z6dEdF Z7dGdH Z8dIdJ Z9dKdL Z:dMdN Z;dOdP Z<dQdR Z=dSdT Z>dUdV Z?dWdX Z@dYdZ ZAd[d\ ZBd]d^ ZCd_d` ZDdadb ZEdcdd ZFdedf ZGdgdh ZHdidj ZIdkdl ZJdmdn ZKdodp ZLdqdr ZMejNdsdtdu ZOdvdw ZPdxdy ZQdzd{ ZRd|d} ZSd~d ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^ejddddggdd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgejddddddgddggejdddddggdd Zhdd Zidd Zjdd Zkdd Zldd Zmdd Zndd Zodd ZpddÄ Zqddń ZrddǄ ZsddɄ Ztejdddggdd̈́ Zue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؄ Zvddڄ Zwdd܄ Zxejdddgdd Zyejdeddgejzdgdd Z{dd Z|dd Z}dS )    )datetime)Decimal)StringION)PerformanceWarning)	DataFrameIndex
MultiIndexSeries	Timestamp
date_rangeread_csv)SpecificationErrorc                  C   s&   t tjddd} d}| |ks"td S )NAB)keylevelz/Grouper(key='A', level='B', axis=0, sort=False))reprpdGrouperAssertionError)resultexpected r   E/tmp/pip-unpacked-wheel-izj5yhnl/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%   ?   r&      zMust produce aggregated valuec                 S   s   | d S Nr5   r   r#   r   r   r   r%   F   r&   )r	   nparangerandomshufflereindexgroupbylenr   	aggregater7   tmassert_series_equalaggr*   apply	transformstdpytestraisesr   	Exception)r   datar!   groupedkvaggedr   transformedZvalue_groupedmsgr   r8   r   
test_basic   s@    



  rS   c           	      C   s   | j jd }| |}| }| |d }t|| | }tt	||d< dd }|d
|}|j}ttdgd td	gd  td
g dddddgd}t|| d S )Nr   Ovaluec                 S   s   | j | d   S )NrU   )locidxmaxgroupr   r   r   	max_valueU   s    z/test_groupby_nonobject_dtype.<locals>.max_valuer   objectr5   r   r   r   CDr!   )r!   codesr@   r*   astyperC   assert_frame_equalcopyrangerA   rF   Zdtypesr	   r;   r   rD   )	mframeZdf_mixed_floatsr   rM   r   r   dfrZ   Zappliedr   r   r   test_groupby_nonobject_dtypeI   s    
*rf   c                  C   s   t ddddddddddddg} dd	 }| jd
dd|}t|tsRtt ddddddddddddg}dd	 }|jd
dd|}t|tstt ddgddggddgd}|jddd }t|t std S )Nr'   r3   )val1val2   r5      r,   c                 S   s   | d | d    S Nrh   r7   Zdatafr   r   r   funcm   s    z&test_groupby_return_type.<locals>.funcrg   T)Zsqueezec                 S   s   | d | d    S rk   rl   rm   r   r   r   rn   |   s    XYcolumnsF)r   r@   rF   
isinstancer	   r   count)df1rn   r   df2re   r   r   r   test_groupby_return_typea   s.    		rw   c               	   C   s  t 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   r\   c                 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 )Nrx   r   r6   r}   r~   r   r   r   r      s    
c                 S   s   | j dkrd S | jd S Nry   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 )Nry   r   r\   )r6   r}   rV   r~   r   r   r   r      s    
)r   dictr	   r;   r<   r   r@   firstrF   rC   ra   rb   nanrV   r   NaTr6   rD   )re   r   r   r   er   r   r   test_inconsistent_return_type   s@    
r   c                 C   sn  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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 d 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   g?)r   c                 S   s   | j S r(   r   r#   r   r   r   r%      r&   FZcheck_names)Nr   )r@   rE   r;   r   rF   rG   ZquantilerC   rD   r   ra   )tstsframer   gZ
ts_groupedZ
agg_resultZapply_resultZtrans_resultZagg_expectedZtrans_expected
df_groupedr   r   r   r   test_pass_args_kwargs   s6    



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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'   r5   abr   r   r   )rC   makeTimeDataFramer@   rA   r   r!   r   r   r   r;   r   )re   rM   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'   r2   iL  g      $@)r	   listrc   r;   r=   r@   r7   )r   rL   	groupingsrM   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	j
||dd	 t|jjt| jstd S )Nr2   rz   foobarr^      r5   F)Zcheck_dtypec                 S   s   t t| S r(   )floatrA   r#   r   r   r   r     s    ztest_with_na_groups.<locals>.f)r   r;   r<   r	   onesr   r@   rE   rA   rC   rD   
issubclassr   typer   )r   r!   valueslabelsrM   rP   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 )Nr5   r'   r   clevelsr_   namesr   rr   r!   )r   emptyr   r   	set_indexr$   yZ
multiindexresr   r   r   f1,  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 )Nr5   r'   r   r   )r   r   r   r   )r$   r   r   r   r   f26  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 )	Nr5   r'   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   f3>  s      z,test_indices_concatenation_order.<locals>.f3r'   r5   r      r   r   r   r   r   r   z@Cannot concat indices that do not have the same number of levelsr.   )	r   rc   r@   rF   rC   ra   rI   rJ   r   )r   r   r   re   rv   result1result2rR   r   r   r    test_indices_concatenation_order(  s"    
""r   c              	   C   s   |  dd }| }|dd }t|| | }dd |D }t|j}t|| |j	}|dd }d}t
jt|d t|d	 W 5 Q R X d S )
Nc                 S   s   |   S r(   weekdayr#   r   r   r   r%   a  r&   z#test_attr_wrapper.<locals>.<lambda>c                 S   s   t j| ddS )Nr'   )Zddof)r;   rH   r#   r   r   r   r%   d  r&   c                 S   s   i | ]\}}||  qS r   )describe)r   r6   Zgpr   r   r   
<dictcomp>i  s      z%test_attr_wrapper.<locals>.<dictcomp>c                 S   s   | j S r(   rz   r#   r   r   r   r%   o  r&   z-'SeriesGroupBy' object has no attribute 'foo'r.   r   )r@   rH   rE   rC   rD   r   r   Tra   r   rI   rJ   AttributeErrorgetattr)r   rM   r   r   rR   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%   x  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   r4   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   )r@   rB   r;   r7   rA   r   rr   rb   r!   rC   ra   headrG   rD   xsr   groupsindicesitemstakeall)r   rM   
aggregatedZtscopyZstraggedrQ   r6   rY   r7   idxr   r   r   rN   rO   Z	samethingr   r   r   test_frame_groupbyw  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\   r]   r   r5   c                 S   s   | |    S r(   rl   r#   r   r   r   r%     r&   z,test_frame_groupby_columns.<locals>.<lambda>)r@   rB   r;   r7   rA   r   rr   r   rC   ra   rG   )r   mappingrM   r   tfZgroupedTrN   rO   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   Fas_indexr\   r]   r\   r-   r.   r   r   )r@   r7   r!   r6   r   rE   r;   rH   rI   rJ   r   )re   rM   r   rR   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k2r0   r1   threeZfourZfivesixr^   r   r   )r@   getr7   rC   ra   rV   r   r;   r=   randnarrayrE   r*   )re   Zcol1Zcol2rM   rP   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\   )r7   rH   )r@   rE   r;   r7   rH   r   rC   ra   )re   rM   rP   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   r0   r1   ZdullZshiny   )r   r   r\   r]   EFr   r   r]   r   r   r'   )keysr   )r   r;   r=   r   r@   r7   rH   rE   r   concatrs   r!   r   r   rC   ra   )rL   rM   funcsrP   r   r   r   r   "test_frame_multi_key_function_list  sj    


/
&r   opc                 C   s   |   S r(   r)   r#   r   r   r   r%   .  r&   r%   c                 C   s   |   S r(   rl   r#   r   r   r   r%   .  r&   c              	   C   s"  | }| ddg}||}g }g }| dD ]J\}}| dD ]6\}	}
|||	f |||
jd d ddgf  q>q,tj|ddgd}tj|ddj}||_dD ]8}||| }|| }|| }t	
|| t	
|| q|d  |d |d g }| ddg d }t	
|| d S )	Nr   r   r\   r]   r   r'   r   r   )r@   appendrV   r   from_tuplesr   r   r   r!   rC   rD   r7   )re   r   rL   rM   r   r   r   Zn1Zgp1Zn2Zgp2mir   colZ
result_colZpivotedexpr   r   r   r   test_groupby_multiple_columns.  s*    $r   c                  C   s   t jddgddgddggddgd} | jdd	d
d d}t jddgdd}t|| | jdd	d
d dd }t jdddgdt j	dddgd}t|| d S )Nr'   r5   r   r   r   r   r   rq   Fr   r6   c                 S   s   |   S r(   )cumsumr#   r   r   r   r%   V  r&   z-test_as_index_select_column.<locals>.<lambda>)r   r   )r   r'   r'   r5   r6   r!   )
r   r   r@   	get_groupr	   rC   rD   rF   r   r   re   r   r   r   r   r   test_as_index_select_columnO  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]   Tr-   r.   r\   Qr   rq   r   d   )2   r   ZjimZjoeZjolier   r2   r  r   )r7   maxrt   rW   r   r   )Zdrop)r@   rE   r;   r7   rC   ra   r*   rI   rJ   r   r   renamer=   randintr	   nthrF   r   r   reset_index)re   rM   r   r   r   	expected2rR   Z	expected3Zresult3r   Zgrattrleftrightr   r   r   test_groupby_as_index_agg]  sF    

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\   )
r@   rE   r;   r*   rV   rs   r   r   rC   ra   )re   rM   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 selectedr.   r\   r]   )r@   rI   rJ   
IndexError__getitem__)re   rM   rR   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'   )r@   r7   insertr!   r;   r<   rA   rC   ra   r   zipr   )re   rL   rM   r   r   Zarraysr   r   r   test_groupby_as_index_cython  s    r  c                 C   sN   | j ddgdd}|d t}|tjd d dddgf }t|| d S )Nr   r   Fr   r\   )r@   rE   rA   rV   rC   ra   re   rM   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 DataFramer.   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   )rI   rJ   	TypeErrorr@   
ValueError)re   r   rR   r   r   r   test_groupby_as_index_corner  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 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%     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&   r'   r   c                 S   s   |   S r(   r)   r#   r   r   r   r%     r&   c                 S   s   |   S r(   r)   r#   r   r   r   r%     r&   )rC   r   r@   r*   Zassert_almost_equalr   r   rE   assert_index_equalr!   rr   )re   rM   rP   r   r   r   test_groupby_multiple_key  s     r  c                 C   sP   |   } tj| d< | ddg }| ddg }tj|d< t|| d S )Nbadr   r   )rb   r;   r   r@   r7   rC   ra   )re   rP   r   r   r   r   test_groupby_multi_corner  s    

r   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   z4reduction operation 'sum' not allowed for this dtyper.   c                 S   s   | j dddS )Nr   F)Znumeric_onlyr)   r#   r   r   r   r%     r&   z$test_omit_nuisance.<locals>.<lambda>)r@   r7   rV   rC   ra   rE   r;   r   nowr*   rI   rJ   r  )re   rM   r   r   rP   r   rR   r   r   r   test_omit_nuisance   s"    
"
r"  c                 C   s2   |  ddg}|tj}| }t|| d S )Nr   r   )r@   rE   r;   r7   rC   ra   )Zthree_grouprM   rP   r   r   r   r   "test_omit_nuisance_python_multiple  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%   3  r&   z*test_empty_groups_corner.<locals>.<lambda>r   r   )r   r;   r   r=   r   r@   rE   r7   rC   ra   rF   rD   r!   r6   r   )rd   re   rM   r   r   rP   Zagged_Ar   r   r   test_empty_groups_corner!  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'r.   c                 S   s   | d S )Nr   r   r#   r   r   r   r%   =  r&   z$test_nonsense_func.<locals>.<lambda>)r   rI   rJ   r  r@   )re   rR   r   r   r   test_nonsense_func9  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d t|jkst	d S )NZpeekaboo)bazr1   r   r'   c                 S   s   | j dkrtn|  S d S )N)r   r0   )r6   r  r*   )serr   r   r   aggfunH  s    
z5test_wrap_aggregated_output_multindex.<locals>.aggfun)r   r;   r   r@   rE   r7   rs   rr   r   r   rB   rA   )rd   re   r   rP   r)  Zagged2r   r   r   %test_wrap_aggregated_output_multindex@  s     r*  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   )r@   rt   r!   r6   r   )rd   r   r   r   r   test_groupby_level_applyR  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   r'  qux)r0   r1   r   r$  c                    s   g | ]}  |qS r   r   r   )mapper0r   r   r   f  s     z-test_groupby_level_mapper.<locals>.<listcomp>r   c                    s   g | ]}  |qS r   r.  r   )mapper1r   r   r   g  s     r+  )r   r+  )	r
  r@   r*   r;   r   r!   r6   rC   ra   )rd   Z	deleveledZresult0r   Zmapped_level0Zmapped_level1Z	expected0Z	expected1r   )r/  r0  r   test_groupby_level_mapper]  s    r1  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'   r5   r   r2   r   r   r3   r   r   r   r      r+   r   r$  z2level > 0 or level < -1 only valid with MultiIndexr.   zNo group keys passed!z*multiple levels only valid with MultiIndex)
r	   r   rc   r@   r*   rC   rD   rI   rJ   r  )sr   r   rR   r   r   r   test_groupby_level_nonmultip  s4    2$r6  c                  C   s^   t tdd ddddgd} t d}| jdd }t|| | jdd}t|| d S )Nr         ?       @r   r'   rL   r!   )r7  y      @      $@r$  )r	   r;   r<   r@   r*   rC   rD   )r   r   r   r   r   r   test_groupby_complex  s    r9  c                  C   s   t dgd dgd  dgd dgd  dgd  d	gd  dgd  dgd  dgd  d
d tddD tjjdddd} dd }dd }| d|}| d|}t|| d S )Nr      r   r   r   r5   dr   r   c                 S   s   g | ]}d | qS )r   r   r   r   r   r   r     s     z&test_mutate_groups.<locals>.<listcomp>r'      r     )size)cat1cat2Zcat3valc                 S   s,   |   } | jjdd| d< | dd  S Nmin)methodrankr@  )rb   rA  rE  r@   rC  r#   r   r   r   f_copy  s    z"test_mutate_groups.<locals>.f_copyc                 S   s$   | j jdd| d< | dd  S rB  )rA  rE  r@   rC  r#   r   r   r   	f_no_copy  s    z%test_mutate_groups.<locals>.f_no_copyr?  )	r   rc   r;   r=   r  r@   rF   rC   rD   )re   rF  rG  Z
grpby_copyZgrpby_no_copyr   r   r   test_mutate_groups  s0    rH  c               
   C   sd   t dddddddddg	tdd} | jdddd	d
 }| jddddd
 }t|| d S )Nr'   r5   r   r   )r   rU   r   T
group_keysc                 S   s   | d d  j S r(   r   r#   r   r   r   r%     r&   z/test_no_mutate_but_looks_like.<locals>.<lambda>c                 S   s   | j S r(   rK  r#   r   r   r   r%     r&   )r   rc   r@   rF   rC   rD   )re   r   r   r   r   r   test_no_mutate_but_looks_like  s    $rL  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      "      @g      Y@g      g     K@g@r   r   r   r;  r   r   r   r^   r   g      @h)	r	   r   r@   r7   r?   r!   r   rC   rD   )s1s2rM   rP   r   r   r   r   'test_groupby_series_indexed_differently  s     
rR  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   r-  r0   r1   )r   cat)r   dog)r   rS  )r   rT  r:  r   r!   rr   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   r3  )r   r  r   r   r   r;   r=   r   r@   r7   rC   r  rr   r!   rE   rF   r   Z	sortlevel)Ztuplesr!   rr   re   r   Zsorted_columns_r   r   r   test_groupby_with_hier_columns  s6    

rW  c                 C   s:   |  | d j}| }|  d }tj||dd d S )Nr   Fr   )r@   r   r*   rC   ra   r  r   r   r   test_grouping_ndarray  s      rX  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   r@   rE   r;   r7   rC   ra   )rL   rM   r   r   r   r   r   test_groupby_wrong_multi_labels  s    rY  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   )r@   r7   r!   r6   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%   ,  r&   z.test_seriesgroupby_name_attr.<locals>.<lambda>)r@   rt   r6   r   r7   rE   )re   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   r0   r1   r:  r   r   r   )r   r;   r=   r   r<   r@   r   rt   r   rC   rD   re   r   r   r   r   r   test_consistency_name0  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'   r5   r   rt   r7   Z	omissionsr   )r	   )re   r6   r   r   r   	summarizeC  s    z0test_groupby_name_propagation.<locals>.summarizec                 S   s   t dddd| jd d dS )Nr'   r5   r   r_  r   r   r   )r	   r}   re   r   r   r   summarize_random_nameF  s    z<test_groupby_name_propagation.<locals>.summarize_random_namer   metrics)N)r@   rF   rr   r6   r   )re   r`  rb  rc  r   r   r   test_groupby_name_propagationA  s    
rd  c                  C   sJ   t dd tdD } | d}| }| | d  }t|| d S )Nc                 S   s   g | ]}t d qS )r2   )r;   r<   r   r   r   r   r   U  s     z2test_groupby_nonstring_columns.<locals>.<listcomp>r2   r   )r   rc   r@   r7   rC   ra   r  r   r   r   test_groupby_nonstring_columnsT  s
    
re  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'   r5   r   r   rq   r   r   )r   r   r@   r   rC   ra   r*   r]  r   r   r   test_groupby_mixed_type_columns\  s    "rf  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   r2   )r;   r   fillr   r	   Ztilerc   r@   rE   ZmedianZisnar   r   )ZarrobjZindsr   r   r   r   (test_cython_grouper_series_bug_noncontigi  s    
ri  c                  C   s^   t tdd} ttjd| d d d d}tjddd}||}dd	 }|	| d S )
Nr2   r  r  r5   r^   r   r   c                 S   s   t ttt| jS r(   )rA   setmapidr!   r#   r   r   r   r%   ~  r&   z5test_series_grouper_noncontig_index.<locals>.<lambda>)
r   rC   Zrands_arrayr	   r;   r=   r   r  r@   rE   )r!   r   r   rM   r   r   r   r   #test_series_grouper_noncontig_indext  s    
rm  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   r;  r   rT   rz   c                 S   s   t t|  S r(   )r   strr7   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|   )rA   r   baser   r   rn  r7   r#   r   r   r   convert_force_pure  s    zDtest_convert_objects_leave_decimal_alone.<locals>.convert_force_purer   )r	   rc   r;   r   r@   rE   r   Zobject_r   rs   r   )r5  r   ro  rq  rM   r   r   r   r   (test_convert_objects_leave_decimal_alone  s    


rr  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   rz   )r$   rc   r$   )r6   r   rc   r    T)Z	by_blocks)r   r;   r<   r   r   r   r@   r   r   r	   rC   ra   )re   r   Z	exp_indexr   r   r   r   "test_groupby_dtype_inference_empty  s    rs  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'$r.   r3  r   r'   r   r   r5   )r   r   rA  r   r   rA  )r@   r   r7   rC   ra   rI   rJ   KeyErrorr   r;   r=   r   r  r   r   r   "test_groupby_list_infer_array_like  s    $ ru  c                  C   sv   d} t jt dd| d}t jddgddggd	d
g|d}|t jd| dd	g }||jd	g}t	
|| d S )Nr5  z2015-09-29T11:34:44-0700r5   )startr{   freqr   r2   r   r<  Zmetricr   r   r   )r   rw  )r   r   r
   r   r@   r   r7   r   r!   rC   ra   )rw  r!   re   r   r   r   r   r   $test_groupby_keys_same_size_as_index  s       rx  c               	   C   s   d} t jtjddtdd}tjt| d |	d W 5 Q R X t jtjddtdd}tjt| d |	d W 5 Q R X d S )	Nz^'Z'$r'   r   ABCDrq   r.   Zr5   )
r   r   r;   r=   r   r   rI   rJ   rt  r@   )rR   ru   rv   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s>ttjtdd |tj W 5 Q R X tjtdd |t j W 5 Q R X q d S )Nr:  z
2013-01-01z
2013-02-01r   r   )r   dtrn  r|  r'   r+   r   r   r5   r   z2013-01-01 00:00:00rz   z2013-02-01 00:00:00z^NaT$r.   )r   natr   r   r}  zdatetime64[ns]z^nan$)!r   r   r;   r=   r   r   r
   r@   r   sortedr   r   rA   r   r  rC   r  ra   grouperr   rh  Zngroupsr   r   r   assert_numpy_array_equalr   r}   rI   rJ   rt  r   r   )re   rM   r   r   rN   r   Znan_dfr   r   r   r   test_groupby_nat_exclude  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jddgddggtjd}t|j	t
dd	g t|j| d S )Nr5   r^   Zg1Zg2rY   r   zerosr'   r   l1l2labelrz   )r   rc   r@   r7   r;   r   r   rC   r  rr   r   r  r   )r;  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]   )
r;   Zconcatenater<   r   r=   r   r@   r*   rA   r   )r   r   re   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   r'  r   r5   r'   r   )r   r   r   r;  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   T)sortc                 S   s   g | ]}t |qS r   r  r  r   r   r   r   0  s     c                 S   s   g | ]}t |qS r   r  r   r   r   r   r   5  s     r   )r   r   r;  r;  c                 S   s   |   S r(   r)   r#   r   r   r   r%   @  r&   z)test_groupby_sort_multi.<locals>.<lambda>c           	      S   sV   dd | | j D }t|}|| || }| D ]\}}|| |ks8tq8d S )Nc                 S   s   g | ]}t |qS r   r  r  r   r   r   r   A  s     zCtest_groupby_sort_multi.<locals>._check_groupby.<locals>.<listcomp>)r   comasarray_tuplesafer@   r   r   )	re   r   r   fieldr   tupsr   rN   rO   r   r   r   _check_groupby@  s
    
z/test_groupby_sort_multi.<locals>._check_groupby)r   r;   r=   r   r   r  r  r@   r*   rC   r  r!   )re   r  r   rM   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'  r5   )r   r6   r   c                 S   s   | S r(   r   r#   r   r   r   r%   O  r&   z/test_dont_clobber_name_column.<locals>.<lambda>)r   r@   rF   rC   ra   re   r   r   r   r   test_dont_clobber_name_columnJ  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%   W  r&   z&test_skip_group_keys.<locals>.<lambda>FrI  c                 S   s   | j ddd d S )Nr   Zbyr   sort_valuesr#   r   r   r   r%   X  r&   c                 S   s$   g | ]\}}|j d ddd qS )r   r  Nr   r  r   r   rY   r   r   r   r   Z  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   b  s     )rC   r   r@   rF   r   r   ra   rD   )ZtsfrM   r   piecesr   r   r   r   test_skip_group_keysS  s    

r  c                 C   s:   | d   }d |_|| d tj}|jd ks6td S )Nr\   r   )rb   r6   r@   rE   r;   r*   r   )Zfloat_framer5  r   r   r   r   test_no_nonsense_nameh  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  r5   )	r   r;   r<   reshaper@   rE   r   r   r   )r$   rM   r   r   r   r   test_multifunc_sum_bugq  s    
r  c                 C   sV   dd }dd }|  dd |}|  dd |}t|tsFtt|| d S )Nc                 S   s   |   |  dS Nr  rC  r  rX   r   r   r   r   }  s    z(test_handle_dict_return_value.<locals>.fc                 S   s   t |  |  dS r  )r	   r  rC  rX   r   r   r   r     s    z(test_handle_dict_return_value.<locals>.gr   r\   )r@   rF   rs   r	   r   rC   rD   )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(   )r6   r   rX   r   r   r   r     s    ztest_set_group_name.<locals>.fc                 S   s   | j d k	st|  S r(   )r6   r   r*   rX   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\   )r@   rF   rB   rG   )re   r  r   r   rM   r   r  r   test_set_group_name  s    



r  c                     sb   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'   r5   r   r   c                    s     | j |  S r(   )r   r6   rb   rX   r   r   r   r     s    z6test_group_name_available_in_inference_pass.<locals>.fr   F)r  rJ  )r   r   r;   r<   r@   rF   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)r@   r   r*   r!   r6   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'   r5   r   r   r   r   r   r   r   r^   Fr   r  T)r   r	   r@   r   rC   rD   
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d }|d|dtji}|d|dtjdi}t|| d S )Ni  z2012/1/1Z5min)rv  rw  r{   )highlowr^   Fc                    s    fdd}|S )zB
            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   )rV   r!   rk  dropnarA   rL   r;  fixrn   r   r   _func  s    zGtest_groupby_reindex_inside_function.<locals>.agg_before.<locals>._funcr   )r  rn   r  r  r   r  r   
agg_before  s    z8test_groupby_reindex_inside_function.<locals>.agg_beforec                 S   s   |  dd  }t|S )Nc                 S   s
   | j dk S r  r  r#   r   r   r   r%     r&   zEtest_groupby_reindex_inside_function.<locals>.afunc.<locals>.<lambda>)selectr  r;   r  r  r   r   r   afunc  s    z3test_groupby_reindex_inside_function.<locals>.afuncc                 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  r   T)F)	r   r   r;   r<   r@   rE   r  rC   ra   )r{   indre   r  r  rM   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   r;  r'   r   )group1group2rU   r  r  Tr  r*   )r   r   )r   r;  )r   r   r   r5   rU   rU  )r   r   r@   rE   r   r   rC   ra   )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   rq   r   r;  r  r  r  r  )rr   rL   )r!   rr   r   r5   )r$   r   zr$   r   r   )FTr  )r   r   r   rr   Zis_lexsortedr   pivot_tabler
  rC   ra   r@   r7   Zassert_produces_warningr   r   r!   rF   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ABCDEr5   r   r'   r^   Zababbc                 S   s   t | dkS r:   rA   r#   r   r   r   r%   ?  r&   z4test_index_label_overlaps_location.<locals>.<lambda>r   r   c                 S   s   t | dkS r:   r  r#   r   r   r   r%   E  r&   c                 S   s   t | dkS r:   r  r#   r   r   r   r%   L  r&   c                 S   s   t | dkS r:   r  r#   r   r   r   r%   R  r&   )r   r   r@   filterr}   rC   ra   r   rD   r!   r`   r   )re   r   actualr   r(  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   r5          @      @r   r   r   r7   )r;   r<   r   r@   rG   rC   ra   )nr$   re   rv   gbr   Zgb2r   r   r   r   "test_transform_doesnt_clobber_intsW  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   r:  r+   r   r   r5   r   gffffff@g333333@g@g333333g@g?r;  r   wordZword2Z42Z47)r  r  r  r  r  r  c                    s   t | | j d d S )Nr  )rC   ra   r  r#   r  r   r   	test_sort  s    z.test_groupby_preserves_sort.<locals>.test_sort)r   r  r@   rF   )r  r  re   r   r  r   r  r   test_groupby_preserves_sortf  s    
r  c                     st   d t dd t D tdddgd d} | ddg}t  fddt D tdgd d}|d	}t|| d S )
Ni  c                 S   s,   g | ]$}|d  |d r|d nt j|fqS r,   r   r;   r   r   ir   r   r   r     s     z2test_group_shift_with_null_key.<locals>.<listcomp>r   r   rz  r   rr   r!   c                    s.   g | ]&}|d  r$| d k r$|d nt jqS )r   r,   r  r  Zn_rowsr   r   r     s     r3  r   rc   r   r@   shiftrC   ra   re   r   r   r   r   r  r   test_group_shift_with_null_key  s     
r  c                     s~   d t dd t D tdddgd d} | ddg}t  fddt D tdgd d}|jd	d
ddg }t|| d S )N   c                 S   s   g | ]}|d  |d |fqS r  r   r  r   r   r   r     s     z4test_group_shift_with_fill_value.<locals>.<listcomp>r   r   rz  r  c                    s$   g | ]}| d  k r|d  ndqS )r,   r   r   r  r  r   r   r     s     r3  r   )Z
fill_valuer  r  r   r  r    test_group_shift_with_fill_value  s     r  c                  C   sT   t j } tddg| d}|ddjd }td| i|jd}t	
|| d S )Nr'   )r   dater   r   r  r   )r   r
   utcnowr   r@   r  r}   r	   r6   rC   rD   )Znow_dtre   r   r   r   r   r   test_group_shift_lose_timezone  s
    
r  c               	   C   s   t t j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 )Nr3   Mr{   rw  r   )	eventDateZthenamer  r   r   z	'badname'r.   Zbadnamert   )r!   rr   r   Zaggfunc)r   r   r   r   todaytolistrc   r   r!   r   r   rI   rJ   rt  r
  r  ra  r   r   r   !test_pivot_table_values_key_error  s       r  c                  C   sH   t dddgd} | d }t ddgtjd}d|j_t|| d S )Nr   r   r\   rq   )rr   r   )	r   r@   r*   r;   r   r!   r6   rC   ra   r  r   r   r   test_empty_dataframe_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t | dddg d W 5 Q R X | dd  }t jdgdt jdgdd	d
}t	
|| d S )Nr'   r5   )r   r   r   r   r   r   r   r   r   r   r   )r   r   rI   rJ   rt  r@   r*   r	   r   rC   rD   r  r   r   r   test_tuple_as_grouping  s    



	r  c               	   C   sT   t jdtdt jddgddggd} tjtdd | d	  W 5 Q R X d S )	Nr'   r   r5   r   rU  z
^\(7, 8\)$r.   )r+   r:  )
r   r   rc   r   from_productrI   rJ   rt  r@   r7   ra  r   r   r   test_tuple_correct_keyerror  s      r  c                  C   s   t jdgdggdgt jddddd} t jdddddgdddddggt jdt jddddd}| t jdd	d
dg}t	|| d S )Nr'   r   z
2018-01-01r5   r]   r  r   ))r   r*   r   )r   ohlcopen)r   r  r  )r   r  r  )r   r  close)rw  r*   r  )
r   r   r   r   r   r@   r   rE   rC   ra   r]  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j| dd gd}t jddd	d
g|d}|jdd }t jdd	gddgd}t	|| d S )Nr   i  r'   r5   r   r   r  r   g      @r   r^   r$  r  )
r   r   r   r   r   r	   r@   r7   rC   rD   )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 )Nr2   Zappler   rq   z$Grouper and axis must be same lengthr.   )r  rc   r   rI   rJ   r  r@   )r   re   rR   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j| |d}t jd	d
g|d}|ddg }dgdgg} ddg}t jj| |d}t jdg|d}t|| d S )Nr$   r   r   rN   r   r+  thirdr   r'   r5   r8  r   r^   )r   r   Zfrom_arraysr	   r@   r*   rC   rD   )Zindex_arrayZindex_namesrir5  r   eir   r   r   r   8test_groupby_multiindex_series_keys_len_equal_group_axis-  s    
r  c                  C   s   t jjddgddggddgd} t jdd	dd	gdd	d
dgd| d}|t jdddg}|ddg}|j|jksxt|dt jddg}|ddg}|j|jkstd S )Nr   r   r\   r]   alphabetar   r'   r5   r   r   r   r^   r$  )r   r   r  r   r@   r   r   r   )r   re   r   r   r   r   r   "test_groupby_groups_in_BaseGrouper=  s     $r  
group_namer$   c                 C   s   t j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j|d
dgd}t jtddddddg|d}|j| dd	 }|j
| 	 j
}t|| d S )Nr,   r   r   r   r'   r2   r3   rU  r   r$   r   r   r'  r   r0   r1   x1)	iterablesr      r   )r   r   r;   r<   r  r!   r6   rr   r@   r*   r   rC   ra   r   r  )r   re   resultsr   r  r   r   r   r   test_groupby_axis_1K  s       
$r  zop, expectedr  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
  )rl  r  c                    s   | j j S r(   r  r|  Ztz_localizer#   tzr   r   r%     r&   z+test_shift_bfill_ffill_tz.<locals>.<lambda>)r  rl  c                    s   | j j S r(   r  r#   r  r   r   r%     r&   )r
   r   Zassignr@   r   rC   ra   )Ztz_naive_fixturer   r   rL   re   rM   r   r   r  r   test_shift_bfill_ffill_tza  s    .
r  c                  C   sH   t d gdd} | dd d}t jtjgdd}t|| d S )Nr'   )r   r$   r   r$   r*   r   )	r   r   r@   rG   r	   r;   r   rC   rD   )re   r  r   r   r   r   test_groupby_only_none_group  s    r  c                  C   s\   t jddddgddddgd} | jd	d
}| }t jdddgdddgd}t|| d S )Nr5   r   r   r:  r  rN  rM  r^   r   r$  g      @)r   r	   r@   r7   rC   rD   )r(  r  r   r   r   r   r   test_groupby_duplicate_index  s
    r  bool_agg_funcanyr   c                 C   sD   t jddggddgd}|dg}t||  }|}t|| d S )NTr   rq   r   )r   r   r@   r   rC   ra   )r  re   grp_byr   r   r   r   r    test_bool_aggs_dup_column_labels  s
    r  r   r   )r   r   r  c                 C   s   | dkrt d tjddgg|d}|dg}g }| dkrJ|d n8| dkr^|| n$| dkrtd	g|_|dd
g t	|| | }|j
dkstt|j| d S )N>   r>  ngroupcumcountzNot applicabler'   rq   r   >   r	  fillnaZcorrwithZtshiftr  r]   r   )rI   skipr   r   r@   r   r
   r!   extendr   shaper   rC   r  rr   )Zgroupby_funcr   re   r  argsr   r   r   r   test_dup_labels_output_shape  s    
r  c                 C   sv   t ddgddgddgd}|| }|s2|j}|j|dd }t ddgddgd}|sf|j}t|| d S )Nr'   r5   r   r   )rZ  )r   r\   )r]   r   )r   r   )r   r]   )r   r   Z_get_axis_numberr   r@   ZnuniquerC   ra   )r   re   Zaxis_numberr   r   r   r   r   test_groupby_crash_on_nunique  s    
r  c                  C   s<   t tdddd} | jdgd }t||  d S )Nr   r   r   r$  )	r   r   r;   r<   r  r@   r7   rC   ra   )r   r   r   r   r   test_groupby_list_level  s    r  )~r   decimalr   ior   Znumpyr;   rI   Zpandas.errorsr   Zpandasr   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingrC   Zpandas.core.baser   Zpandas.core.commoncorecommonr  r   markZparametrizerS   rf   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r   r"  r#  r%  r&  r*  r,  r1  r6  r9  rH  rL  rR  rW  rX  rY  r[  r\  r^  rd  re  rf  filterwarningsri  rm  rr  rs  ru  rx  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r   r   r   r   <module>   sF  $
0'>( 
8(=
 8	

 !&




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

 
