o
    d[                    @   s	  d dl m Z  d dlmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlZd dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlm  mZ  d dl!m"Z" d	d
 Z#dd Z$ej%&dg d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g d d!d" Z.d#d$ Z/d%d& Z0d'd( Z1d)d* Z2d+d, Z3d-d. Z4d/d0 Z5d1d2 Z6d3d4 Z7ej%&d5d6d7 d8d7 gd9d: Z8d;d< Z9d=d> Z:d?d@ Z;dAdB Z<dCdD Z=dEdF Z>dGdH Z?dIdJ Z@dKdL ZAdMdN ZBdOdP ZCdQdR ZDej%&dSdTdUgdVdW ZEej%&dSg dXej%&dYddgdZd[ ZFd\d] ZGd^d_ ZHd`da ZIdbdc ZJddde ZKdfdg ZLdhdi ZMdjdk ZNdldm ZOdndo ZPdpdq ZQdrds ZRdtdu ZSdvdw ZTdxdy ZUdzd{ ZVd|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 Zhdd Zidd Zjdd Zkdd Zlej%&ddddggdd Zmdd Zndd Zodd Zpdd Zqdd Zrdd Zsdd Ztdd Zuej%&ddddddgddggej%&dddddggddń ZvddǄ Zwej%&dddggej%&ddgddggej%j&ddgd gdgdged ged ged ddddЍejxddddԍejyd gdd֍ejyd gdd֍ejydgdd֍gg d٢dڍej%&dg dܢej%&d5g dݢdd߄ Zzdd Z{dd Z|dd Z}dd Z~dd Zdd Zdd Zdd Zej%&dddggdd Ze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 Zdd  Zdd Zdd Zej%&deddgddejddd	gd
gdd Zdd Zdd Zej%&dg d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dfeddfeddfeddfeddfeddfgdd Zdd  Zej%&d!g d"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 Zd:d; Zd<d= Zej%&dYddgd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS Zej%&d!g dTdUdV Zej%&dWdXdYgdZd[ Zej%&d\d]d^gd_d` Zej%&dadbdejfgdcdd Zej%&deg dfg dgg dhfg dig djg dkfgdldm Zej%&dng dodpdq Zej%drej%&dg dsdtdu Zdvdw Zdxdy ZdS (z      )datetime)DecimalN)IS64)PerformanceWarningSpecificationError)Categorical	DataFrameGrouperIndex
MultiIndex
RangeIndexSeries	Timedelta	Timestamp
date_rangeto_datetime)BooleanArray)get_groupby_method_argsc                  C   s$   t tddd} d}| |ksJ d S )NAB)keylevelz<Grouper(key='A', level='B', axis=0, sort=False, dropna=True))reprr	   )resultexpected r   U/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/groupby/test_groupby.py	test_repr!   s   r   c            	      C   s   t jddd} t| }|d d d  d9  < |d}|td |d< |tdd	d
 |d< t j|jd< |tt	dd }|
 }td}td}t|d ||||gtdd}t|||d}t|| d S )Nz1 Day'  periods      r   r   r   UTCtzCi  z2887 days 11:21:02.326710176z2886 days 00:42:34.664668096indexr   r   r&   )pdZtimedelta_ranger   to_framer   NaTilocgroupbylistrangestdr   nparanger   tmassert_frame_equal)	Ztdiserdfgbr   Ztd1Ztd4Zexp_serr   r   r   r   test_groupby_std_datetimelike(   s   
 r:   dtype)int64int32float64float32c                    s  t tdd td| d}td}tj| ||}|jdd dd}|D ]\}}t|dks6J q*|tj	}|d dksEJ t
||tj	 t
||	  t
|tj|  |d	d }|d
d }|d dksyJ t
|| ||}	t
j|	tj	|dd |tj	tjg}d}
tjt|
d |tj	tjd W d    n1 sw   Y  dddd | fdd}|d dksJ d}
tjt|
d |dd  W d    d S 1 sw   Y  d S )N	      r)   r;   c                 S   s   | d S NrA   r   xr   r   r   <lambda>K       ztest_basic.<locals>.<lambda>F
group_keys   c                 S      | |    S NsumrD   r   r   r   rF   W       c                 S   rK   rL   rM   rD   r   r   r   rF   X   rO         Zcheck_index_typenested renamer is not supportedmatch)onetwo
         r   rJ   r"   c                    s    | j  |   S rL   )namemeanrD   Zgroup_constantsr   r   rF   i          zMust produce aggregated valuec                 S   s   | d S Nr"   r   rD   r   r   r   rF   p   rG   )r   r3   r4   randomshufflereindexr/   len	aggregater]   r5   assert_series_equalaggrN   apply	transformr2   pytestraisesr   	Exception)r;   datar)   groupedkvaggedr   transformedZvalue_groupedmsgr   r^   r   
test_basicC   s@   


"ru   c           	      C   s   | j jd }| |}| }| |d }|j jtjks"J |j jtjks+J t	j
||dd | }tt||d< dd }|d|}|j}|j}t	|| d S )	Nr   OFrR   valuec                 S   s   | j | d   S )Nrw   )locidxmaxgroupr   r   r   	max_value      z/test_groupby_nonobject_dtype.<locals>.max_valuer   )r)   codesr/   rN   astyper;   r3   int8r<   r5   r6   copyr1   re   ri   dtypesrg   )	mframeZdf_mixed_floatsr   ro   r   r   r8   r|   Zappliedr   r   r   test_groupby_nonobject_dtypes   s   
r   c            	      C   s~  t g d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)Tigerr   r   Lambr   Ponyr   rP   r<   r;   Z20130101r   r*   c                 S   s
   | j d S Nr   )r.   grpr   r   r   f_0   s   
z*test_inconsistent_return_type.<locals>.f_0r   r   c                 S      | j dkrd S | jd S )Nr   r   r\   r.   r   r   r   r   f_1      

z*test_inconsistent_return_type.<locals>.f_1r   c                 S   r   Nr   r   r   r   r   r   r   f_2   r   z*test_inconsistent_return_type.<locals>.f_2r   c                 S   r   r   r   r   r   r   r   f_3   r   z*test_inconsistent_return_type.<locals>.f_3r&   c                 S   s   | j dkrd S | jd jd S )Nr   r   r&   )r\   r.   rx   r   r   r   r   f_4   s   
z*test_inconsistent_return_type.<locals>.f_4)r   r   r3   r4   r   r/   firstri   r5   r6   r   nanrx   r+   r-   r\   rg   )	r8   r   r   r   r   er   r   r   r   r   r   test_inconsistent_return_type   s>   
r   c                 C   s  ddd}dd }|  dd }|jtjddd}|jtjddd}|jtjddd}|d	}||}	t|| t|| t||	 |j|dd
}|j|dd
}|j|dd
}t|| t|| t||	 dD ]c}
|j dd |
d}|jtjddd}|t	jd	}|d	}tj
||dd t
|| |t	jdd	g}|dd	g}tj
||dd |j|dd
}|jt	jd	d
}t
|| tj
||dd qpd S )Nr   c                 S   s   t j| ||dS )Naxisr3   
percentile)rE   qr   r   r   r   f      z test_pass_args_kwargs.<locals>.fc                 S   s   t j| dddS )NP   r   r   r   rD   r   r   r   rF          z'test_pass_args_kwargs.<locals>.<lambda>c                 S      | j S rL   monthrD   r   r   r   rF          r   r   皙?)r   )TFc                 S   r   rL   r   rD   r   r   r   rF      r   as_indexFZcheck_namesg?r   )r/   rh   r3   r   ri   rj   quantiler5   rg   r   r6   )tstsframer   gZ
ts_groupedZ
agg_resultZapply_resultZtrans_resultZagg_expectedZtrans_expectedr   
df_groupedr   Zexpected_seqr   r   r   test_pass_args_kwargs   s@   



r   r   TFc                 C   s   g d| _ | jdd |d}|jtjddd}| | jjdk d	| | jjd
k d	d}t|j	}|j
tj|_|sDttd
|_t|| d S )N)r   r   r   r&   c                 S   r   rL   r   rD   r   r   r   rF      r   z9test_pass_args_kwargs_duplicate_columns.<locals>.<lambda>r   r   r   r   rJ   r   r"   rJ   r"   )columnsr/   rh   r3   r   r)   r   r   r   Tr   r=   r
   r1   r5   r6   )r   r   r9   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sJ | dd dd g}tdd | jD }t||ks9J ttjgd	 g d
d} t| ddksQJ t| dd	ks\J t| ddgd	ksiJ d S )Nc                 S   r   rL   yearrD   r   r   r   rF     r   ztest_len.<locals>.<lambda>c                 S   r   rL   r   rD   r   r   r   rF     r   c                 S   r   rL   dayrD   r   r   r   rF     r   c                 S   r   rL   r   rD   r   r   r   rF     r   c                 S   r   rL   r   rD   r   r   r   rF     r   c                 S   s   h | ]}|j |jfqS r   )r   r   .0rE   r   r   r   	<setcomp>  s    ztest_len.<locals>.<setcomp>rA   rJ   r"   rA   abr   r   r   )r5   makeTimeDataFramer/   re   r)   r   r3   r   )r8   ro   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>      z)test_basic_regression.<locals>.<listcomp>rJ   rX   iL  g      $@)r   r0   r1   r3   rb   r/   r]   )r   rn   	groupingsro   r   r   r   test_basic_regression  s
    
r   )r>   r?   r<   r=   Zint16r   c                 C   s   t td}ttd|| d}ttjdddtjtjddtjdg
|d}||}|t}tddgddgd}t	j
||dd	 d
d }||}tddgddgd}t	
|| d S )NrX   r   foobarr(      r"   F)Zcheck_dtypec                 S   s   t t| S rL   )floatre   rD   r   r   r   r   :  s   ztest_with_na_groups.<locals>.f      @       @)r
   r3   r4   r   onesr   r/   rh   re   r5   rg   )r;   r)   valueslabelsro   rr   r   r   r   r   r   test_with_na_groups%  s   


r   c                  C   s  dd } dd }dd }t g dtdtd	d
d}t g dtdtd	d
d}|d| }|d| }t|| d}tjt|d |d| W d    n1 s\w   Y  tjt|d |d| W d    n1 s{w   Y  tjt|d |d| W d    n1 sw   Y  tjt|d |d| W d    d S 1 sw   Y  d S )Nc                 S   s^   | | j d dk d }|jr&tg gd g gd ddgd}tdg|d}|S |ddg}|S )Nr"   rJ   r   cZlevelsr~   namesr   r   r)   )r   emptyr   r   	set_indexrE   yZ
multiindexr   r   r   r   f1F  s   z,test_indices_concatenation_order.<locals>.f1c                 S   s4   | | j d dk d }|jrt S |ddg}|S )Nr"   rJ   r   r   )r   r   r   r   )rE   r   r   r   r   f2P  s
   z,test_indices_concatenation_order.<locals>.f2c                 S   sR   | | j d dk d }|jr'tg gd g gd ddgd}tddg|d}|S |S )	Nr"   rJ   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   f3X  s   z,test_indices_concatenation_order.<locals>.f3)rJ   r"   r"   r"   r   r!   r@   r   r   r   )rA   r"   r"   r"   r   z@Cannot concat indices that do not have the same number of levelsrT   )	r   r1   r/   ri   r5   r6   rk   rl   AssertionError)r   r   r   r8   df2result1result2rt   r   r   r    test_indices_concatenation_orderC  s*   
"r   c                 C   s   |  dd }| }|dd }t|| | }dd |D }t|j}t|| |j	}|dd }t|| d}t
jt|d t|d	 W d    d S 1 sXw   Y  d S )
Nc                 S      |   S rL   weekdayrD   r   r   r   rF   {  rG   z#test_attr_wrapper.<locals>.<lambda>c                 S   s   t j| ddS )NrJ   )Zddof)r3   r2   rD   r   r   r   rF   ~      c                 S   s   i | ]	\}}||  qS r   )describe)r   r\   gpr   r   r   
<dictcomp>      z%test_attr_wrapper.<locals>.<dictcomp>c                 S   r   rL   r   rD   r   r   r   rF     r   z-'SeriesGroupBy' object has no attribute 'foo'rT   r   )r/   r2   rh   r5   rg   r   r   r   r6   r;   rk   rl   AttributeErrorgetattr)r   ro   r   r   rt   r   r   r   test_attr_wrapperz  s   
"r   c                 C   sj  |  dd }|tj}t|dksJ t|jdksJ |  }dd |jD |d< | dtj}tj	||dd	 | 
d
 dd }|dd }t|d
ksVJ t|jdks_J |dd }|D ]\}}| }|jD ]}	tj||	|dd	 qsqh|D ]\}
}|jd  |
ksJ q|j}|j}| D ]\}}| j|| }||k sJ qd S )Nc                 S   r   rL   r   rD   r   r   r   rF     rG   z$test_frame_groupby.<locals>.<lambda>r!   r   c                 S   s   g | ]}|  qS r   r   r   r   r   r   r     r   z&test_frame_groupby.<locals>.<listcomp>r   Fr   rZ   c                 S   r   rL   r   rD   r   r   r   rF     rG   c                 S      | |    S rL   r]   rD   r   r   r   rF     rO   c                 S   r   rL   r   rD   r   r   r   rF     rG   r   )r/   rf   r3   r]   re   r   r   r)   r5   r6   headrj   rg   Zxsr   groupsindicesitemstakeall)r   ro   
aggregatedZtscopyZstraggedrs   r\   r{   r]   idxr   r   r   rp   rq   Z	samethingr   r   r   test_frame_groupby  s4   
r   c                 C   s   ddddd}| j |dd}|tj}t|t| ksJ t|jdks'J dd }| jj |dd}t|	|j|	| |D ]\}}t|jdksOJ qBd S )Nr   rJ   r   r   r&   Dr   r"   c                 S   r   rL   r   rD   r   r   r   rF     rO   z,test_frame_groupby_columns.<locals>.<lambda>)
r/   rf   r3   r]   re   r   r   r5   r6   rj   )r   mappingro   r   tfZgroupedTrp   rq   r   r   r   test_frame_groupby_columns  s   r   c                 C   sF  |  d}|jdd}|jjdksJ | j dddjdd}|jjdks&J |ddg tj}|jjdks8J |tjtjd}|jjdksJJ |d  }|jjdksXJ |d tj}|jjdkshJ |d tjtjg}|jjdks{J d	}tjt	|d
 |d tjtjd W d    d S 1 sw   Y  d S )Nr   Tnumeric_onlyFr   r&   r   r&   r   rS   rT   r   r   )
r/   r]   r)   r\   rh   r3   r2   rk   rl   r   )r8   ro   r   rt   r   r   r   test_frame_set_name_single  s&   
"r  c                 C   s   | d }| d }|  |j|jg}|jdd}|  ddg }tj|jd d ddgf |jd d ddgf dd ttj	d	tj	d	t
g d
t
g ddg dd} |  ddg}|tj d S )Nr   r   Tr   r&   r   Fr      r   r   r   r   r   r   1r  r  2r  r  )v1v2k1k2)rV   rW   threefourfivesixr(   r	  r
  )r/   getr]   r5   r6   rx   r   r3   rb   randnarrayrh   rN   )r8   Zcol1Zcol2ro   rr   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]   r2   )r/   rh   r3   r]   r2   r   r5   r6   )r8   ro   rr   r   r   r   r   !test_multi_key_multiple_functions  s   r  c                  C   s   t g dg dtjdtjdtjdd} | ddg}tjtjg}||}tj	|d ||d ||d	 |gg d
dd}t
|jtsPJ t
|jtsXJ t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   rV   rV   rV   rW   rV   rV   rV   rW   rW   rW   rV      )r   r   r   EFr   r   r   r  r  )r   r  r  rJ   )keysr   )r   r3   rb   r  r/   r]   r2   rh   r+   concat
isinstancer)   r   r5   r6   )rn   ro   funcsrr   r   r   r   r   "test_frame_multi_key_function_list  s&   


"
&r  c               	   C   s   t g dg dg dtjdtjdtjdd} | ddg}tjtjg}tjt	dd	 |
| W d    d S 1 sBw   Y  d S )
Nr  r  )dullr  shinyr  r  r  r  r  r  r  r  r  )r   r   r&   r   r  r  r   r   z+Could not convert dullshinyshiny to numericrT   )r   r3   rb   r  r/   r]   r2   rk   rl   	TypeErrorrh   )rn   ro   r  r   r   r   2test_frame_multi_key_function_list_partial_failure<  s   


/"r!  opc                 C   r   rL   rM   rD   r   r   r   rF   r  rG   rF   c                 C   r   rL   r   rD   r   r   r   rF   r  rG   c              	   C   s"  | }| ddg}||}g }g }| dD ]%\}}| dD ]\}	}
|||	f |||
jd d ddgf  qqtj|ddgd}tj|ddj}||_dD ]}||| }|| }|| }t	
|| t	
|| qR|d  |d |d g }| ddg d }t	
|| d S )	Nr   r   r&   r   r   rJ   r   r   )r/   appendrx   r   from_tuplesr+   r  r   r)   r5   rg   r]   )r8   r"  rn   ro   r   r  r   Zn1Zgp1Zn2Zgp2mir   colZ
result_colZpivotedexpr   r   r   r   test_groupby_multiple_columnsr  s,   "r)  c                  C   s   t ddgddgddggddgd} | jdd	d
d d}tddgdd}t|| | jdd	ddd dd }tg ddtg dd}t|| d S )NrJ   r"   r   r!   r  r   r   r   Fr   r\   T)r   rI   c                 S   r   rL   )cumsumrD   r   r   r   rF     rG   z-test_as_index_select_column.<locals>.<lambda>)r"   r  r  ))r   r   )r   rJ   r   r\   r)   )	r   r/   	get_groupr   r5   rg   ri   r   r%  r8   r   r   r   r   r   test_as_index_select_column  s   "r0  c                  C   sd   t tg dddd} | jdddd jdd	}t | jd d
 tdd}d g|j_t|| d S )Nr*   alphar+  r*  r   F)byr   r   r   r"   r   r   )	r   r
   r/   rN   r   r1   r   r5   r6   )r8   leftr   r   r   r   0test_groupby_as_index_select_column_sum_empty_df  s
   
r4  c                 C   s2  | j ddd}|ddg tj}|jdd}t|| |tjtjd}|jdd}| d |d< t|| | j ddd}d	}tjt	|d
 |d dtji W d    n1 s`w   Y  | 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g dd} ttjddddd}	|  |	}
|
d t|
t|  |	t dD ]'}| j |	dd}
t|
| }| j |	jdd}
t|
| jdd}t|| qd S )Nr   Fr   r&   r   Tr   r   rS   rT   Qr   r*  r   d   )2   rA   )jimZjoeZjolier!   rX   r7  r8  r+  )r]   maxcountry   r,  r   drop)r/   rh   r3   r]   r5   r6   rN   rk   rl   r   r   renamerb   randintr   nthri   r   r   reset_index)r8   ro   r   r   r   	expected2rt   Z	expected3Zresult3r   grattrr3  rightr   r   r   test_groupby_as_index_agg  sJ   

rE  c                 C   s   | dv rt d|   ttjjddddddgd	}t|d|  }| d
kr-|d
}|	 }| d
krA|d 
|d j|d< |jddd}t||  }t|| || }t|| t|d |  }t|| |d | }t|| d S )N)Zcorrwithr?  ngroupz!GH 5755: Test not applicable for r   r!   )r6  r"   )sizer   r   r*  rG  Fr   )rk   skipr   r3   rb   r>  r   r/   r=  r@  r   r;   r5   r6   rh   )Zreduction_funcr8   r   r   r   r   r   r   test_ops_not_as_index  s$   

rI  c                 C   s4  | 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.J t|| |d tj}|tjjd d g df }t|tsRJ t|| |d  }| jd d ddgf }t|tsrJ t|| |d  }| jd d g df }t|tsJ t|| d S )Nr   Fr   r   r&   r*   )	r/   rh   r3   rN   rx   r  r   r5   r6   )r8   ro   Zgrouped2r   r   r   rA  r   r   r   !test_as_index_series_return_frame  s$   rJ  c                 C   sT   | j ddd}d}tjt|d |d d W d    d S 1 s#w   Y  d S )Nr   Fr   zColumn\(s\) C already selectedrT   r&   r   )r/   rk   rl   
IndexError__getitem__r8   ro   rt   r   r   r   (test_as_index_series_column_slice_raises  s
   "rN  c                 C   s   | }|j ddd}|jdd}| dgjdd}|dd|j tt||_t|| |j ddgdd}| }| ddg }tt	|jj
 }|dd|d  |dd|d  tt||_t|| d S )	Nr   Fr   Tr   r   r   rJ   )r/   r]   insertr)   r   re   r5   r6   r0   zipr   )r8   rn   ro   r   r   Zarraysr   r   r   test_groupby_as_index_cython(  s   rQ  c                 C   sL   | j ddgdd}|d t}|tjd d g df }t|| d S )Nr   r   Fr   r&   r*   )r/   rh   re   rx   r5   r6   r8   ro   r   r   r   r   r   #test_groupby_as_index_series_scalar?  s   rS  c                 C   s   d}t jt|d |jdd dd W d    n1 sw   Y  d}t jt|d | jdd dd	d
 W d    d S 1 sAw   Y  d S )Nz(as_index=False only valid with DataFramerT   c                 S   r   rL   r   rD   r   r   r   rF   L  rG   z.test_groupby_as_index_corner.<locals>.<lambda>Fr   z$as_index=False only valid for axis=0c                 S   r   rL   )lowerrD   r   r   r   rF   P  rG   rJ   )r   r   )rk   rl   r   r/   
ValueError)r8   r   rt   r   r   r   test_groupby_as_index_cornerI  s   "rV  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   r   rL   r   rD   r   r   r   rF   U  r   z+test_groupby_multiple_key.<locals>.<lambda>c                 S   r   rL   r   rD   r   r   r   rF   U  r   c                 S   r   rL   r   rD   r   r   r   rF   U  r   c                 S   r   rL   r   rD   r   r   r   rF   Z  r   c                 S   r   rL   r   rD   r   r   r   rF   Z  r   c                 S   r   rL   r   rD   r   r   r   rF   Z  r   rJ   r   c                 S   r   rL   rM   rD   r   r   r   rF   ]  rG   c                 S   r   rL   rM   rD   r   r   r   rF   a  rG   )r5   r   r/   rN   Zassert_almost_equalr   r   rh   assert_index_equalr)   r   )r8   ro   rr   r   r   r   test_groupby_multiple_keyS  s   rX  c                 C   sP   |   } tj| d< | ddg }| ddg }tj|d< t|| d S )Nbadr   r   )r   r3   r   r/   r]   r5   r6   )r8   rr   r   r   r   r   test_groupby_multi_cornere  s   

rZ  c                 C   sx  |  d}tjtdd |tj W d    n1 sw   Y  tjtdd |  W d    n1 s8w   Y  | jd d g df } t	 | d< |  d}d}tjt|d |tj
 W d    n1 smw   Y  tjt|d |
  W d    n1 sw   Y  | j ddddd	dd
}d}tjt|d |dd  W d    d S 1 sw   Y  d S )Nr   Could not convertrT   r   r&   r   r  z/datetime64 type does not support sum operationsr   rJ   )r   r&   r   r  r   z does not support reduction 'sum'c                 S   s   | j dddS )Nr   Fr   rM   rD   r   r   r   rF     r   z)test_raises_on_nuisance.<locals>.<lambda>)r/   rk   rl   r   rh   r3   r]   rx   r   nowrN   rM  r   r   r   test_raises_on_nuisanceq  s,   



"r^  agg_functionr9  minc                 C   sv   |  d}t|| }| }t| j| d dkdf | |jd< t| j| d dkdf | |jd< t|| d S )Nr   r   r   )r   r   r   )r   r   )r/   r   r   rx   r5   r6   )r8   r_  ro   r   r   r   r   r   test_keep_nuisance_agg  s   
$$ra  )rN   r]   prodr2   varsemmedianr   c           
      C   s   |  d}d}||v r>|s>|dv rtnt}dddg}tj||d t|||d W d    d S 1 s7w   Y  d S t|||d}|sQ|d	krQg d
}ng d}t| jd d |f  d||d}	t	||	 d S )Nr   )rc  r2   rd  r]   rb  re  )r2   rd  |z[C|c]ould not convertzcan't multiply sequencerT   r   rN   r   r\  )
r/   rU  r   joinrk   rl   r   rx   r5   r6   )
r8   r_  r   ro   Zno_drop_nuisanceklassrt   r   r   r   r   r   r   test_omit_nuisance_agg  s    
"
ri  c                 C   sF   |  d}tjtdd |  W d    d S 1 sw   Y  d S )Nr   zcould not convertrT   )r/   rk   rl   r   skew)r8   ro   r   r   r   $test_raise_on_nuisance_python_single  s   

"rk  c                 C   s   |  ddg}tjtdd |tj W d    n1 sw   Y  tjtdd |  W d    d S 1 s;w   Y  d S )Nr   r   r[  rT   )r/   rk   rl   r   rh   r3   r]   )Zthree_groupro   r   r   r   &test_raise_on_nuisance_python_multiple  s   
"rl  c                 C   s   t tg dtg dddgd tjdtjdd}|dd	g}|d
dg tj}|jdd}t	|| | dd jdd}|
dd }|d 
tj}t|d | |jjdksfJ d S )Nr  r  r   r   rA   r  )r	  r
  Zk3r  r  r	  r
  r  r  Tr   r!   r   r   c                 S   r   rL   r   rD   r   r   r   rF     rG   z*test_empty_groups_corner.<locals>.<lambda>r   r   )r   r3   r  rb   r  r/   rh   r]   r5   r6   ri   rg   r)   r\   )r   r8   ro   r   r   rr   Zagged_Ar   r   r   test_empty_groups_corner  s"   



rn  c                  C   sP   t dg} d}tjt|d | dd  W d    d S 1 s!w   Y  d S )Nr   z5unsupported operand type\(s\) for \+: 'int' and 'str'rT   c                 S   s   | d S )Nr   r   rD   r   r   r   rF     rG   z$test_nonsense_func.<locals>.<lambda>)r   rk   rl   r   r/   )r8   rt   r   r   r   test_nonsense_func  s
   
"ro  c                 C   s   | j }d|d< tg dtg dg}tjtdd ||tj W d    n1 s0w   Y  |j	dd|tj}t
|jtsJJ dd }tjtd	d ||| W d    d S 1 siw   Y  d S )
NZpeekaboo)bazrW   r   r   rJ   r[  rT   r*  c                 S   s   | j dkr	td|  S )N)r   rV   Test error message)r\   r   rN   )r7   r   r   r   aggfun  s   
z5test_wrap_aggregated_output_multindex.<locals>.aggfunrr  )r   r3   r  rk   rl   r   r/   rh   r]   r<  r  r   r   rf   )r   r8   r  rr   rs  r   r   r   %test_wrap_aggregated_output_multindex  s   "rt  c                 C   sh   | j dd }|jjdksJ | j dd }|jjdks J | d j dd }|jjdks2J d S )Nr   rm  r   rJ   secondr   )r/   r:  r)   r\   )r   r   r   r   r   test_groupby_level_apply  s   rv  c                    s   |   }ddddd dddd| j dd }| jdd }tj fdd|d D tjd	}tjfd
d|d D tjd	}| | }| | }d\|j_|j_t	|| t	|| d S )Nr   rJ   )r   r   rp  qux)rV   rW   r  rm  c                       g | ]}  |qS r   r  r   )mapper0r   r   r   	      z-test_groupby_level_mapper.<locals>.<listcomp>r   r   c                    rx  r   ry  r   )mapper1r   r   r     r{  ru  )r   ru  )
r@  r/   rN   r3   r  r<   r)   r\   r5   r6   )r   Z	deleveledZresult0r   Zmapped_level0Zmapped_level1Z	expected0Z	expected1r   )rz  r|  r   test_groupby_level_mapper  s    r}  c                  C   s(  t g dtg ddd} t g d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 d    n1 sow   Y  tjt	|d | jdd	 W d    n1 sw   Y  d}tjt	|d | jg d	 W d    n1 sw   Y  d}tjt	|d | jddgd	 W d    n1 sw   Y  tjt	|d | jddgd	 W d    n1 sw   Y  d}tjt	|d | jdgd	 W d    d S 1 sw   Y  d S )N)rJ   r"   rA   rX   r   r!   rY   r  )rJ   r"   rA   rJ   r   r!   r"   r  r   r+  )r     rA   r   r!   r  rJ   rP   r   rm  r'   z2level > 0 or level < -1 only valid with MultiIndexrT   zNo group keys passed!z*multiple levels only valid with MultiIndex)
r   r
   r1   r/   rN   r5   rg   rk   rl   rU  )sr   r   rt   r   r   r   test_groupby_level_nonmulti  s@   $r  c                  C   sB   t tdd g dd} t d}| jdd }t|| d S )Nr         ?       @)r   r   rJ   rJ   rn   r)   )r  y      @      $@r   rm  )r   r3   r4   r/   rN   r5   rg   )r   r   r   r   r   r   test_groupby_complex6  s   r  c                  C   s   t dddddddddg} t tjg dtjdtg dd	d
tdgddd}| jd	dd }t|| tg dd	d
|_	| jd	dd }t|| d S )NrJ         ?      ?r   r  r   )rJ   rJ   rJ   r   )r  r        ?        r   r+  r   objectr)   r   Fsort)r  r  r  T)
r   r3   r  r<   r
   r/   r:  r5   r6   r)   r8   r   r   r   r   r   test_groupby_complex_numbers?  s    r  c                  C   sj   t g dtg dd} t g dtg dd}| |}| }| || jj }t|| d S )N)      @g      "r   g      Y@g      g     K@g@)r   r   r   dr   r   r   r(   )r   r   r   r  r  g      @)r   r   r  r   r   h)	r   r
   r/   r]   rd   r)   r  r5   rg   )s1s2ro   rr   r(  r   r   r   'test_groupby_series_indexed_differentlyV  s   

r  c                  C   sR  t tg dg dg } t| }tg d}ttjdd||d}|jdd	 }t
|j| |jdd	d
	 }t
|j|j |jddtj	}t
|j| |jdddd }t
|j| |jdd	d
dd }t
|jtddg t
|j|j |d\}}d|d< |jddj	dd}t
|j|jd d  d S )N)r   r   rp  rp  r   r   rw  rw  )rV   rW   rV   rW   rV   rW   rV   rW   ))r   cat)r   dog)r   r  )r   r     r   r  r   rm  rJ   )r   r   c                 S   r   rL   r   rD   r   r   r   rF   }  rG   z0test_groupby_with_hier_columns.<locals>.<lambda>c                 S   s
   |  dS )NrJ   r   rD   r   r   r   rF        
 r   r   r   )r   r   Tr   r'   )r0   rP  r   r%  r   r3   rb   r  r/   r]   r5   rW  r   r)   rh   ri   r
   Z	sortlevel)Ztuplesr)   r   r8   r   Zsorted_columns_r   r   r   test_groupby_with_hier_columnse  s6   
r  c                 C   s@   |  | d j}| }|  | d d  }t|| d S )Nr   )r/   r   rN   r=  r5   r6   rR  r   r   r   test_grouping_ndarray  s   r  c                  C   sn   t g ddd} tg dg dg dg dg dd	| d
}|g d}|tj}| }t|| d S )Nr   rJ   r"   rA   r   r)   r+  )foo1r  Zfoo2r  Zfoo3)bar1bar2r  r  r  )baz1r  r  baz2r  )spam2Zspam3r  spam1r  )rY   rZ   (   r7  <   )r   r   rp  spamrn   r(   )r   r   rp  r  )r
   r   r/   rh   r3   r]   r5   r6   )r)   rn   ro   r   r   r   r   r   test_groupby_wrong_multi_labels  s   r  c                 C   s   |  | d jdd}| j | d ddjdd}|jjdks J d|v s&J |  | d | d g }| j | d | d gdd }|jjdksJJ d|v sPJ d|v sVJ d S )Nr   Tr   Fr   r   r   r   )r/   r]   r)   r\   r   )r8   r   r   r   r   r   test_groupby_series_with_name  s   r  c                 C   sR   |  dd }| jdksJ | jdksJ dd }||jdks'J d S )Nr   r&   c                 S   s   t | d S ra   )r3   rN   rD   r   r   r   rF     r   z.test_seriesgroupby_name_attr.<locals>.<lambda>)r/   r:  r\   r]   rh   )r8   r   ZtestFuncr   r   r   test_seriesgroupby_name_attr  s
   r  c                  C   s`   t g dg dtjdd tdd} | dgj }| j| j }t	
|| d S )N)r   r   r   r   r   r   r   r   )rV   rV   rW   rW   rW   rW   rV   rW   r  r   r   r   )r   r3   rb   r  r4   r/   r   r:  r   r5   rg   r  r   r   r   test_consistency_name  s   	r  c                 C   sx   ddd}dd }|  d|}|jjd u sJ |  d|d}|jjdks*J |  d|}|jjd u s:J d S )Nc                 S   s   t dddd|dS )NrJ   r"   rA   r:  r]   Z	omissionsr+  )r   )r8   r\   r   r   r   	summarize  s   z0test_groupby_name_propagation.<locals>.summarizec                 S   s   t dddd| jd d dS )NrJ   r"   rA   r  r   r   r+  )r   r.   r8   r   r   r   summarize_random_name  s   z<test_groupby_name_propagation.<locals>.summarize_random_namer   metricsrL   )r/   ri   r   r\   )r8   r  r  r  r   r   r   test_groupby_name_propagation  s   
r  c                  C   sJ   t dd tdD } | d}| }| | d  }t|| d S )Nc                 S   s   g | ]}t d qS )rX   )r3   r4   r   r   r   r   r     r{  z2test_groupby_nonstring_columns.<locals>.<listcomp>rX   r   )r   r1   r/   r]   r5   r6   rR  r   r   r   test_groupby_nonstring_columns  s
   
r  c                  C   sp   t g dgg dd} t ddggddgtdgdd	d
}| d }t|| | d }t|| d S )Nr[   )r   r   r   r*  rJ   r"   r   r   r   r+  r   )r   r
   r/   r   r5   r6   rN   r  r   r   r   test_groupby_mixed_type_columns  s   "r  c                  C   s`   t d} | t j t| d d df }t tdd}||tj	}|
  s.J d S )N)r6  r6  r   rX   )r3   r   fillr   r   Ztiler1   r/   rh   re  Zisnar   )arrobjZindsr   r   r   r   (test_cython_grouper_series_bug_noncontig  s   
r  c                  C   s^   t tdd} ttjd| d d d d}tjddd}||}dd	 }|	| d S )
NrX   r6  r7  r"   r(   r   r!   c                 S   s   t ttt| jS rL   )re   setmapidr)   rD   r   r   r   rF   	  r   z5test_series_grouper_noncontig_index.<locals>.<lambda>)
r
   r5   Zrands_arrayr   r3   rb   r  r>  r/   rh   )r)   r   r   ro   r   r   r   r   #test_series_grouper_noncontig_index  s   
r  c                  C   s   t td} tjg ddd}dd }dd }| |}||}|jtjks)J t|d	 t	s2J ||}|jtjks?J t|d	 t	sHJ d S )
Nr!   )r   r   r   r  r   rv   r   c                 S   s   t t|  S rL   )r   strr]   rD   r   r   r   convert_fast  r   z>test_convert_objects_leave_decimal_alone.<locals>.convert_fastc                 S   s$   t | jjdks
J tt|  S r   )re   r   baser   r  r]   rD   r   r   r   convert_force_pure  s   zDtest_convert_objects_leave_decimal_alone.<locals>.convert_force_purer   )
r   r1   r3   r  r/   rh   r;   Zobject_r  r   )r  r   r  r  ro   r   r   r   r   (test_convert_objects_leave_decimal_alone  s   


r  c                  C   st   t g tjdddd} | d jtjksJ | d }tg dtjd}t dtg |ddi}t	j
||d	d
 d S )Nr   r<   r   )rE   r1   rE   r\   r;   r1   rB   T)Z	by_blocks)r   r3   r4   r;   r>   r/   r   r
   r   r5   r6   )r8   r   Z	exp_indexr   r   r   r   "test_groupby_dtype_inference_empty$  s   r  c                  C   sb   t dgdgdgd} | ddgd  }tdgtjdgdggddgddd}t|| d S )	NrJ   l    4;PU  )r   ru  rw   r   ru  rw   r#  r+  )r   r/   r9  r   r   from_productr5   rg   r/  r   r   r   $test_groupby_unit64_float_conversion/  s   r  c                 C   s   |  t| d jdd}|  | d jdd}tj||dd tjtdd |  t| d d d  W d    n1 s?w   Y  td	d
gddgt	j
dd} |  ddg }|  | d | d g dg }d S )Nr   Tr   Fr   z^'foo'$rT   r'   r   rJ   rA   r   r"   )r   r   valr   r   r  )r/   r0   r]   r5   r6   rk   rl   KeyErrorr   r3   rb   r  r/  r   r   r   "test_groupby_list_infer_array_like;  s    $r  c                  C   st   d} t tdd| d}tddgddggd	d
g|d}|td| dd	g }||jd	gt	}t
|| d S )Nr  z2015-09-29T11:34:44-0700r"   )startr    freqr   rX   r      Zmetricr   r   r   )r   r  )r   r   r   r/   r	   r]   r   r)   r   r   r5   r6   )r  r)   r8   r   r   r   r   r   $test_groupby_keys_same_size_as_indexJ  s   
r  c                  C   s   d} t tjddtdd}tjt| d |d W d    n1 s&w   Y  t tjddtdd}tjt| d |d W d    d S 1 sPw   Y  d S )	Nz^'Z'$rJ   r   ZABCDr*  rT   Zr"   )	r   r3   rb   r  r0   rk   rl   r  r/   )rt   Zdf1r   r   r   r   test_groupby_one_rowW  s   "r  c                  C   s  t tjdtjtdtjtdtjtdtjtdgtjdtjdtjdtjdgd} | d}tdd	gtd
dgg}t|j	
 }t|dksLJ t||D ]\}}t|j	| | qQt|jjd j|  |jdksqJ 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| ||  qt|td| jdd	g  t|td| jd
dg  tjtdd |tj W d    n1 sw   Y  t tjtjtjgtjtjtjgd}|d jdksJ |d jdksJ dD ]\}||}|j	i ksJ |jdksJ |ji ksJ tjtdd |tj W d    n	1 s8w   Y  tjtdd |tj W d    n	1 sVw   Y  q d S )Nr  z
2013-01-01z
2013-02-01r   r   )r   dtr  r  rJ   rP   rA   r!   r"   r   z2013-01-01 00:00:00r   z2013-02-01 00:00:00z^NaT$rT   )r   natr   r>   r  zdatetime64[ns]z^nan$) r   r3   rb   r  r   r   r/   r
   sortedr   r  re   rP  r5   rW  r6   grouperr   r  Zngroupsr  Zintpr   assert_numpy_array_equalr.  r.   rk   rl   r  r+   r-   r;   )r8   ro   r   r  rp   r   Znan_dfr   r   r   r   test_groupby_nat_excludeb  sd   



   
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 J d S )NrJ   r"   r   r   r   )r   r3   r   r/   r   r8   r   r   r   r   #test_groupby_two_group_keys_all_nan  s   $r  c                  C   s   t tdd} ddg| d< ddg| d< ddg| d	< d
dg| d< | dgjdd}tddgddgg}t|jt	dd	g t
|j| d S )Nr"   r(   g1g2r{   r   ZzerosrJ   r   l1l2labelTr           r   )r   r1   r/   r]   r3   r  r5   rW  r   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}|g d }|g d }t|t|ks@J d S )Nr   i  ia  )r   r   r&   r   r  r   )r   r&   r   r   )	r3   Zconcatenater4   r   rb   r  r/   rN   re   )r   r   r8   r3  rD  r   r   r   test_int32_overflow  s   "
r  c                  C   sn  t g dg dg dtjdd} dd | g d jD }t|}| jg dd	d
 }t	
|jj|g d  dd | g d jD }t|}| jg dd	d
 }t	
|jj| dd | g d jD }t|}| jg dd	d
 }t	
|jj|g d  t g dg dtjdd} | ddgd }| }dd fdd}|| |ddgd d S )Nr   r   rp  )rA   r"   rJ   r[   rA   r   r   r   r  c                 S      g | ]}t |qS r   tupler   rowr   r   r   r     r   z+test_groupby_sort_multi.<locals>.<listcomp>r   Tr  )rJ   r"   r   c                 S   r  r   r  r  r   r   r   r     r   )r   r   r   c                 S   r  r   r  r   r   r   r   r     r   )r   r   r   )r"   rJ   r   )r   rJ   r"   r   rJ   r"   )r   r   r   rJ   rJ   rJ   r  )r   r   r  r   r   r  c                 S   r   rL   rM   rD   r   r   r   rF     rG   z)test_groupby_sort_multi.<locals>.<lambda>c           	      S   sV   dd | | j D }t|}|| || }| D ]\}}|| |ks(J qd S )Nc                 S   r  r   r  r  r   r   r   r     r   zCtest_groupby_sort_multi.<locals>._check_groupby.<locals>.<listcomp>)r   comasarray_tuplesafer/   r   )	r8   r   r  fieldr   tupsr   rp   rq   r   r   r   _check_groupby  s   
z/test_groupby_sort_multi.<locals>._check_groupby)r   r3   rb   r  r   r  r  r/   rN   r5   r  r)   )r8   r  r   ro   r  r   r   r   test_groupby_sort_multi  s4   
	


r  c                  C   sB   t g dg dd d} | jddddd	 }t||  d S )
N)r   r   r   r   r   r   r  r"   )r   r\   r   FrH   c                 S      | S rL   r   rD   r   r   r   rF         z/test_dont_clobber_name_column.<locals>.<lambda>)r   r/   ri   r5   r6   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   r   rL   r   rD   r   r   r   rF     r   z&test_skip_group_keys.<locals>.<lambda>FrH   c                 S   s   | j ddd d S )Nr   r2  rA   sort_valuesrD   r   r   r   rF     r   c                 S   s$   g | ]\}}|j d ddd qS )r   r  NrA   r  r   r   r{   r   r   r   r     s   $ z(test_skip_group_keys.<locals>.<listcomp>r   c                 S   r   rL   r   rD   r   r   r   rF     r   c                 S   s   |   d d S rC   r  rD   r   r   r   rF     r   c                 S   s    g | ]\}}|  d d qS rC   r  r  r   r   r   r     s     )r5   r   r/   ri   r+   r  r6   rg   )Ztsfro   r   piecesr   r   r   r   test_skip_group_keys  s   

r  c                 C   s:   | d   }d |_|| d tj}|jd u sJ d S )Nr&   r   )r   r\   r/   rh   r3   rN   )Zfloat_framer  r   r   r   r   test_no_nonsense_name  s   r  c                  C   s\   t tddd} d| d< g d| d< | d}|ddd	}|d jtjks,J d S )
Nr@   rA   r   test)g?g      ?g?flrN   rG  )r  r"   )r   r3   r4   reshaper/   rh   r;   r>   )rE   ro   r   r   r   r   test_multifunc_sum_bug  s   
r  c                 C   sV   dd }dd }|  dd |}|  dd |}t|ts#J t|| d S )Nc                 S   s   |   |  dS Nr9  r`  r  rz   r   r   r   r     r}   z(test_handle_dict_return_value.<locals>.fc                 S   s   t |  |  dS r  )r   r9  r`  rz   r   r   r   r     s   z(test_handle_dict_return_value.<locals>.gr   r&   )r/   ri   r  r   r5   rg   )r8   r   r   r   r   r   r   r   test_handle_dict_return_value  s   r  r  r   r   c                    s   dd }dd   fdd}| j |dd}|| |  |  d	 || |d
 | |d
   |d
  |g |d
 | d S )Nc                 S   s   | j d usJ | S rL   r+  rz   r   r   r   r   (  s   ztest_set_group_name.<locals>.fc                 S   s   | j d usJ |  S rL   )r\   rN   rz   r   r   r   freduce,  s   z$test_set_group_name.<locals>.freducec                    s    | S rL   r   rD   r  r   r   freducex0  s   z%test_set_group_name.<locals>.freducexFrH   r   r&   )r/   ri   rf   rj   )r8   r  r   r  ro   r   r  r   test_set_group_name&  s   


r  c                     sV   t g dtdd} g   fdd}| jdddd| g d	} |ks)J d S )
N)r   r   rJ   rJ   r"   r"   r  r   c                    s     | j |  S rL   )r$  r\   r   rz   r#  r   r   r   G  s   z6test_group_name_available_in_inference_pass.<locals>.fr   F)r  rI   r[   )r   r3   r4   r/   ri   )r8   r   Zexpected_namesr   r#  r   +test_group_name_available_in_inference_passA  s   r  c                 C   sV   |  | d j }|jjd u sJ |  | d j| d jg }|jjdks)J d S )Nr   r   )NN)r/   r   rN   r)   r\   r   r  r   r   r   test_no_dummy_key_namesQ  s   r   c                  C   s   t ddgddggg dg dgddgd} tg d| d	}t ddgddggg d
g dgddgd} tg d| d	}|jddgdd }t|| |jddgdd }t||  d S )NrJ   r"   )r   r   r   r   rJ   rJ   )rJ   rJ   r   r   r   r   r   r   r   )r   rJ   r"   rA   r   r!   r(   rq  )rJ   r   r   r   r"   r   Fr   r  T)r   r   r/   r   r5   rg   
sort_index)r)   ZmseriesZmseries_resultr   r   r   r   #test_groupby_sort_multiindex_seriesZ  s   "r  c                  C   s   d} t dd| d}tt| t| d|d}ddd	}|d
d }|d|tji}|d|tjdi}t|| d S )N  z2012/1/1Z5min)r  r  r    )highlowr(   Fc                    s    fdd}|S )z>
        Run an aggregate func on the subset of data.
        c                    sD   | j | jdd   } r| | jd   t|dkrd S |S )Nc                 S   s
   | j dk S )Nr  )hourrD   r   r   r   rF   z  r  zYtest_groupby_reindex_inside_function.<locals>.agg_before.<locals>._func.<locals>.<lambda>r   )rx   r)   r  dropnare   )rn   r  fixfuncr   r   _funcy  s   zGtest_groupby_reindex_inside_function.<locals>.agg_before.<locals>._funcr   )r  r  r  r   r
  r   
agg_beforet  s   z8test_groupby_reindex_inside_function.<locals>.agg_beforec                 S   s   t | j| j| jS rL   )r   r   r   r   rD   r   r   r   rF     r_   z6test_groupby_reindex_inside_function.<locals>.<lambda>r  T)F)	r   r   r3   r4   r/   rh   r9  r5   r6   )r    indr8   r  ro   Zclosure_badZclosure_goodr   r   r   $test_groupby_reindex_inside_functiono  s   
r  c                  C   s   t g dg dg dd} | ddg} | jddgdd}|d	}tjg d
ddgd}t dgdgdgg|dgd}t|| d S )N)r   r   r   r   )r   r   r  r   )rJ   rJ   rJ   r!   )group1group2rw   r  r  Tr  rN   ))r   r   )r   r  r   r   r#  r"   rJ   r!   rw   r  )r   r   r/   rh   r   r%  r5   r6   )r8   r   r   r   r(  r   r   r   $test_groupby_multiindex_missing_pair  s   
r  c                  C   s  t jg dddgd} tg dg| d}|j sJ tg dg dg d	gd
}|jdddgdd}| }|j r>J t|| |	d
 }tt |	d
 }W d    n1 sbw   Y  t|| tg dg dg ddddg}|j rJ ddddgfD ]3}dD ].}|j	||ddtj}|}t|| | j	||ddtj}| }t|| qqd S )N))r    )b1c1)b2c2r   r   r#  rJ   rA   r   r*  r  )rJ   r  r  rA   )rJ   r  r  r   )r   rn   r   r  )r)   r   r   )r   r   r   r   rJ   rJ   r"   r"   rJ   r"   rA   r   rE   r   zrE   r   r   rJ   )FTF)r   r  rI   )r   r%  r   r   Z_is_lexsortedpivot_tabler@  r5   r6   r/   r]   Zassert_produces_warningr   r   r)   ri   Zdrop_duplicatesr  )Zlexsorted_miZlexsorted_dfZnot_lexsorted_dfr   r   r8   r   r  r   r   r   %test_groupby_multiindex_not_lexsorted  sR   

r   c                  C   s  t tdg dd} | td}|dd }| jg d }t|| | d }|td}|d	d }|g d}t|| | j	
t| _	| td}|d
d }| jg d }t|| | d }|td}|dd }|g d}t|| d S )NZABCDE)r"   r   r"   rJ   rJ   r(   Zababbc                 S      t | dkS ra   re   rD   r   r   r   rF     rO   z4test_index_label_overlaps_location.<locals>.<lambda>r  r   c                 S   r!  ra   r"  rD   r   r   r   rF     rO   c                 S   r!  ra   r"  rD   r   r   r   rF     rO   c                 S   r!  ra   r"  rD   r   r   r   rF     rO   )r   r0   r/   filterr.   r5   r6   r   rg   r)   r   r   )r8   r   actualr   r7   r   r   r   "test_index_label_overlaps_location  s(   r%  c                  C   s   d} t | }t|d d| d| d}t|d d d| d| d}|d}|d}|d}|d}t|| d S )	Nr  r"   r         @r   r   r   r]   )r3   r4   r   r/   rj   r5   r6   )nrE   r8   r   r9   r   gb2r   r   r   r   "test_transform_doesnt_clobber_ints  s   
 



r)  sort_columnintsfloatsstringsgroup_column
int_groupsstring_groupsc                    sX   t g dg dg dg dg dd}|j d}||} fdd	}|| d S )
N)rA   rJ   r   rJ   r   rA   rA   rA   )r  r   r  r   r   r   r   r   )r  rP   r   r!   r"   r@   rJ   rJ   )gffffff@g333333@g@g333333g@皙?r1  r!   )r  r  r   r   wordZword2Z42Z47)r/  r0  r+  r,  r-  r  c                    s   t | | j d d S )Nr  )r5   r6   r  rD   r*  r   r   	test_sort  s   z.test_groupby_preserves_sort.<locals>.test_sort)r   r  r/   ri   )r*  r.  r8   r   r4  r   r3  r   test_groupby_preserves_sort  s   
r5  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 d    d S 1 sCw   Y  d S )NrY   Mr    r  r   )	eventDateZthenamer8  r   r   z	'badname'rT   Zbadnamer:  )r)   r   r   Zaggfunc)r   r   r   todaytolistr1   r   r)   r   r   rk   rl   r  r@  r  r  r   r   r   !test_pivot_table_values_key_error  s   "r;  r   r&   r  r   r  r   rJ   z
US/Easternr$   
2016-01-01rA   r   r7  Int64r   Float64boolean)boolintr   r  r  Zdt64Zdt64tzZperiodr=  r>  r?  )Zidsmethod)rC  rh   ri   )ry   idxminr`  r9  rN   rb  rj  c                    s  d }t trtdkrdv rtjjtdd}	|j|	 t t	r*dv r*d}t d t
r7dv r7d	}td
tdd}
tdrR|
jjk sRJ |
jd d }
|
jd|d|    fdd}fdd}t |
jd tj}|
jd jdk}t t}t trɈjsɈdv rd d}tjt|d |  W d    n1 sw   Y  t | tr|dd}| }t|| d S dv r+|s|s|r+dkrd}n|rd}n|rd}nd }tjt|d |  W d    n1 sw   Y  t | ts
d S dkrd S |dd}|
g  }|r#| }t|| d S | }|
|  }|d ur?||}tdkrLd |j_t|| d S )!NrJ   )ry   rC  z0attempt to get arg(min|max) of an empty sequence)rl   rU   )rN   rb  r=  r   )rb  rN   r<   r*   ABCr*  r;   F)rI   r	  c                     s2   dkrt  di | S t  fi | S )NrC  r   )r   )kwargs)r9   rB  r"  r   r   
get_resultv  s   z&test_empty_groupby.<locals>.get_resultc                     sR   t dgjd} t dkrtj| | g d}nt|  d d}tg g |d}|S )Nr   r   rJ   r#  r+  r   )r   r;   re   r   r  r
   r   )Zlevr   r   )r  r   r   r    get_categorical_invalid_expected|  s   z<test_empty_groupby.<locals>.get_categorical_invalid_expectedr6  )r`  r9  zCannot perform z with non-ordered CategoricalrT   Tr   )rb  rN   rj  rj  z!does not support reduction 'skew'z datetime64 type does not supportzPeriod type does not supportzcategory type does not support)r  r   re   rk   markxfailrU  nodeZ
add_markerr   r@  r   r0   hasattrr   r;   r   r.   r/   r+   ZPeriodDtypekindZorderedrl   r   r5   assert_equalr   r   r)   r\   )r   r  r   rB  r"  requestZusing_array_managerr	  Zoverride_dtyperH  r8   rF  rG  Zis_perZis_dt64Zis_catrt   r   r   r   )r9   r  rB  r"  r   r   test_empty_groupby1  s   '









rO  c                  C   sh   t tjdd} | d tj| d< g d| _| j| d dd}|dd	 }|j	| j	k
 s2J d S )
Nr   r   rA   r   rJ   r"   r   rJ   FrH   c                 S   r  rL   r   rD   r   r   r   rF     r  z<test_empty_groupby_apply_nonunique_columns.<locals>.<lambda>)r   r3   rb   r  r   r<   r   r/   ri   r   r   )r8   r9   r   r   r   r   *test_empty_groupby_apply_nonunique_columns  s   
rQ  c                  C   s   t g dg dg dg dd} tjtdd | g d d W d    n1 s,w   Y  | dd  }td	gdtd
gddd}t	|| d S )N)rJ   rJ   rJ   rJ   )r"   r"   r"   r"   )r   r   r   r   z
('a', 'b')rT   r   r   r   r   rJ   r+  r-  )
r   rk   rl   r  r/   rN   r   r
   r5   rg   r/  r   r   r   test_tuple_as_grouping  s   	rR  c                  C   sf   t dtdtddgddggd} tjtdd | d  W d    d S 1 s,w   Y  d S )	NrJ   rA   r"   r   r  z
^\(7, 8\)$rT   )rP   r  )	r   r1   r   r  rk   rl   r  r/   r]   r  r   r   r   test_tuple_correct_keyerror  s   $"rS  c               	   C   s   t dgdggtdgddtddddd	d
} t g dg dgtjdg ddtddddd	d
}| tddddg}t	|| d S )NrJ   r   mycolsr+  
2018-01-01r"   r   dti)r    r  r\   r   )rJ   rJ   rJ   rJ   rJ   ))r   rN   r   )r   ohlcopen)r   rW  r  )r   rW  r  )r   rW  close)rT  NNr#  )r  rN   rW  )
r   r
   r   r   r%  r/   r	   rh   r5   r6   r  r   r   r   test_groupby_agg_ohlc_non_first  s   

rZ  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g d	|d
}|jdd }tddgddgd
}t	|| d S )Nr   i  rJ   r"   r   rA   dater#  )rA   r"         @r   r(   rm  r&  r\  )
r+   r-   r   r   r%  r   r/   r]   r5   rg   )r   r&  r7   r   r   r   r   r   test_groupby_multiindex_nat
  s   r]  c                  C   sf   t tdtd} t| ddgd}d}tjt|d |g g W d    d S 1 s,w   Y  d S )NrX   appler   r*  z$Grouper and axis must be same lengthrT   )rP  r1   r   rk   rl   rU  r/   )r   r8   rt   r   r   r   test_groupby_empty_list_raises  s   "r_  c                  C   s   ddgddgddgg} g d}t j| |d}tddg|d	}|d
dg }dgdgg} d
dg}t j| |d}tdg|d}t|| d S )NrE   r   r   rp   )r   ru  thirdr#  rJ   r"   r  r   r`  rA   r(   )r   from_arraysr   r/   rN   r5   rg   )Zindex_arrayZindex_namesrir  r   eir   r   r   r   8test_groupby_multiindex_series_keys_len_equal_group_axis#  s   rd  c                  C   s   t jddgddggddgd} tg dg d	d
| d}|tdddg}|ddg}|j|jks5J |dtddg}|ddg}|j|jksNJ d S )Nr   r   r&   r   r1  betar#  )rJ   r"   rJ   r"   r  r   r(   rm  )r   r  r   r/   r	   r   )r&  r8   r   r   r   r   r   "test_groupby_groups_in_BaseGrouper3  s   rf  
group_namerE   c                 C   s   t tdddg dg dd}d|j_d|j_|j| d	d
 }|j	|  j	}t
|| g dddgg}tj|ddgd}t tdddg d|d}|j| d	d
 }|j	|  j	}t
|| d S )NrQ   rA   r   )r   rJ   r   )rX   rY   rX   rY   r  r   rE   rJ   r   )r   rp  r   rV   rW   x1)	iterablesr      r  )r   r3   r4   r  r)   r\   r   r/   rN   r   r5   r6   r   r  )rg  r8   resultsr   ri  r&  r   r   r   test_groupby_axis_1A  s    rl  zop, expectedshifttime2019-01-01 12:00:002019-01-01 12:30:00Zbfill2019-01-01 14:00:002019-01-01 14:30:00ffillc                    s   |  g d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 )N)r   r   r   r   r   r   ro  rp  rq  rr  )r  rn  c                       | j j S rL   rn  r  Ztz_localizerD   r$   r   r   rF     r   z+test_shift_bfill_ffill_tz.<locals>.<lambda>)rn  r  c                    rt  rL   ru  rD   r$   r   r   rF     r   )r   r   Zassignr/   r   r5   r6   )Ztz_naive_fixturer"  r   rn   r8   ro   r   r   r$   r   test_shift_bfill_ffill_tzW  s   .
rv  c                  C   sD   t d gdd} | dd d}ttjgdd}t|| d S )NrJ   )r   rE   r   rE   rN   r+  )r   r/   rj   r   r3   r   r5   rg   )r8   r$  r   r   r   r   test_groupby_only_none_group  s   rw  c                  C   sL   t g dg dd} | jdd}| }t g dg dd}t|| d S )N)r"   r!   r  r  )r   r   r   r  r(   r   rm  )r"   g      @r  )r   r   r  )r   r/   r]   r5   rg   )r7   r9   r   r   r   r   r   test_groupby_duplicate_index  s
   rx  c                 C   s:  t dtdddggg dd}|d t|d< |d t|d< |d	d
g}| dkr/d}nd}|jd d d	gj| g|R  }|d	gj| g|R  jd d }| dv r^|t}t	|| |d jd d d	gj| g|R  }|d d	gj| g|R  jd d }| dv r|t}t	|| d S )NrJ   r9  rA   r   )col_1col_2col_3col_4rn   r   r{  r|  ry  rz  Zfillna)rs  r   r   )diffrm  )
r   r   r   rA  r   r.   r/   rj   r5   rM  )Ztransformation_funcrN  r8   argsr   r   r   r   r   test_group_on_empty_multiindex  s,   $$
&&
r  r   r   r+  )r   r   r  r   r#  c                 C   sn   | dv rt d|   tddgg|d}|dg}t| |}t|| | }|jdks.J t|j	| d S )N>   rG  rF  ZcumcountzNot applicable for rJ   r*  r   r   )
rk   rH  r   r/   r   r   shaper5   rW  r   )Zgroupby_funcr   r8   Zgrp_byr  r   r   r   r   test_dup_labels_output_shape  s   
r  c           
      C   s   t dddd}tddgddgddgd}d	|j_||_|| }|s&|j}|j|dd
}| }tddgddgd|d}d|j_	|sG|j}t
|| |dkr_|g  j|dd
}|g  }n|jg  j|dd
}|jg  tj}| }	t
|	| d S )Nr<  r"   r   )r    r\   rJ   rA   r   )r  )r   r&   )r   r   )r   rp  )r   r   )r   r   r(   r   )r   r   r   r   r)   Z_get_axis_numberr   r/   Znuniquer\   r5   r6   rx   r   r3   r>   )
r   rV  r8   Zaxis_numberr9   r   r   r(  r(  r   r   r   r   test_groupby_crash_on_nunique  s*   

r  c                  C   s>   t tddddtd} | jdgd }t||  d S )Nr   r@   rA   r   rm  )	r   r3   r4   r  r   r/   r]   r5   r6   )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], ...})rJ   z{0: [0], ...}c                 C   s   t tjdd}|j|d< td| ) |dj	 }||ks#J |t
|jj	 }||ks5J W d    d S 1 s@w   Y  d S )Nr!   rJ   r   zdisplay.max_seq_items)r   r3   rb   r  r)   r+   Zoption_contextr/   r   __repr__r  r   )Zmax_seq_itemsr   r8   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s3J d}|| || k sAJ d S )NrJ   r"   c   r   X   r   r   r   r   r   )	r   r   r/   r   r3   r  r<   re   r   )r8   r   r   r   r   r   r   r   6test_group_on_two_row_multiindex_returns_one_tuple_key 	  s   r  zklass, attr, valuer   r  rI   Zobservedr	  c                 C   sr   t dgdgdgd}|dkr|d}|jdi ||i}| t u r'|dg n|d }t||t||ks7J d S )	NrJ   r"   rA   r   r   r   r   )r   )r   r   r/   r   )rh  rC  rw   r8   r   r   r   r   r   #test_subsetting_columns_keeps_attrs.	  s   
r  c                  C   sl   t dgdgdgdjg ddd} d}tjt|d | d	d
g   W d    d S 1 s/w   Y  d S )NrJ   r"   rA   r*   rq  r   z'Cannot subset columns when using axis=1rT   r   r   )r   r/   rk   rl   rU  rN   )r   rU   r   r   r   test_subsetting_columns_axis_1J	  s
   $"r  r  )rN   anyrm  c                 C   sH   t dgdd}tdgg|d}|dg}t||  j}t|| d S )Nr   r   r+  rJ   r*  )r
   r   r/   r   r   r5   rW  )r  r   r8   r   r   r   r   r   #test_groupby_column_index_name_lostR	  s
   r  c                  C   sp   t g dg dg ddt} g d| _| g d }t g dgtdgg dtd	}t	|| d S )
N)r   r   r   r  r  r  r*   )r   r   r   )r   r   r   r   )r   r   rJ   r   )r)   r   r;   )
r   r   r  r   r/   r`  r3   r  r5   r6   r/  r   r   r   test_groupby_duplicate_columns\	  s   
r  c                  C   s\   t g dg ddd} d| j_| jdd }t dd	gd
dgdd}d|j_t|| d S )Nr  r  r  )r)   r\   )r   r   r   rm  r"   r   rJ   )r   r)   r\   r/   lastr5   rg   )r7   r   r   r   r   r   #test_groupby_series_with_tuple_namei	  s   r  zGH#38778: fail on 32-bit system)reasonzfunc, valuesrN        @X@     X@r]   g     @8@g     8@c                 C   s`   g d}t ddgd ||d}t|d|  }t ||dtddgddd	}t|| d S )
N 7yACr  a   b    7y1r  r  r  rJ   r"   r   r{   r   r   r{   r   r+  r(   )r   r   r/   r
   r5   r6   )r  r   rn   r8   r   r   r   r   r   )test_groupby_numerical_stability_sum_means	  s
   r  c                  C   sr   g d} t ddgd | | d}|d }dgd dd	g d
dg ddg }t ||d}tj||dd d S )Nr  rJ   r"   r   r  r{   r  g07yACg17yACga7y1Cgb7y1Cr  r  r   T)Zcheck_exact)r   r/   r,  r5   r6   )rn   r8   r   Zexp_datar   r   r   r   'test_groupby_numerical_stability_cumsum	  s    r  c                  C   sv   t jdd} t| }tdD ]
}t j|j||f< qd|d< |d}|jdd}|g d jdd}t	
|| d S )Nr!   rJ   r   Fskipnar  )r3   rb   r  r   r1   r   r.   r/   r,  r5   r6   )r  r8   ir9   r   r   r   r   r    test_groupby_cumsum_skipna_false	  s   
r  c                  C   s   t ddd} t| | d  }tj|d< td|d}|d}|jd	d
d}td|d |d tj|d |d d gi}t|| |jd	d	d}td|d |d tjtjtjgi}t|| d S )Nr<  r!   r   r   r"   rJ   r  r   FT)r   r  r   r   )	r   r   r+   r-   r   r/   r,  r5   r6   )rV  r7   r8   r9   r   r(  r   r   r   test_groupby_cumsum_timedelta64	  s   

,$r  c                 C   s4   | }|j dd }| |j }t|| d S )Nr   rm  )r/   r]   r)   r5   rg   )Z(rand_series_with_duplicate_datetimeindexZdupsr   r   r   r   r   !test_groupby_mean_duplicate_index	  s   r  c                  C   sT   t g dtjtjtjg} | | j }t g tg tjdtjd}t	
|| d S )Nr   r   rB   )r   r3   r   r/   r)   rN   r
   r>   r<   r5   rg   )r  r   r   r   r   r    test_groupby_all_nan_groups_drop	  s   r  c                 C   s   t g g dd}|jddg| d}|j|d}| r.tg g gg g gddgd}|s+dgng }ntd	}|s8g dnddg}t g ||d
}t|| d S )Nr*   r}  r   r   r   r   r#  r&   r   r   )r   r/   rN   r   r   r5   r6   )r   r   r8   r9   r   r)   r   r   r   r   r   test_groupby_empty_multi_column	  s   r  c                  C   s   t ddggddggddggddgggddgd} t dddgddggitddgd	dd
d}| jdgd}| }t|| d S )Nr6  rJ   WrX   rY   ZMWrq   r*  r  r;   r\   r(   r  )r   r
   r/   rN   r5   r6   r8   r   r9   r   r   r   r   *test_groupby_aggregation_non_numeric_dtype	  s   (r  c                  C   s   t g ddd tddD dd tddD d} t dd td	d
D dd td	d
D dtddgdddd}| jdgd}| }t|| d S )NrJ   r   rJ   rJ   r   c                 S      g | ]}t |d qS daysr   r   r  r   r   r   r   	  r{  zDtest_groupby_aggregation_multi_non_numeric_dtype.<locals>.<listcomp>rJ   r  c                 S      g | ]	}t |d  dqS rX   r  r  r  r   r   r   r   	  r   r  c                 S   r  r  r  r  r   r   r   r   	  r{  rP   r@   c                 S   r  r  r  r  r   r   r   r   	  r   r   r  r   r<   rE   r  r(   r  )r   r1   r
   r/   rN   r5   r6   r  r   r   r   0test_groupby_aggregation_multi_non_numeric_dtype	  s   r  c                  C   s   t g ddd tddD ttddd} t tddtd	dgdd	gd
tddgdddd}| jdgd}| }t|| d S )Nr  c                 S   r  r  r  r  r   r   r   r   	  r{  zKtest_groupby_aggregation_numeric_with_non_numeric_dtype.<locals>.<listcomp>rJ   r  r  rP   r  r  r  r   r<   rE   r  r(   r  )	r   r1   r0   r   r
   r/   rN   r5   r6   r  r   r   r   7test_groupby_aggregation_numeric_with_non_numeric_dtype	  s   r  c                  C   s   dddddddddddddddg} t | }||d dk }|d}| }t g d	gg d
tdgddd}t|| d S )NFTg      %@)
filter_colgroupby_colbool_col	float_colg     4@g     >@r  r  )r  r  g$+H@)r  r  r  r+  r   )r   r/   r2   r
   r5   r6   )Zdictsr8   Z	df_filterZdfgbr   r   r   r   r   test_groupby_filtered_df_std
  s   
r  c                  C   s   t ttdttg dddtjg d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sKJ d S )Nabc)rU  z
2018-02-01z
2018-03-01categoryr   )r'   r   rJ   r   rJ   )
categoriesr   r   r   z2018-01-01 00:00:00z2018-02-01 00:00:00r   z2018-03-01 00:00:00r"   )r   r   r0   r   r   Z
from_codesr/   r   r   r3   r  r/  r   r   r   2test_datetime_categorical_multikey_groupby_indices
  s   


r  c                  C   s   dgd dgd  } t jt jdddgt jddddg }t| |gj}dd	g|_d
}tjt|d |dd	 j	ddd
  W d    d S 1 sJw   Y  d S )NZAlicer!   ZBobrJ   r"   rA   r   r\   r  z<__init__\(\) got an unexpected keyword argument 'min_period'rT   )ZwindowZ
min_period)r3   r   r   r   r   rk   rl   r   r/   ZrollingrN   )Zname_lZval_lZtest_dfZresult_error_msgr   r   r   #test_rolling_wrong_param_min_period4
  s   "
"r  c                  C   sp   t g dg dg dd} tjdd}| dg|}t dd	gdgd
dgddgdd}t|| d S )N)Thomasr  Thomas John)i  i    )sadhappyr  )NameCreditMoodrN   )r  r  r  r  r  i	  r  r  r  )r  r  r  )r   r   moder/   rh   r   r5   r6   )r8   Zaggregate_detailsr   Zexpected_resultr   r   r   .test_by_column_values_with_same_starting_value@
  s"   
r  c                  C   sn   g dg dg} t dtj| ddgdd}|jddgd	 }t dd
gtjddgddgd}t|| d S )N)NrJ   r   rJ   )r"   rA   r"   rA   rJ   r   r   r#  r(   r   rm  r"   )r  r"   )r   rA   )r   r   ra  r/   rN   r%  r5   rg   )r  r7   r   r   r   r   r   #test_groupby_none_in_first_mi_levelW
  s   r  c                  C   sd   t g dg dg dd} | jd gd }t ddgdd	gd
tddgd dd}t|| d S )Nr  )rJ   rJ   r"   rA   )r   r!   r  rP   )Nr   r   r  r"   r!   r@      r  rJ   r+  r(   )r   r/   rN   r
   r5   r6   r/  r   r   r   test_groupby_none_column_nameb
  s   &r  c                  C   sV   t ddgtjdgtjdgdddgd} dd	 | d
gD }ddg}||ks)J d S )NrJ   r"   r!   r   rE   r   r(   c                 S   s   g | ]\}}|qS r   r   )r   r   r  r   r   r   r   m
  r   z5test_single_element_list_grouping.<locals>.<listcomp>r   )rJ   )r"   )r   r3   r   r/   r/  r   r   r   !test_single_element_list_groupingj
  s   (r  )rN   r,  cumprodrb  c                 C   sj   d}t d|gd}t|d|  | }t ddgitdgddd}| d	v r-|jd
d}t|| d S )Nl   L33ffrJ   r   r   r   r   r+  r(   )r,  r  Tr;  )r   r   r/   r
   r@  r5   r6   )r  r  r8   r   r   r   r   r   #test_groupby_avoid_casting_to_floatr
  s   r  z	func, val)rN   rA   )rb  r"   c                 C   s\   t dddtjgd| d}t|d| }t d|gitdgd| d| d}t|| d S )	NrJ   r"   r   r   r   r   r  rB   )r   r+   NAr   r/   r
   r5   r6   )any_numeric_ea_dtyper  r  r8   r   r   r   r   r   test_groupby_sum_support_mask~
  s   r  z
val, dtype)o   rA  )   Zuintc                 C   s   t d| | gd| dd}|d }t d| d gitdgd| dd| d	d
}t|| |d }t d| | d gi| d	d}t|| |d }t d| |  gitdgd| dd| d	d
}t|| d S )NrJ   r   8r   r   r   r"   r  Z64rB   )r   r/   rN   r
   r5   r6   r,  rb  )r  r;   r8   r   r   r   r   r   test_groupby_overflow
  s$   r  zskipna, val)TrA   c                 C   sT   t ddtjdgd| d}|dj|d}t ddtj|gi| d}t|| d S )NrJ   r"   r   r   r   r  r   )r   r+   r  r/   r,  r5   r6   )r  r  r  r8   r   r   r   r   r   test_groupby_cumsum_mask
  s   r  zval_in, index, val_out)r   r   r&  r   r  )r   r   r   rp  blah)r&  r   r  r&  )r   r   r&  r   r  g      @)r   r   r   rp  r  r  )r&  r   g      &@r&  c                 C   st   t | dt|ddd}|d }t |dtg dddd}t|| | d }| }t|| d S )Nr   r  r+  )rn   r\   r)   )r   rp  r  r   )r   r
   r/   rN   r5   rg   r,   r6   )Zval_inr)   Zval_outZseriesr   r   r   r   r   (test_groupby_index_name_in_index_content
  s   r  r'  )rJ   rX       r6  r  c                 C   s`   t ddg|  d}|d d|d< |d }t d| gitdgddd}t|| d S )NrJ   T)r  r@  r@  r  r+  r(   )r   eqr/   rN   r
   r5   r6   )r'  r8   r   r   r   r   r   test_sum_of_booleans
  s
   r  z<ignore:invalid value encountered in remainder:RuntimeWarning)r   tailr?  r   r  c                 C   s   t dtjdtjdgtdd}| dkr t|d| dd	}n	t|d|  }| d
v r?t dg ditg ddd}nt g dg ddg dd}t	|| d S )Nr   r   r   r!   r  r?  r   r   )r'  )r   r  r   r  r   r+  r(   )
r   r3   r   r1   r   r/   r   r   r5   r6   )rB  r8   r   r   r   r   r   test_groupby_method_drop_na
  s    r  c                  C   sv  t jdddd} ttdd }|  }||}tjtdd |	  W d    n1 s/w   Y  tjtdd |
  W d    n1 sJw   Y  tjtd	d |  W d    n1 sew   Y  tjtd
d |  W d    n1 sw   Y  | }|dd  }ttdtjd|_t|| | }|d d }ttdtjd|_t|| d S )Nr<  r6  r   r7  rX   z+Period type does not support sum operationsrT   z.Period type does not support cumsum operationsz,Period type does not support prod operationsz/Period type does not support cumprod operationsir   )r+   period_ranger0   r1   Z	to_seriesr/   rk   rl   r   rN   r,  rb  r  r9  r
   r3   int_r)   r5   rg   r`  )piZgrpsr7   r9   r   r   r   r   r   test_groupby_reduce_period
  s8   




r  c                  C   sN   t g dg} g d| _| | d }|j}| jg ddd}t|| d S )N)r   rJ   r"   rA   rP  rJ   )r   r"   rA   r   )r   r   r/   Z_obj_with_exclusionsr   r5   r6   )r8   r9   r   r   r   r   r   *test_obj_with_exclusions_duplicate_columns  s   
r  )r   decimalr   numpyr3   rk   Zpandas.compatr   Zpandas.errorsr   r   Zpandasr+   r   r   r	   r
   r   r   r   r   r   r   r   Zpandas._testingZ_testingr5   Zpandas.core.arraysr   Zpandas.core.commoncorecommonr  Zpandas.tests.groupbyr   r   r:   rH  Zparametrizeru   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r!  r)  r0  r4  rE  rI  rJ  rN  rQ  rS  rV  rX  rZ  r^  ra  ri  rk  rl  rn  ro  rt  rv  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r   r%  r)  r5  r;  r  r  rO  rQ  rR  rS  rZ  r]  r_  rd  rf  rl  rv  rw  rx  r  r%  r  r  r  r  r  r  r  r  r  r  rI  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  filterwarningsr  r  r  r   r   r   r   <module>   s4   4
/>-

7(06
 8 	




 	&

?
)		
	4v
	

,


#









	
&		