o
    Eh                    @   s  d dl m Z  d dlZd dlmZ d dlZd dlZd dlZd dlmZm	Z	 d dl
m  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mZ d dlmZ d dlm Z  d dl!m"  m#Z$ ej%&dZ'dd	 Z(d
d Z)ej%*dg ddd Z+dd Z,dd Z-dd Z.dd Z/ej%*dddgdd Z0dd Z1dd  Z2d!d" Z3ej%*dg d#d$d% Z4d&d' Z5d(d) Z6d*d+ Z7d,d- Z8d.d/ Z9d0d1 Z:d2d3 Z;d4d5 Z<d6d7 Z=ej%*d8d9d: d;d: gd<d= Z>d>d? Z?d@dA Z@dBdC ZAdDdE ZBdFdG ZCdHdI ZDdJdK ZEdLdM ZFdNdO ZGdPdQ ZHdRdS ZIdTdU ZJdVdW ZKej%*dXdYdZgd[d\ ZLej%*dXg d]ej%*d^ddgd_d` ZMdadb ZNdcdd ZOdedf ZPdgdh ZQdidj ZRdkdl ZSdmdn ZTdodp ZUdqdr ZVdsdt ZWdudv ZXdwdx ZYdydz ZZd{d| Z[d}d~ Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zidd Zjdd Zkdd Zldd Zmdd Zndd Zodd Zpdd Zqdd Zrdd Zsdd Ztej%*ddddggdd Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|ddÄ Z}ej%*ddddddgddggej%*dddddggdd̄ Z~dd΄ Zej%*dddggej%*ddgddggej%j*ddgd gdgdged ged ged dddd׍ejddddۍejd gddݍejd gddݍejdgddݍgg ddej%*dg dej%*d8g ddd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zej%*dddggdd Zej%*dddddededddgifd dededededededgifddededededededgifgdd Zdd Zdd	 Z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# Zej%*d$dejded%d&gd'd( Zd)d* Zej%*d+d,d-d.gfd/d0d1gfgd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zej%*d^d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 Zej%*dRdddggdSdT ZdUdV Zej%*dWd gdfdXd gdfdYgdZd[ Zej%*d g d\d]d^ Zej%*d_d`dagdbdc Zej%*dddedfgdgdh Zej%*didjdejfgdkdl Zej%*dmg dng dog dpfg dqg drg dsfgdtdu Zej%*dvg dwdxdy Zej%&dzej%*dg d{d|d} Zd~d Zdd Zej%*d^ddgdd Zej%&ddd Zej%*dddgdd Zej%*dg ddd Zdd Zdd Zdd Zej%*dddgej%*ddddgdefddgddfddd gdefdd gddfgdd Zdd Zdd Zdd Zej%*dddgdd ZdS (      )datetimeN)Decimal)PerformanceWarningSpecificationError)Categorical	DataFrameGrouperIndexInterval
MultiIndex
RangeIndexSeries	Timedelta	Timestamp
date_rangeto_datetime)BooleanArrayz)ignore:Mean of empty slice:RuntimeWarningc                  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   Alib/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   ZUTCZtzCi  z2887 days 11:21:02.326710176z2886 days 00:42:34.664668096indexr   r   r#   )pdZtimedelta_ranger   to_framecopyr   NaTilocgroupbylistrangestdr   nparanger   tmassert_frame_equal)
Zwarn_copy_on_writeZtdiserdfgbr   Ztd1Ztd4Zexp_serr   r   r   r   test_groupby_std_datetimelike,   s    r8   dtype)int64int32float64float32c                    s8  t tdd td| d}td}tjd| ||}|jdd dd}|D ]\}}t|dks9J q-d	}t	j
t|d
 |tj}W d    n1 sTw   Y  |d dksaJ d	}t	j
t|d
 |tj}W d    n1 s{w   Y  t	|| t	||  | }	d}t	j
t|d
 |tj}W d    n1 sw   Y  t	|	| |dd }|dd }
|
d dksJ t	|
| ||}d	}t	j
t|d
 |tj}	W d    n1 sw   Y  t	j|	|dd d}t	j
t|d
 |tjtjg}W d    n	1 sw   Y  d}tjt|d
 |tjtjd W d    n	1 sAw   Y  dddd d}t	j
t|d
 | fdd}W d    n	1 sjw   Y  |d dksxJ d}tjt|d
 |dd  W d    d S 1 sw   Y  d S )N	      r&   r9   r!   c                 S   s   | d S Nr?   r   xr   r   r   <lambda>O       z)test_basic_aggregations.<locals>.<lambda>F
group_keyszusing SeriesGroupBy.meanmatch   zusing SeriesGroupBy.sumc                 S      | |    S NsumrB   r   r   r   rD   d       c                 S   rK   rL   rM   rB   r   r   r   rD   e   rO         Zcheck_index_typezusing SeriesGroupBy.[mean|std]nested renamer is not supported)onetwo
         r   rJ   r!   zPinning the groupby key to each group in SeriesGroupBy.agg is deprecated, and cases that relied on it will raise in a future versionc                    s    | j  |   S rL   )namemeanrB   Zgroup_constantsr   r   rD             zMust produce aggregated valuec                 S   s   | d S Nr!   r   rB   r   r   r   rD      rE   )r   r1   r2   randomdefault_rngZshufflereindexr-   lenr3   assert_produces_warningFutureWarning	aggregater[   aggassert_series_equalrN   apply	transformr0   pytestraisesr   	Exception)r9   datar&   groupedkvmsgaggedr   r   transformedZvalue_groupedr   r\   r   test_basic_aggregationsG   sj   


$ru   c                 C   sj   | j jd }| |}| }| |d }|j jtjks"J |j jtjks+J t	j
||dd d S )Nr   OFrR   )r&   codesr-   rN   astyper9   r1   int8r:   r3   r4   ) multiindex_dataframe_random_datar   ro   r   r   r   r   r   test_groupby_nonobject_dtype   s   
r{   c                  C   s   t g dg dtjddtjtjddddd} tt| | d< d	d
 }d}tj	t
|d | d|}W d    n1 sHw   Y  |j}| j}t|| d S )Nfoobarr}   r~   r}   r~   r}   r}   )rT   rT   rU   threerU   rU   rT   r   r!      r=   r9   r   r   r#   Dvaluec                 S   s   | j | d   S )Nr   )locidxmaxgroupr   r   r   	max_value      z5test_groupby_nonobject_dtype_mixed.<locals>.max_value7DataFrameGroupBy.apply operated on the grouping columnsrH   r   )r   r1   r`   ra   standard_normalarrayr/   rc   r3   rd   re   r-   ri   dtypesrh   )r6   r   rr   Zappliedr   r   r   r   r   "test_groupby_nonobject_dtype_mixed   s    r   c            
      C   sz  t g dttdddtdddd} dd	 }| d
 dg }d}tjt	|d | d

|dg }W d    n1 sBw   Y  t|| dd }d}tjt	|d | d

|dg }W d    n1 spw   Y  | }tj|jd< t|| dd }d}tjt	|d | d

|dg }W d    n1 sw   Y  | }tj|jd< t|| dd }d}tjt	|d | d

|dg }W d    n1 sw   Y  | d
 dg }tj|jd< t|| dd }	d}tjt	|d | d

|	}W d    n	1 sw   Y  | 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   r   rH   c                 S      | j dkrd S | jd S )Nr   r   rZ   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#   )rZ   r,   r   r   r   r   r   f_4   s   
z*test_inconsistent_return_type.<locals>.f_4)r   r   r1   r2   r   r-   firstr3   rd   re   ri   r4   r*   nanr   r(   r+   rZ   rh   )
r6   r   r   rr   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 ]}
|j dd |
d}|
rd nt	}d}tj
||d |jtjddd}W d    n1 sw   Y  tj
||d |tjd	}W d    n1 sw   Y  tj
||d |d	}W d    n1 sw   Y  tj||dd t|| |tjdd	g}tj
||d |dd	g}W d    n	1 sw   Y  tj||dd tj
||d |j|dd
}W d    n	1 s5w   Y  tj
||d |jtjd	d
}W d    n	1 sUw   Y  t|| tj||dd qpd S )Nr   c                 S   s   t j| ||dS )Naxisr1   
percentile)rC   qr   r   r   r   f      z test_pass_args_kwargs.<locals>.fc                 S   s   t j| dddS )NP   r   r   r   rB   r   r   r   rD          z'test_pass_args_kwargs.<locals>.<lambda>c                 S      | j S rL   monthrB   r   r   r   rD          r   r   皙?r   )TFc                 S   r   rL   r   rB   r   r   r   rD     r   as_index*A grouping .* was excluded from the resultrH   FZcheck_namesg?r   )r-   rg   r1   r   ri   rj   quantiler3   rh   re   rd   r   r4   )tstsframer   gZ
ts_groupedZ
agg_resultZapply_resultZtrans_resultZagg_expectedZtrans_expectedr   
df_groupedwarnrr   r   Zexpected_seqr   r   r   test_pass_args_kwargs   s\   


r   r   TFc                 C   s   g d| _ | jdd |d}|rd nt}d}tj||d |jtjddd	}W d    n1 s1w   Y  | | jj	d
k 
d| | jj	dk 
dd}t|j}|s[ttd|_t|| d S )N)r   r   r   r#   c                 S   r   rL   r   rB   r   r   r   rD   ,  r   z9test_pass_args_kwargs_duplicate_columns.<locals>.<lambda>r   r   rH   r   r   r   rJ   r   r!   rJ   r!   )columnsr-   re   r3   rd   rg   r1   r   r&   r   r   r   Tr	   r/   r4   )r   r   r7   r   rr   resZex_datar   r   r   r   'test_pass_args_kwargs_duplicate_columns(  s   

r   c                  C   s   t tjddttdtdtddddd	} | 	d
d dd dd g}t
|t
| ks1J | 	dd dd g}t
dd | jD }t
||ksNJ d S )Nr!   rV      ABCDr   
2000-01-01rV   r   r   freqr   r&   c                 S   r   rL   yearrB   r   r   r   rD   E  r   ztest_len.<locals>.<lambda>c                 S   r   rL   r   rB   r   r   r   rD   E  r   c                 S   r   rL   dayrB   r   r   r   rD   E  r   c                 S   r   rL   r   rB   r   r   r   rD   H  r   c                 S   r   rL   r   rB   r   r   r   rD   H  r   c                 S   s   h | ]}|j |jfqS r   )r   r   .0rC   r   r   r   	<setcomp>I  s    ztest_len.<locals>.<setcomp>)r   r1   r`   ra   r   r	   r.   objectr   r-   rc   r&   )r6   ro   r   r   r   r   test_len?  s   r   c                  C   sd   t tjgd g dd} t| ddksJ t| ddks#J t| ddgdks0J d S )Nr?   rJ   r!   r?   abr   r   r   )r   r1   r   rc   r-   r6   r   r   r   test_len_nan_groupM  s   r   c                  C   sT   t dd ttddd D } tjddd }t |}| |}|  d S )Nc                 S   s   g | ]}d | qS )      ?r   r   r   r   r   
<listcomp>W      z)test_basic_regression.<locals>.<listcomp>rJ   rV   r!   iL  g      $@)r   r.   r/   r1   r`   ra   r-   r[   )r   rn   	groupingsro   r   r   r   test_basic_regressionU  s
    
r   )r<   r=   r:   r;   Zint16ry   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 )NrV   r   r}   r~   r%   r   r!   FZcheck_dtypec                 S   s   t t| S rL   )floatrc   rB   r   r   r   r   u  s   ztest_with_na_groups.<locals>.f      @       @)r	   r1   r2   r   onesr   r-   rg   rc   r3   rh   )r9   r&   valueslabelsro   rs   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jt|d |d| }W d    n1 sHw   Y  tjt|d |d| }W d    n1 sgw   Y  t|| d}tj	t
|d |d| W d    n1 sw   Y  tj	t
|d |d| W d    n1 sw   Y  tj	t
|d |d| W d    n1 sw   Y  tj	t
|d0 tjt|d |d| W d    n1 sw   Y  W d    d S W d    d S 1 sw   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levelsrw   namesr   r   )r   emptyr   r   	set_indexrC   y
multiindexr   r   r   r   f1  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   )rC   r   r   r   r   f2  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   f3  s   z,test_indices_concatenation_order.<locals>.f3)rJ   r!   r!   r!   r   r    r>   r   r   r   )r?   r!   r!   r!   zDThe behavior of array concatenation with empty entries is deprecatedr   rH   r   z@Cannot concat indices that do not have the same number of levels)r   r/   r3   rd   re   r-   ri   r4   rk   rl   AssertionError)	r   r   r   r6   df2depr_msgrr   result1result2r   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 }t|| d}t
jt|d t|d	 W d    d S 1 sXw   Y  d S )
Nc                 S      |   S rL   weekdayrB   r   r   r   rD     rE   z#test_attr_wrapper.<locals>.<lambda>c                 S   s   t j| ddS )NrJ   )Zddof)r1   r0   rB   r   r   r   rD         c                 S   s   i | ]	\}}||  qS r   )describe)r   rZ   Zgpr   r   r   
<dictcomp>      z%test_attr_wrapper.<locals>.<dictcomp>c                 S   r   rL   r   rB   r   r   r   rD     r   z-'SeriesGroupBy' object has no attribute 'foo'rH   r}   )r-   r0   rg   r3   rh   r   r   r   r4   r9   rk   rl   AttributeErrorgetattr)r   ro   r   r   rr   r   r   r   test_attr_wrapper  s   
"r   c                 C   sf  |  dd }|d}t|dksJ t|jdksJ |  }dd |jD |d< | dd}tj||d	d
 | d dd }|	dd }t|dksTJ t|jdks]J |	dd }|D ]\}}|
 }|jD ]}	tj||	|d	d
 qqqf|D ]\}
}|jd  |
ksJ q|j}|j}| D ]\}}| j|| }||k sJ qd S )Nc                 S   r   rL   r   rB   r   r   r   rD     rE   z$test_frame_groupby.<locals>.<lambda>r[   r    r   c                 S   s   g | ]}|  qS r   r   r   r   r   r   r     r   z&test_frame_groupby.<locals>.<listcomp>r   Fr   rX   c                 S   r   rL   r   rB   r   r   r   rD     rE   c                 S      | |    S rL   r[   rB   r   r   r   rD     rO   c                 S   r   rL   r  rB   r   r   r   rD     rE   r   )r-   rf   rc   r   r*   r&   r3   r4   headrj   r[   rh   Zxsr   groupsindicesitemstakeall)r   ro   
aggregatedZtscopyZstraggedrt   rZ   r   r[   idxr   r  r  rp   rq   Z	samethingr   r   r   test_frame_groupby  s4   

r  c           	      C   s  ddddd}d}t jt|d | j|dd}W d    n1 s"w   Y  |d}t|t| ks6J t|jdks?J d	d
 }d}t jt|d | jj|dd}W d    n1 s_w   Y  t |	|j|	| |D ]\}}t|jdksJ qsd S )Nr   rJ   r   +DataFrame.groupby with axis=1 is deprecatedrH   r   r[   r!   c                 S   r  rL   r  rB   r   r   r   rD     rO   z,test_frame_groupby_columns.<locals>.<lambda>5The 'axis' keyword in DataFrame.groupby is deprecated)
r3   rd   re   r-   rf   rc   r   r   r4   rj   )	r   mappingrr   ro   r	  ZtfZgroupedTrp   rq   r   r   r   test_frame_groupby_columns  s"   
r  c                 C   s6  |  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 d}|jjdks7J |dd	d
}|jjdksGJ |d  }|jjdksUJ |d d}|jjdksdJ |d dd	g}|jjdksuJ d}tjt|d |d dd	d W d    d S 1 sw   Y  d S )Nr   Tnumeric_onlyFr   r#   r   r[   r0   r#   r   rS   rH   r}   r~   )r-   r[   r&   rZ   rg   rk   rl   r   )r6   ro   r   rr   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	
d
tj	d	
d
tg dtg ddg dd} |  ddg}|d d S )Nr   r   Tr  r#   r   Fr   r!      r   r   r   r   r   r   1r  r  2r  r  )v1v2k1k2)rT   rU   r   ZfourZfiveZsixr%   r  r  rN   )r-   getr[   r3   r4   r   r   r1   r`   ra   r   r   rg   )r6   col1col2ro   rs   r   r   r   r   test_multi_func-  s$   *
r!  c                 C   sJ   |  ddgd }|ddg}t|d|dd}t|| d S )Nr   r   r#   r[   r0   )r[   r0   )r-   rg   r   r3   r4   )r6   ro   rs   r   r   r   r   !test_multi_key_multiple_functionsI  s   r"  c                  C   s   t g dg dtjddtjddtjddd} | ddg}dd	g}||}tj|d
 ||d ||d |gg ddd}t	|j
tsWJ t	|j
ts_J t|| d S )Nr}   r}   r}   r}   r~   r~   r~   r~   r}   r}   r}   rT   rT   rT   rU   rT   rT   rT   rU   rU   rU   rT   r!      )r   r   r   EFr   r   r[   r0   r   r&  r'  )r   r&  r'  rJ   )keysr   )r   r1   r`   ra   r   r-   rg   r(   concat
isinstancer&   r   r3   r4   )rn   ro   funcsrs   r   r   r   r   "test_frame_multi_key_function_listQ  s&   "
&r,  c              	   C   s   t g dg dg dtjddtjddtjddd}|ddg}d	d
g}td}| r:d}tj	t
|d || W d    d S 1 sRw   Y  d S )Nr#  r$  )dullr-  shinyr-  r-  r.  r.  r-  r.  r.  r.  r!   r%  )r   r   r#   r   r&  r'  r   r   r[   r0   &agg function failed [how->mean,dtype->-dtype 'str' does not support operation 'mean'rH   )r   r1   r`   ra   r   r-   reescaperk   rl   	TypeErrorrg   )using_infer_stringrn   ro   r+  rr   r   r   r   2test_frame_multi_key_function_list_partial_failure  s"   /
"r5  opc                 C   r   rL   rM   rB   r   r   r   rD     rE   rD   c                 C   r   rL   r  rB   r   r   r   rD     rE   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-   appendr   r   from_tuplesr(   r)  r   r&   r3   rh   r[   )r6   r6  rn   ro   r   r(  r   Zn1Zgp1Zn2Zgp2mir   colZ
result_colZpivotedexpr   r   r   r   test_groupby_multiple_columns  s,   "r=  c                  C   s   t ddgddgddggddgd} | jdd	d
d d}tddgdd}t|| | jdd	ddd dd }tg ddtg dd}t|| d S )NrJ   r!   r   r    r  r   r   r   Fr   rZ   T)r   rG   c                 S   r   rL   )cumsumrB   r   r   r   rD     rE   z-test_as_index_select_column.<locals>.<lambda>)r!   r  r  ))r   r   )r   rJ   r   rZ   r&   )	r   r-   	get_groupr   r3   rh   ri   r   r9  r6   r   r   r   r   r   test_as_index_select_column  s   "rD  c                  C   s   d} t g dg dd}|j|djd }tjt| d |djd|d}t	|| W d    d S 1 s<w   Y  d S )	Nzobj is deprecatedrJ   rJ   r!   r?   r   r    r   r   r   rH   )obj)
r   r,   r-   r  r  r3   rd   re   rB  r4   )r   r6   r   r   r   r   r   !test_obj_arg_get_group_deprecated  s   "rH  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   r/   r   r3   r4   )r6   leftr   r   r   r   0test_groupby_as_index_select_column_sum_empty_df  s
   
rL  c                 C   s  | j ddd}|ddg d}|jdd}t|| |dd	d
}|jdd}| d |d< t|| | j ddd}d}tjt|d |d dd	i W d    n1 s\w   Y  | j ddgdd}|d}| }t|| |dd	d
}| }| d |d< t|| |d  }t	|j
ddid}d}tjt|d |d dd	i}W d    n1 sw   Y  t|| t	tjddddg dd} ttjdddddd}	|  |	}
|
d d}tjt|dd |
t}W d    n	1 sw   Y  tjt|dd |  |	t}W d    n	1 s1w   Y  t|| dD ](}| j |	dd}
t|
| }| j |	jdd}
t|
| jdd}t|| q>d S )Nr   Fr   r#   r   r[   Tr  rN   r  rS   rH   Qr   r>  z7Passing a dictionary to SeriesGroupBy.agg is deprecatedr!   r   d   )2   r?   )jimZjoeZjolier    rV   rO  rP  r?  z:The behavior of DataFrame.sum with axis=None is deprecated)rI   Zcheck_stacklevel)r[   maxcountr   r@  r  drop)r-   rg   r[   r3   r4   rN   rk   rl   r   r   renamerd   re   r1   r`   ra   integersr   nthri   r   r   reset_index)r6   ro   r   r   r   	expected2rr   Z	expected3Zresult3r   Zgrr   ZaltattrrK  rightr   r   r   test_groupby_as_index_agg   sd   


r\  c                 C   s   | dv rt d|   ttjdjdddddd	gd
}t|d|  }| dkr0|	d}|
 }| dkrD|d |d j|d< |jddd}t||  }t|| || }t|| t|d	 |  }t|| |d	 | }t|| d S )N)ZcorrwithrW  ngroupz!GH 5755: Test not applicable for r!   r   r    )rN  r!   )sizer   r   r>  r^  Fr   )rk   skipr   r1   r`   ra   rV  r   r-   rU  rX  rx   r9   r3   r4   rg   )Zreduction_funcr6   r   r   r   r   r   r   test_ops_not_as_indexC  s(   

r`  c                 C   s,  | j ddd}| j ddgdd}|d d}|djd d ddgf }t|ts,J t|| |d d}|djd d g df }t|tsNJ t|| |d  }| jd d ddgf }t|tsnJ t|| |d  }| jd d g df }t|tsJ t|| d S )Nr   Fr   r   r#   rN   r'   )r-   rg   r   r*  r   r3   r4   rN   )r6   ro   grouped2r   r   r   rY  r   r   r   !test_as_index_series_return_framee  s$   rb  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 selectedrH   r#   r   )r-   rk   rl   
IndexError__getitem__)r6   ro   rr   r   r   r   (test_as_index_series_column_slice_raises~  s
   "re  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   rc   r3   r4   r.   zipr   )r6   rn   ro   r   r   Zarraysr   r   r   test_groupby_as_index_cython  s   rh  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-   rg   rc   r   r3   r4   r6   ro   r   r   r   r   r   #test_groupby_as_index_series_scalar  s   rj  c              	   C   s   d}t jt|d |jdd dd W d    n1 sw   Y  d}d}t jt|d2 tjt|d | jd	d dd
d W d    n1 sJw   Y  W d    d S W d    d S 1 sbw   Y  d S )Nz(as_index=False only valid with DataFramerH   c                 S   r   rL   r   rB   r   r   r   rD     rE   z.test_groupby_as_index_corner.<locals>.<lambda>Fr   z$as_index=False only valid for axis=0r  c                 S   r   rL   )lowerrB   r   r   r   rD     rE   rJ   )r   r   )rk   rl   r3  r-   
ValueErrorr3   rd   re   )r6   r   rr   r   r   r   r   test_groupby_as_index_corner  s   "rm  c                  C   s  t tjddttdtdtddddd	} | 	d
d dd dd g}|
 }t| j|j d}tjt|d | jj	dd dd dd gdd}W d    n1 sXw   Y  |dd }t|j| j t| jj|j |dd }t| jj|j d S )Nr!   r   r   r   r   rV   r   r   r   c                 S   r   rL   r   rB   r   r   r   rD     r   z+test_groupby_multiple_key.<locals>.<lambda>c                 S   r   rL   r   rB   r   r   r   rD     r   c                 S   r   rL   r   rB   r   r   r   rD     r   r  rH   c                 S   r   rL   r   rB   r   r   r   rD     r   c                 S   r   rL   r   rB   r   r   r   rD     r   c                 S   r   rL   r   rB   r   r   r   rD     r   rJ   r   c                 S   r   rL   rM   rB   r   r   r   rD     rE   c                 S   r   rL   rM   rB   r   r   r   rD     rE   )r   r1   r`   ra   r   r	   r.   r   r   r-   rN   r3   Zassert_almost_equalr   rd   re   r   rg   assert_index_equalr&   r   )r6   ro   rs   r   r   r   r   test_groupby_multiple_key  s&   ro  c                 C   sP   |   } tj| d< | ddg }| ddg }tj|d< t|| d S )NZbadr   r   )r*   r1   r   r-   r[   r3   r4   )r6   rs   r   r   r   r   test_groupby_multi_corner  s   

rp  c                 C   s  |  d}td}|rd}tjt|d |d W d    n1 s%w   Y  tjt|d |  W d    n1 s@w   Y  | jd d g df } t	
 | d< |  d}d}tjt|d |d	 W d    n1 stw   Y  tjt|d |  W d    n1 sw   Y  d
}tjt|d | j ddddddd}W d    n1 sw   Y  d}tjt|d |dd  W d    d S 1 sw   Y  d S )Nr   r/  r0  rH   r[   r   r#   r   r&  z/datetime64 type does not support sum operationsrN   r  r   rJ   )r   r#   r   r&  r   z?does not support reduction 'sum'|Cannot perform reduction 'sum'c                 S   s   | j dddS )Nr   Fr  rM   rB   r   r   r   rD     r   z)test_raises_on_nuisance.<locals>.<lambda>)r-   r1  r2  rk   rl   r3  rg   r[   r   r   ZnowrN   r3   rd   re   )r6   r4  ro   rr   r   r   r   r   test_raises_on_nuisance  s8   




"rr  agg_functionrQ  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*   r   r3   r4   )r6   rs  ro   r   r   r   r   r   test_keep_nuisance_agg  s   
$$ru  )rN   r[   prodr0   varsemmedianr  c                 C   s   |  d}d}||v rN|sN|rd| d}t}n|dv r!t}d}nt}td| d}tj||d	 t|||d
 W d    d S 1 sGw   Y  d S t|||d
}|sa|dkrag d}	ng d}	t| jd d |	f  d||d
}
t	
||
 d S )Nr   )rw  r0   rx  r[   rv  ry  (dtype 'str' does not support operation '')r0   rx  z(could not convert string to float: 'one'zagg function failed [how->z,dtype->rH   r  rN   r   rq  )r-   r3  rl  r1  r2  rk   rl   r   r   r3   r4   )r6   rs  r  r4  ro   Zno_drop_nuisancerr   klassr   r   r   r   r   r   test_omit_nuisance_agg  s,   
"
r}  c                 C   sZ   |  d}t}d}|rt}d}tj||d |  W d    d S 1 s&w   Y  d S )Nr   zcould not convertz-dtype 'str' does not support operation 'skew'rH   )r-   rl  r3  rk   rl   skew)r6   r4  ro   errrr   r   r   r   $test_raise_on_nuisance_python_single'  s   

"r  c                 C   s   |  ddg}td}|rd}tjt|d |d W d    n1 s'w   Y  tjt|d |  W d    d S 1 sCw   Y  d S )Nr   r   r/  r0  rH   r[   )r-   r1  r2  rk   rl   r3  rg   r[   )Zthree_groupr4  ro   rr   r   r   r   &test_raise_on_nuisance_python_multiple4  s   

"r  c                 C   s   t tg dtg dddgd tjddtjddd}|d	d
g}|ddg d}|jdd}t	
|| | dd jdd}|dd }|d d}t	|d | |jjdksjJ d S )Nr  r  r}   r~   r?   r!   r  )r  r  Zk3r  r  r  r  r  r  r[   Tr  r    r   r   c                 S   r   rL   r  rB   r   r   r   rD   Q  rE   z*test_empty_groups_corner.<locals>.<lambda>r   r   )r   r1   r   r`   ra   r   r-   rg   r[   r3   r4   ri   rh   r&   rZ   )rz   r6   ro   r   r   rs   Zagged_Ar   r   r   test_empty_groups_corner?  s"   

r  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'rH   c                 S   s   | d S )Nr}   r   rB   r   r   r   rD   [  rE   z$test_nonsense_func.<locals>.<lambda>)r   rk   rl   r3  r-   )r6   rr   r   r   r   test_nonsense_funcW  s
   
"r  c                 C   s   | j }d|d< tg dtg dg}td}|rd}tjt|d ||	d W d    n1 s8w   Y  |j
dd|	d}t|jtsQJ d	d
 }tjtdd ||| W d    d S 1 spw   Y  d S )NZpeekaboo)bazrU   r   r   rJ   r/  r0  rH   r[   r>  c                 S   s   | j dkr	td|  S )N)r}   rT   Test error message)rZ   r3  rN   )r5   r   r   r   aggfunm  s   
z5test_wrap_aggregated_output_multindex.<locals>.aggfunr  )r   r1   r   r1  r2  rk   rl   r3  r-   rg   rT  r*  r   r   rf   )rz   r4  r6   r(  rr   rs   r  r   r   r   %test_wrap_aggregated_output_multindex^  s   
"r  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   r  r   rJ   secondr   )r-   rR  r&   rZ   )rz   r   r   r   r   test_groupby_level_applyv  s   r  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~   r  qux)rT   rU   r   r  c                       g | ]}  |qS r   r  r   )mapper0r   r   r         z-test_groupby_level_mapper.<locals>.<listcomp>r   r   c                    r  r   r  r   )mapper1r   r   r     r  r  )r   r  )
rX  r-   rN   r1   r   r:   r&   rZ   r3   r4   )rz   Z	deleveledZresult0r   Zmapped_level0Zmapped_level1Z	expected0Z	expected1r   )r  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!   r?   rV   r   r    rW   r  )rJ   r!   r?   rJ   r   r    r!   r  r}   r?  )r%     r?   r   r    r  rJ   rP   r   r  r$   z2level > 0 or level < -1 only valid with MultiIndexrH   zNo group keys passed!z*multiple levels only valid with MultiIndex)
r   r	   r/   r-   rN   r3   rh   rk   rl   rl  )sr   r   rr   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   r  )r   r1   r2   r-   rN   r3   rh   )r   r   r   r   r   r   test_groupby_complex  s   r  c                  C   sf   t dddddddddg} | d }t dgdggtddgdd	td
gd}t|| d S )Nr!   r  r   rJ         ?      ?r   r         ?r?  r   r&   r   )r   r-   r[   r	   r3   r4   rC  r   r   r   test_groupby_complex_mean  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}| jd	dd }t|| tg dd	d
|_	| jd	dd }t|| d S )NrJ   r  r   r  r   )rJ   rJ   rJ   r   )r  r        ?        r   r?  r   r  Fsort)r  r  r  T)
r   r1   r   r:   r	   r-   rR  r3   r4   r&   r6   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[   rb   r&   r  r3   rh   )s1s2ro   rs   r<  r   r   r   'test_groupby_series_indexed_differently  s   

r  c            	      C   s  t tg dg dg } t| }tg d}ttjdd||d}|j	dd
 }t|j| d	}tjt|d
 |j	ddd}W d    n1 sPw   Y  |
 }t|j|j |j	ddd}t|j| |j	dddd }t|j| tjt|d
 |j	ddd}W d    n1 sw   Y  |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~   r  r  r}   r}   r  r  )rT   rU   rT   rU   rT   rU   rT   rU   ))r   cat)r   dog)r   r  )r   r  r!   )r   r   r  r   r  r  rH   rJ   )r   r   r[   c                 S   r   rL   r  rB   r   r   r   rD     rE   z0test_groupby_with_hier_columns.<locals>.<lambda>c                 S   s
   |  dS )NrJ   r  rB   r   r   r   rD        
 r   r   r~   )r   r}   Tr  r$   )r.   rg  r   r9  r   r1   r`   ra   r   r-   r[   r3   rn  r   rd   re   r&   rg   ri   r	   Z	sortlevel)	Ztuplesr&   r   r6   r   r   r7   Zsorted_columns_r   r   r   test_groupby_with_hier_columns  sH   
r  c                 C   sD   |  | d j}|  | d d }| }| }t|| d S )Nr   )r-   r   rU  rN   r3   r4   )r6   ro   ra  r   r   r   r   r   test_grouping_ndarray%  s
   r  c                  C   sl   t g ddd} tg dg dg dg dg dd	| d
}|g d}|d}| }t|| d S )Nr   rJ   r!   r?   r   r&   r?  )foo1r  Zfoo2r  Zfoo3)bar1bar2r  r  r  )baz1r  r  baz2r  )spam2Zspam3r  spam1r  )rW   rX   (   rO  <   )r}   r~   r  spamrn   r%   )r}   r~   r  r  r[   )r	   r   r-   rg   r[   r3   r4   )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&   rZ   r   r6   r   r   r   r   r   test_groupby_series_with_nameB  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 r_   )r1   rN   rB   r   r   r   rD   U  r   z.test_seriesgroupby_name_attr.<locals>.<lambda>)r-   rR  rZ   r[   rg   )r6   r   ZtestFuncr   r   r   test_seriesgroupby_name_attrO  s
   r  c                  C   sf   t g dg dtjddd tdd} | dgj }| j| j	 }t
|| d S )Nr|   )rT   rT   rU   rU   rU   rU   rT   rU   r!   r   r   r   r   )r   r1   r`   ra   r   r2   r-   r   rR  r   r3   rh   r  r   r   r   test_consistency_nameY  s   	r  c                 C   s  d	dd}dd }d}t jt|d | d|}W d    n1 s%w   Y  |jjd u s2J t jt|d | d|d}W d    n1 sMw   Y  |jjdksZJ t jt|d | d|}W d    n1 stw   Y  |jjd u sJ d S )
Nc                 S   s   t dddd|dS )NrJ   r!   r?   rR  r[   Z	omissionsr?  )r   )r6   rZ   r   r   r   	summarizel  s   z0test_groupby_name_propagation.<locals>.summarizec                 S   s   t dddd| jd d dS )NrJ   r!   r?   r  r   r   r?  )r   r,   r   r   r   r   summarize_random_nameo  s   z<test_groupby_name_propagation.<locals>.summarize_random_namer   rH   r   metricsrL   )r3   rd   re   r-   ri   r   rZ   )r6   r  r  rr   r  r   r   r   test_groupby_name_propagationj  s   
r  c                  C   sJ   t dd tdD } | d}| }| | d  }t|| d S )Nc                 S   s   g | ]}t d qS )rV   )r1   r2   r   r   r   r   r     r  z2test_groupby_nonstring_columns.<locals>.<listcomp>rV   r   )r   r/   r-   r[   r3   r4   ri  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 )NrY   )r   r   r   r>  rJ   r!   r   r   r   r?  r   )r   r	   r-   r   r3   r4   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)rN  rN  r   rV   )r1   r   fillr   r   Ztiler/   r-   rg   ry  Zisnar  )arrrG  Zindsr   r   r   r   (test_cython_grouper_series_bug_noncontig  s   
r  c                  C   sh   t dgd } ttjdd| d d d d}tjdddd}||}dd	 }|| d S )
NZ
aaaaaaaaaarN  r!   rO  r%   r   r    c                 S   s   t ttt| jS rL   )rc   setmapidr&   rB   r   r   r   rD     r   z5test_series_grouper_noncontig_index.<locals>.<lambda>)	r	   r   r1   r`   ra   r   rV  r-   rg   )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|j	d	 t
s3J ||}|jtjks@J t|j	d	 t
sJJ d S )
Nr    )r   r   r   r  r   rv   r   c                 S   s   t t|  S rL   )r   strr[   rB   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   )rc   r   baser   r  r[   rB   r   r   r   convert_force_pure  s   zDtest_convert_objects_leave_decimal_alone.<locals>.convert_force_purer   )r   r/   r1   r   r-   rg   r9   Zobject_r*  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   )rC   r/   rC   rZ   r9   r/   r@   T)Z	by_blocks)r   r1   r2   r9   r<   r-   r   r	   r   r3   r4   )r6   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   r  r   r   r  r   r7  r?  )r   r-   rQ  r   r   from_productr3   rh   rC  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dg }|  | d | d g dg }d S )Nr   Tr  Fr   z^'foo'$rH   r$   r   rJ   r?   r   r!   )r}   r~   valr}   r~   r  )r-   r.   r[   r3   r4   rk   rl   KeyErrorr   r1   r`   ra   r   rC  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   r   r   rV   r      Zmetricr   r   r   )r   r   )r   r   r   r-   r   r[   r   r&   rx   r   r3   r4   )r   r&   r6   r   r   r   r   r   $test_groupby_keys_same_size_as_index  s   
r  c                  C   s   d} t tjddtdd}tjt| d |	d W d    n1 s(w   Y  t tjddtdd}tjt| d |	d W d    d S 1 sTw   Y  d S )	Nz^'Z'$r!   )rJ   r   r   r>  rH   Z)r!   r   )
r   r1   r`   ra   r   r.   rk   rl   r  r-   )rr   Zdf1r   r   r   r   test_groupby_one_row  s   "r  c                  C   s  t tjd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sOJ t||D ]\}}t|j
| | qTt|jjd j|  |jdkstJ 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sJ 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 s<w   Y  tjtdd |tj W d    n	1 sZw   Y  qd S )Nr!   r   z
2013-01-01z
2013-02-01r   r   )r   dtr  r  rJ   rP   r?   r    r   z2013-01-01 00:00:00r   z2013-02-01 00:00:00z^NaT$rH   )r   natr   r<   r  zdatetime64[ns]z^nan$)!r   r1   r`   ra   r   r   r   r-   r	   sortedr  r(  rc   rg  r3   rn  r4   _grouperr   rG  Zngroupsr   Zintpr  assert_numpy_array_equalrB  r,   rk   rl   r  r(   r+   r9   )r6   ro   r   r(  rp   r   Znan_dfr   r   r   r   test_groupby_nat_exclude  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   r1   r   r-   r  )r6   r   r   r   r   #test_groupby_two_group_keys_all_nanK  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%   Zg1Zg2r   r   ZzerosrJ   r   l1l2ZlabelTr          r   )r   r/   r-   r[   r1   r   r3   rn  r   r	   r  r   )r  tmpZ
res_valuesr   r   r   test_groupby_2d_malformedR  s   r  c                  C   s   t t dt dt df} t d}t|| || t jddd}|g d }|g d }t	|t	|ksCJ d S )Nr   i  ia  r!   )r   r   r#   r   r&  r   )r   r#   r   r   )
r1   Zconcatenater2   r   r`   ra   r   r-   rN   rc   )r   r   r6   rK  r[  r   r   r   test_int32_overflow^  s   "

r  c                  C   sz  t g dg dg dtjd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dgd }|	 }dd fdd}|| |ddgd d S )Nr}   r~   r  )r?   r!   rJ   rY   r!   r?   r   r   r   r  c                 S      g | ]}t |qS r   tupler   rowr   r   r   r   z  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   rB   r   r   r   rD     rE   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  )	r6   r   r(  Zfieldr   tupsr   rp   rq   r   r   r   _check_groupby  s   
z/test_groupby_sort_multi.<locals>._check_groupby)r   r1   r`   ra   r   r   r  r  r-   rN   r3   r  r&   )r6   r  r   ro   r  r   r   r   test_groupby_sort_multip  s:   	


r  c                  C   st   t g dg dd d} d}tjt|d | jddd	d
d }W d    n1 s-w   Y  t||  d S )N)r   r   r   r   r   r   r  r!   )r   rZ   r   rH   r   FrF   c                 S      | S rL   r   rB   r   r   r   rD         z/test_dont_clobber_name_column.<locals>.<lambda>)r   r3   rd   re   r-   ri   r4   )r6   rr   r   r   r   r   test_dont_clobber_name_column  s   r  c                  C   s   t tjddttdtdtddddd	} | 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 )Nr!   r   r   r   r   rV   r   r   r   c                 S   r   rL   r   rB   r   r   r   rD     r   z&test_skip_group_keys.<locals>.<lambda>FrF   c                 S   s   | j ddd d S )Nr   rJ  r?   sort_valuesrB   r   r   r   rD     r   c                 S   s$   g | ]\}}|j d ddd qS )r   r  Nr?   r  r   r   r   r   r   r   r     s   $ z(test_skip_group_keys.<locals>.<listcomp>r   c                 S   r   rL   r   rB   r   r   r   rD     r   c                 S   s   |   d d S rA   r  rB   r   r   r   rD     r   c                 S   s    g | ]\}}|  d d qS rA   r  r  r   r   r   r     s     )r   r1   r`   ra   r   r	   r.   r   r   r-   ri   r(   r)  r3   r4   rh   )Ztsfro   r   piecesr   r   r   r   test_skip_group_keys  s   

r  c                 C   s8   | d   }d |_|| d d}|jd u sJ d S )Nr#   r   rN   )r*   rZ   r-   rg   )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>   r?   r   test)g?r  g?flrN   r^  )r  r!   )r   r1   r2   reshaper-   rg   r9   r<   )rC   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rQ  rt  r  r   r   r   r   r     r   z(test_handle_dict_return_value.<locals>.fc                 S   s   t |  |  dS r  )r   rQ  rt  r   r   r   r   r     s   z(test_handle_dict_return_value.<locals>.gr   r#   )r-   ri   r*  r   r3   rh   )r6   r   r   r   r   r   r   r   test_handle_dict_return_value  s   r	  grouperr   r   c                    s   dd }dd   fdd}| j |dd}d	}tjt|d
 || W d    n1 s.w   Y  |  |  d || |d | |d   |d  |g |d | d S )Nc                 S   s   | j d usJ | S rL   r?  r   r   r   r   r     s   ztest_set_group_name.<locals>.fc                 S   s   | j d usJ |  S rL   )rZ   rN   r   r   r   r   freduce  s   z$test_set_group_name.<locals>.freducec                    s    | S rL   r   rB   r  r   r   freducex  s   z%test_set_group_name.<locals>.freducexFrF   r   rH   r  r#   )r-   r3   rd   re   ri   rf   rj   )r6   r
  r   r  ro   rr   r   r  r   test_set_group_name  s   

r  c                     s   t g dtdd} g   fdd}d}tjt|d | jdd	d	d
| W d    n1 s3w   Y  g d} |ksBJ d S )N)r   r   rJ   rJ   r!   r!   r  r   c                    s     | j |  S rL   )r8  rZ   r*   r   r7  r   r   r     s   z6test_group_name_available_in_inference_pass.<locals>.fr   rH   r   F)r  rG   rY   )r   r1   r2   r3   rd   re   r-   ri   )r6   r   rr   Zexpected_namesr   r7  r   +test_group_name_available_in_inference_pass  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&   rZ   r   r  r   r   r   test_no_dummy_key_names  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!   r?   r   r    r%   r  )rJ   r   r   r   r!   r   Fr   r  T)r   r   r-   r   r3   rh   
sort_index)r&   ZmseriesZmseries_resultr   r   r   r   #test_groupby_sort_multiindex_series  s   "r  c                  C   s   d} t dd| d}tt| t| d|d}ddd	}|d
d }|d|tji}|d|tjdi}t|| d S )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%  )ZhourrB   r   r   r   rD   :  r  zYtest_groupby_reindex_inside_function.<locals>.agg_before.<locals>._func.<locals>.<lambda>r   )r   r&   r  dropnarc   )rn   r  fixfuncr   r   _func9  s   zGtest_groupby_reindex_inside_function.<locals>.agg_before.<locals>._funcr   )r  r  r  r   r  r   
agg_before4  s   z8test_groupby_reindex_inside_function.<locals>.agg_beforec                 S   s   t | j| j| jS rL   )r   r   r   r   rB   r   r   r   rD   C  r]   z6test_groupby_reindex_inside_function.<locals>.<lambda>r  T)F)	r   r   r1   r2   r-   rg   rQ  r3   r4   )r   Zindr6   r  ro   Zclosure_badZclosure_goodr   r   r   $test_groupby_reindex_inside_function/  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group2r   r  r   Tr  rN   ))r   r   )r   r  r   r   r7  r!   rJ   r    r   r  )r   r   r-   rg   r   r9  r3   r4   )r6   r   r   r
  r<  r   r   r   $test_groupby_multiindex_missing_pairJ  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 |d }t	
t |d }W d    n1 s\w   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   r7  rJ   r?   r   r>  r  )rJ   r$  r%  r?   )rJ   r&  r'  r   )r   rn   r   r  )r&   r   r   )r   r   r   r   rJ   rJ   r!   r!   rJ   r!   r?   r   rC   r   zrC   r   r   rJ   )FTF)r   r  rG   )r   r9  r   r   Z_is_lexsortedpivot_tablerX  r-   r[   r3   rd   r   r4   r   r&   ri   Zdrop_duplicatesr  )Zlexsorted_miZlexsorted_dfZnot_lexsorted_dfr   r   r6   r   r  r   r   r   %test_groupby_multiindex_not_lexsorted_  sP   

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 r_   rc   rB   r   r   r   rD     rO   z4test_index_label_overlaps_location.<locals>.<lambda>r(  r   c                 S   r/  r_   r0  rB   r   r   r   rD     rO   c                 S   r/  r_   r0  rB   r   r   r   rD     rO   c                 S   r/  r_   r0  rB   r   r   r   rD     rO   )r   r.   r-   filterr,   r3   r4   r  rh   r&   rx   r   )r6   r   actualr   r5   r   r   r   "test_index_label_overlaps_location  s(   r3  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[   )r1   r2   r   r-   rj   r3   r4   )nrC   r6   r   r7   r   gb2r   r   r   r   "test_transform_doesnt_clobber_ints  s   
 



r7  sort_columnintsfloatsstringsgroup_column
int_groupsstring_groupsc                    s   t g dg dg dg dg dd}|j d}||} fdd	}d
}tjt|d || W d    d S 1 s?w   Y  d S )N)r?   rJ   r   rJ   r   r?   r?   r?   )r,  r   r,  r   r   r   r   r   )r   rP   r   r    r!   r>   rJ   rJ   )gffffff@g333333@g@g333333g@皙?r?  r    )r,  r  r   r   ZwordZword2Z42Z47)r=  r>  r9  r:  r;  r  c                    s   t | | j d d S )Nr  )r3   r4   r  rB   r8  r   r   	test_sort  s   z.test_groupby_preserves_sort.<locals>.test_sortr   rH   )r   r  r-   r3   rd   re   ri   )r8  r<  r6   r   rA  rr   r   r@  r   test_groupby_preserves_sort  s   
"rB  c                  C   s   t tt ddd t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 sBw   Y  d S )NrW   ZMEr   )	eventDateZthenamerC  r   r   z	'badname'rH   ZbadnamerR  )r&   r   r   Zaggfunc)r   r   r   todaytolistr/   r   r&   r   r   rk   rl   r  rX  r-  r   r   r   r   !test_pivot_table_values_key_error  s   "rF  r   r#   r(  r   r  r   rJ   z
US/Easternr"   
2016-01-01r?   r   r   Int64r   Float64boolean)boolintr   r  r  Zdt64Zdt64tzZperiodrH  rI  rJ  )Zidsmethod)rZ  rg   ri   )r   idxminrt  rQ  rN   rv  r~  c                    s  d }t trdv rd}t d trdv rd}tdtdd}	td	r5|	jjk s5J |	j	d d }	|	j
d
|d
d|    fdd}
fdd}t |	jj	d tj}|	jj	d jdk}t t}t |	jj	d tj}t tr͈js͈dv r͈dv rd d}t}nd d}t}tj||d |
  W d    n1 sw   Y  dv rt | tr|
dd}| }t|| d S dv rE|s|s|s|rEdkrE|rd}n|rd}n|rd d}nd }d!krd"|d#g}tjt|d |
  W d    n	1 sw   Y  t | ts$d S d!kr+d S |
dd}|	g  }|r=| }t|| d S |
 }|	|  }d$v r[||	jj}|d ure||}td%krrd |j_t|| d S )&N)rN   rv  rH  r   )rv  rN   r:   r'   ABCr>  r9   F)rG   r  observedc                     s2   dkrt  di | S t  fi | S )NrZ  r   )r   )kwargs)r7   rM  r6  r   r   
get_result+  s   z&test_empty_groupby.<locals>.get_resultc                     sh   t dgjd} t dkrtj| | g d}nt|  d d}r)tg dd}ng }tg ||d}|S )Nr   r   rJ   r7  r?  r  r   )r   r9   rc   r   r  r	   r   )Zlevr
  r   r   )r(  r4  r   r   r    get_categorical_invalid_expected1  s   z<test_empty_groupby.<locals>.get_categorical_invalid_expectedM)rt  rQ  rN  r   )rt  rQ  zCannot perform z with non-ordered Categoricalz
Can't get z/ of an empty group due to unobserved categoriesrH   Tr  )rv  rN   r~  rN   z datetime64 type does not supportzPeriod type does not supportrz  r{  zcategory type does not supportr~  |z!does not support reduction 'skew')r   rN  rJ   )r*  r   rK  r   r.   hasattrr   r9   r  r,   r-   r(   ZPeriodDtypekindr   ZStringDtypeorderedr3  rl  rk   rl   r3   assert_equaljoinr   rx   r&   rc   rZ   )r   r(  r   rM  r6  Zusing_array_managerr  r4  Zoverride_dtyper6   rR  rS  Zis_perZis_dt64Zis_catZis_strrr   r|  r   r   r   )r7   r(  rM  r6  r4  r   r   test_empty_groupby  s   '









r[  c                  C   s   t tjdd} | d tj| d< g d| _| j| d dd}d}t	j
t|d	 |d
d }W d    n1 s>w   Y  |j| jk sMJ d S )Nr!   )r   r   r?   r   rJ   r!   r   rJ   FrF   r   rH   c                 S   r  rL   r   rB   r   r   r   rD     r  z<test_empty_groupby_apply_nonunique_columns.<locals>.<lambda>)r   r1   r`   ra   r   rx   r:   r   r-   r3   rd   re   ri   r   r  )r6   r7   rr   r   r   r   r   *test_empty_groupby_apply_nonunique_columns  s   
r]  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')rH   r   r   r   r   rJ   r?  rA  )
r   rk   rl   r  r-   rN   r   r	   r3   rh   rC  r   r   r   test_tuple_as_grouping  s   	r^  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   r?   r!   r   r  z
^\(7, 8\)$rH   )rP   r   )	r   r/   r   r  rk   rl   r  r-   r[   r   r   r   r   test_tuple_correct_keyerror  s   $"r_  c               	   C   s   t dgdggtdgddtddddd	d
} t 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   rZ   r   )rJ   rJ   rJ   rJ   rJ   ))r}   rN   r}   )r}   ohlcopen)r}   rc  r  )r}   rc  r  )r}   rc  close)r`  NNr7  )r   rN   rc  )
r   r	   r   r   r9  r-   r   rg   r3   r4   r  r   r   r   test_groupby_agg_ohlc_non_first  s   

rf  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   r?   dater7  )r?   r!         @r   r%   r  r4  rh  )
r(   r+   r   r   r9  r   r-   r[   r3   rh   )r   r:  r5   r   r   r   r   r   test_groupby_multiindex_nat  s   ri  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 )NrV   Zappler   r>  z$Grouper and axis must be same lengthrH   )rg  r/   r   rk   rl   rl  r-   )r   r6   rr   r   r   r   test_groupby_empty_list_raises  s   "rj  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 )NrC   r   r   rp   )r   r  thirdr7  rJ   r!   r  r   rk  r?   r%   )r   from_arraysr   r-   rN   r3   rh   )Zindex_arrayZindex_namesZrir  r   Zeir   r   r   r   8test_groupby_multiindex_series_keys_len_equal_group_axis  s   rm  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   rI  Zbetar7  )rJ   r!   rJ   r!   r*  r  r%   r  )r   r  r   r-   r   r  )r:  r6   r   r   r   r   r   "test_groupby_groups_in_BaseGrouper  s   rn  
group_namerC   c                 C   sB  t tdddg dg dd}d|j_d|j_d	}tjt	|d
 |j
| dd}W d    n1 s5w   Y  | }|j
|  j}t|| g dddgg}tj|ddgd}t tdddg d|d}tjt	|d
 |j
| dd}W d    n1 sw   Y  | }|j
|  j}t|| d S )NrQ   r?   r   r   rJ   r   )rV   rW   rV   rW   r  r   rC   r  rH   rJ   r   )r~   r  r}   rT   rU   Zx1)	iterablesr      r  )r   r1   r2   r  r&   rZ   r   r3   rd   re   r-   rN   r   r4   r   r  )ro  r6   r   r7   resultsr   rq  r:  r   r   r   test_groupby_axis_1
	  s*    rt  zop, expectedshifttime2019-01-01 12:00:002019-01-01 12:30:00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   rw  rx  rz  r{  )r  rv  c                       | j j S rL   rv  r  Ztz_localizerB   r"   r   r   rD   `	  r   z+test_shift_bfill_ffill_tz.<locals>.<lambda>)rv  r  c                    r}  rL   r~  rB   r"   r   r   rD   d	  r   )r   r   Zassignr-   r   r3   r4   )Ztz_naive_fixturer6  r   rn   r6   ro   r   r   r"   r   test_shift_bfill_ffill_tz&	  s   .
r  c                  C   sD   t d gdd} | dd d}ttjgdd}t|| d S )NrJ   )r   rC   r   rC   rN   r?  )r   r-   rj   r   r1   r   r3   rh   )r6   r2  r   r   r   r   test_groupby_only_none_grouph	  s   r  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   r  )r!   g      @r   )r   r   r  )r   r-   r[   r3   rh   )r5   r7   r   r   r   r   r   test_groupby_duplicate_indexr	  s
   r  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}| dkr7tnd }d}tj||d |jd d 	d	gj
| g|R  }W d    n1 s_w   Y  tj||d |	d	gj
| g|R  jd d }W d    n1 sw   Y  | dv r|t}t|| d}tj||d |d jd d 	d	gj
| g|R  }W d    n1 sw   Y  d}tj||d |d 	d	gj
| g|R  jd d }W d    n1 sw   Y  | dv r|t}t|| d S )NrJ   rD  r?   r   )col_1col_2col_3col_4rn   r   r  r  r  r  fillna)r|  r   %DataFrameGroupBy.fillna is deprecatedrH   r   )diffru  z"SeriesGroupBy.fillna is deprecated)r   r   rx   rL  r   re   r3   rd   r,   r-   rj   rY  )Ztransformation_funcZrequestr6   argsr   warn_msgr   r   r   r   r   test_group_on_empty_multiindex|	  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}d
}nd}tjt	|d |j
|dd}W d    n1 sDw   Y  | }tddgddgd|d}d|j_|sc|j}t|| |dkrtjt	|d |g  j
|dd}W d    n1 sw   Y  |g  }	n*tjt	|d |jg  j
|dd}W d    n1 sw   Y  |jg  tj}	| }
t|
|	 d S )NrG  r!   r}   )r   rZ   rJ   r?   r   )r  )r   r#   )r   r   )r~   r  r  r  rH   )r   r   )r   r   r%   r~   )r   r   r   r   r&   Z_get_axis_numberr   r3   rd   re   r-   ZnuniquerZ   r4   r   rx   r1   r<   )r   rb  r6   Zaxis_numberrr   r7   r   r   r6  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>   r?   r   r  )	r   r1   r2   r  r   r-   r[   r3   r4   )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s7J W d    d S 1 sBw   Y  d S )Nr!   )r    rJ   r   zdisplay.max_seq_items)r   r1   r`   ra   r   r&   r(   option_contextr-   r  __repr__r   r   )Zmax_seq_itemsr   r6   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  r1   r   r:   rc   r  )r6   r   r   r   r   r   r   r   6test_group_on_two_row_multiindex_returns_one_tuple_key	  s   r  zklass, attr, valuer   r  rG   rP  r  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!   r?   r   r   r   r   )r   )r   r   r-   r   )r|  rZ  r   r6   r   r   r   r   r   #test_subsetting_columns_keeps_attrs	  s   
r  c                  C   s   t dgdgdgd} d}tjt|d | jg ddd}W d    n1 s(w   Y  d	}tjt|d |d
dg   W d    d S 1 sJw   Y  d S )NrJ   r!   r?   r'   r  rH   r  r   z'Cannot subset columns when using axis=1r   r   )	r   r3   rd   re   r-   rk   rl   rl  rN   )r6   rr   r   rI   r   r   r   test_subsetting_columns_axis_1
  s   "r  r  )rN   anyru  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   r3   rn  )r  r   r6   r   r   r   r   r   #test_groupby_column_index_name_lost#
  s
   r  infer_stringpyarrow)Zmarksc                 C   s   | rt d tg dg dg ddt}g d|_td|  |g d	 }W d    n1 s7w   Y  tg d	gt
d
gg dtd}t|| d S )Nr  )r   r   r   r  r  r*  r'   )r   r   r   zfuture.infer_string)r   r   r   r   )r   r   rJ   r   )r&   r   r9   )rk   Zimportorskipr   rx   r   r   r(   r  r-   rt  r1   r   r3   r4   )r  r6   r   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&   rZ   )r   r   r   r  r!   r   rJ   )r   r&   rZ   r-   lastr3   rh   )r5   r   r   r   r   r   #test_groupby_series_with_tuple_nameD
  s   r  z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	   r3   r4   )r  r   rn   r6   r   r   r   r   r   )test_groupby_numerical_stability_sum_meanN
  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@  r3   r4   )rn   r6   r   Zexp_datar   r   r   r   'test_groupby_numerical_stability_cumsumZ
  s    r  c                  C   sz   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!   )r    r    r    rJ   r   Fskipnar  )r1   r`   ra   r   r   r/   r   r,   r-   r@  r3   r4   )r  r6   ir7   r   r   r   r   r    test_groupby_cumsum_skipna_falsef
  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 )NrG  r    r   r   r!   rJ   r  r   FT)r  r  r   r   )	r   r   r(   r+   r   r-   r@  r3   r4   )rb  r5   r6   r7   r   r<  r   r   r   test_groupby_cumsum_timedelta64v
  s   

,$r  c                 C   s4   | }|j dd }| |j }t|| d S )Nr   r  )r-   r[   r&   r3   rh   )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   r@   )r   r1   r   r-   r&   rN   r	   r<   r:   r3   rh   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}| r2tg g gg g gddgd}|s+dgntg d	d
}ntd}|s<g dnddg}t g ||d}t|| d S )Nr'   r  r   r   r   r  r7  r#   r  r   r   r   )r   r-   rN   r   r	   r   r3   r4   )r   r  r6   r7   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
}| jdgd}| }t|| d S )NrT  rJ   WrV   rW   ZMWrq   r>  r?  r%   r  )r   r	   r-   rN   r3   r4   r6   r   r7   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 rV   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:   rC   r9   rZ   r%   r  )r   r/   r	   r-   rN   r3   r4   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:   rC   r  r%   r  )	r   r/   r.   r   r	   r-   rN   r3   r4   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-   r0   r	   r3   r4   )Zdictsr6   Z	df_filter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	} | jd
dgddj}d
tdft	
dgdtdft	
dgdtdft	
dgi}||ksMJ d S )Nabc)ra  z
2018-02-01z
2018-03-01categoryr   )r$   r   rJ   r   rJ   )
categoriesr   r   r   FrP  z2018-01-01 00:00:00z2018-02-01 00:00:00r   z2018-03-01 00:00:00r!   )r   r   r.   r   r   Z
from_codesr-   r  r   r1   r   rC  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!   r?   r   rZ   r  z@^[a-zA-Z._]*\(\) got an unexpected keyword argument 'min_period'rH   )ZwindowZ
min_period)r1   r   r   r   r   rk   rl   r3  r-   ZrollingrN   )Zname_lZval_lZtest_dfZresult_error_msgr   r   r   #test_rolling_wrong_param_min_period  s   "
"r  c                 C   sx   t g dg dtg d| 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  r   )NameCreditMoodrN   )r  r  r  r  r  i	  r  r  r  )r  r  r  )r   r   moder-   rg   r   r3   r4   )Zany_string_dtyper6   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!   r?   r!   r?   rJ   r   r   r7  r%   r   r  r!   )r  r!   )r   r?   )r   r   rl  r-   rN   r9  r3   rh   )r  r5   r   r   r   r   r   #test_groupby_none_in_first_mi_level2  s   r  c                 C   s|   t g dg dg dd}| rtjgnd g}|j|d}| }t ddgdd	gd
tddg|d dd}t|| d S )Nr)  )rJ   rJ   r!   r?   )r   r    r  rP   )Nr   r   r  r!   r    r>      r!  rJ   r   r?  r%   )r   r1   r   r-   rN   r	   r3   r4   )r4  r6   rJ  r7   r   r   r   r   r   test_groupby_none_column_name=  s   *r  	selectionc                 C   sr   t ddgtjdgtjdgdddgd}| d u r|dgn|dg|  }d	d
 |D }ddg}||ks7J d S )NrJ   r!   r    r   rC   r   r%   r   c                 S      g | ]\}}|qS r   r   r   r   r  r   r   r   r   L  r   z5test_single_element_list_grouping.<locals>.<listcomp>rJ   )r!   )r   r1   r   r-   )r  r6   ro   r   r   r   r   r   !test_single_element_list_groupingG  s
   ($r  c                  C   sv   t g dg dd} | d d| d< t g dg dd}|d d|d< | jddd	}| }t|| d S )
N)r   r   r   r   )rJ   r!   r?   r!   )str_colZnum_colr  stringr   )r  r   r4  Fr   )r   rx   r-   r[   r3   r4   )r6   r   ro   r   r   r   r   test_groupby_string_dtypeR  s   
r  zlevel_arg, multiindex)r   F)r  Tc                 C   s   t ddgddgddgddd	gd
}|r|ddg}d}tjt|d dd |j| dD  W d    d S 1 s;w   Y  d S )NrJ   r!   r?   r   r    r  r   rC   r   r%   r   r   zCreating a Groupby object with a length-1 list-like level parameter will yield indexes as tuples in a future version. To keep indexes as scalars, create Groupby objects with a scalar level parameter instead.rH   c                 S   r  r   r   r  r   r   r   r   u  r   zKtest_single_element_listlike_level_grouping_deprecation.<locals>.<listcomp>r  )r   r   r3   rd   re   r-   )Z	level_argr   r6   r   r   r   r   7test_single_element_listlike_level_grouping_deprecationf  s   $"r  )rN   r@  cumprodrv  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  TrS  )r   r   r-   r	   rX  r3   r4   )r  r  r6   r   r   r   r   r   #test_groupby_avoid_casting_to_floatx  s   r  z	func, val)rN   r?   )rv  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  r@   )r   r(   NAr   r-   r	   r3   r4   )any_numeric_ea_dtyper  r  r6   r   r   r   r   r   test_groupby_sum_support_mask  s   r  z
val, dtype)o   rL  )   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64r@   )r   r-   rN   r	   r3   r4   r@  rv  )r  r9   r6   r   r   r   r   r   test_groupby_overflow  s$   r  zskipna, val)Tr?   c                 C   sT   t ddtjdgd| d}|dj|d}t ddtj|gi| d}t|| d S )NrJ   r!   r   r   r   r  r   )r   r(   r  r-   r@  r3   r4   )r  r  r  r6   r   r   r   r   r   test_groupby_cumsum_mask  s   r  zval_in, index, val_out)r   r   r4  r   r  )r}   r}   r~   r  blah)r4  r   r  r4  )r   r   r4  r   r  g      @)r}   r}   r~   r  r  r  )r4  r   g      &@r4  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   rZ   r&   )r~   r  r  r}   )r   r	   r-   rN   r3   rh   r)   r4   )Zval_inr&   Zval_outZseriesr   r   r   r   r   (test_groupby_index_name_in_index_content  s   r  r5  )rJ   rV       rN  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  rK  rK  r  r?  r%   )r   eqr-   rN   r	   r3   r4   )r5  r6   r   r   r   r   r   test_sum_of_booleans  s
   r  z<ignore:invalid value encountered in remainder:RuntimeWarning)r  tailrW  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  rW  r   r   )r5  )r   r  r   r  r   r?  r%   )
r   r1   r   r/   r   r-   r   r   r3   r4   )rM  r6   r   r   r   r   r   test_groupby_method_drop_na  s    r  c                  C   sr  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d|_t|| | }|d d }ttdtd|_t|| d S )NrG  rN  r   r   rV   z+Period type does not support sum operationsrH   z.Period type does not support cumsum operationsz,Period type does not support prod operationsz/Period type does not support cumprod operationsir   )r(   period_ranger.   r/   Z	to_seriesr-   rk   rl   r3  rN   r@  rv  r  rQ  r	   rL  r&   r3   rh   rt  )ZpiZgrpsr5   r7   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!   r?   r\  rJ   )r   r!   r?   r   )r   r   r-   Z_obj_with_exclusionsr  r3   r4   )r6   r7   r   r   r   r   r   *test_obj_with_exclusions_duplicate_columns  s   
r  c                 C   s   ddddddg}t |td}|jdddd	}| r1|jd
d}t ddgdgd}t|| d S tjtdd |j| d W d    d S 1 sJw   Y  d S )Nr}   r~   r   ZcarZdarr   r   F)r   r  Tr  r>  z(could not convert string to float: 'bar'rH   )	r   r   r-   r0   r3   r4   rk   rl   rl  )r  Zdicts_non_numericr6   r  r   expected_dfr   r   r   'test_groupby_numeric_only_std_no_result  s   "r  z7ignore:invalid value encountered in cast:RuntimeWarningc                  C   s   t g dg dd} tj| d tdddd}| j|d	gd
dd d}ttddddtddddtddddtddddgdd}g d}t	j
||gdd	gd}ttdtjdtjdtjdtjtjdtjtjg|dd}t|| d S )N)皙?皙?333333?皙ٿ      ?)r   r   r   r   r   )rC   wrC   r   rJ   r    r   r  Fr  r[   gDlٿr  r[  )closedr  r  r  T)rX  r   r7  r  r  )r   r(   Zqcutr1   Zlinspacer-   rg   r   r
   r   r  r   r   r   r3   rh   )r6   Zqqr   Zcategorical_index_level_1Zindex_level_2r:  r   r   r   r   /test_grouping_with_categorical_interval_columns0  sF   	r  bug_varc                 C   sr   t d| | | tjgi}t| tr|t}|dd }|jdd}t | | | d gdg|d j	d}t
|| d S )Nr   c                 S   r  rL   r   rB   r   r   r   rD   `  r  z;test_groupby_sum_on_nan_should_return_nan.<locals>.<lambda>rJ   )Z	min_count)r   r9   )r   r1   r   r*  r  rx   r   r-   rN   r9   r3   r4   )r  r6   r  r   r  r   r   r   )test_groupby_sum_on_nan_should_return_nanZ  s   

r  )rR  ZcorrZcummaxZcumminr  r   Zrankr   r  ru  r  r  rN  r   r|  ry  Z
pct_changec                 C   sd   t dt| d}|| _| dgdg }| dg | d }t|| }t|| }t|| d S )N2014r   r   r#   )r   rc   r&   r-   r   r3   r4   )r6   rM  rngr   g_expr   r<  r   r   r   #test_groupby_selection_with_methodsi  s   r  c                 C   sT  t dt| d}d| j_|| _| dgdg }| dg | d }d}tjt|d t	|
d|
d W d    n1 sBw   Y  d	}tjt|d t	|j|j W d    n1 scw   Y  t	|d
d |d
d  t	|d |d  t	|d |d  t	|dd |dd  d S )Nr  r   r}   r   r#   r  rH   r   z%DataFrameGroupBy.dtypes is deprecatedc                 S   r   rL   rM   rB   r   r   r   rD     rE   z6test_groupby_selection_other_methods.<locals>.<lambda>r   c                 S   s   t | dkS rA   r0  rB   r   r   r   rD     rO   )r   rc   r   rZ   r&   r-   r3   rd   re   r4   r  r   ri   Zresampler[   rc  r1  )r6   r  r   r  r  rr   r   r   r   $test_groupby_selection_other_methods  s&      r  c                 C   s   t g d| }tg dg d|d}tddd| d}t|g dg dd	}|td
dd}|  }t	|| d S )N)z2016-08-31 22:08:12.000z2016-08-31 22:09:12.200z2016-08-31 22:20:12.400)r   r   r4  )quantquant2time2z2016-08-31 22:08:00r  Z1min)r   r   unit)rJ   rJ   r   r   r   r   r   r   r   r   r   r   rJ   )r  r	  r
  r  )r   r   )
r   Zas_unitr   r   r-   r   rR  rX  r3   r4   )r  Zidx2Z	test_datar  Zexpected_outputr7   r   r   r   r   test_groupby_with_Time_Grouper  s$   r  c                  C   sP   t g dtddddd} | |  }t ddgdd	}d|j_t|| d S )
Nrp  z
2022-01-01r?   r   Zjanr  r!   rJ   r?  )r   r   r-   rR  r&   rZ   r3   rh   r  r   r   r   1test_groupby_series_with_datetimeindex_month_name  s
   r  test_serieszkwarg, value, name, warn)rJ  r   rJ   NrJ  r  )r   r   rJ   Nc           
      C   s   t dg ditg dddd}| r|d }|jdi ||i}d}tj||d ||}W d    n1 s9w   Y  | rPtd	d
gtddgdddd}	nt dd	d
gitddgddd}	t||	 d S )Nr   rF  rE  r   r?  r%   z&you will need to pass a length-1 tuplerH   r?   r   rJ   r  r   )r   r	   r-   r3   rd   rB  r   rY  )
r  kwargr   rZ   r   rG  r7   rr   r   r   r   r   r   $test_depr_get_group_len_1_list_likes  s      r  c                  C   sJ   t ttjgdgd} | jddgddd }tdg}t|| d S )NrJ   r   r   r   F)r  rP  r   )	r   r   r1   r   r-   r]  r   r3   rh   rC  r   r   r   test_groupby_ngroup_with_nan  s   
r  c                  C   s   t g dg dg dg dg dd} tjtdd | jd	g d
d}W d    n1 s/w   Y  |d	}t g dg dd}t|| d S )N)r   r?   r!   r?   )r   rJ   r  rP   )r?   r   r!   rV   )rJ   r  r  r  )r    r  i)r  r   Zcol3Zcol4col5Z
deprecatedrH   rJ   )rJ   r!   r?   r!   rJ   )r   rJ  )r  r  )r   r3   rd   re   r-   rB  r4   ri  r   r   r   test_get_group_axis_1  s$   	
r  c                  C   s`   t dddddtjtjgig dd} | jdd	 }t dg d
ig dd}tj||dd d S )Nr   rJ   r!   r?   r   r  r%   r   r  )rJ   r!   r?   r   r!   r?   Fr   )r   r1   r   r-   r|  r3   r4   rC  r   r   r   (test_groupby_ffill_with_duplicated_index	  s   $r  c                 C   s   t tjtrJ ttdtdd d gtdtdtdtdgd}|jddd	}| r0|d
 }|jj}t	tdd gdd}t
|| d S )NrJ   r!   r?   r   r    )r   r   r   F)r  r   r?  )r*  decimalZInvalidOperationr3  r   r   r-   r  Zresult_indexr	   r3   rn  )r  r6   r7   r   r   r   r   r   test_decimal_na_sort  s   r  )r   r  r   r1  Znumpyr1   rk   Zpandas.errorsr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsZtdZpandasr(   r   r   r   r	   r
   r   r   r   r   r   r   r   Zpandas._testingZ_testingr3   Zpandas.core.arraysr   Zpandas.core.commoncorecommonr  ZmarkfilterwarningsZ
pytestmarkr   r8   Zparametrizeru   r{   r   r   r   r   r   r   r   r   r   r   r  r  r  r!  r"  r,  r5  r=  rD  rH  rL  r\  r`  rb  re  rh  rj  rm  ro  rp  rr  ru  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  r"  r.  r3  r7  rB  rF  r  r   r[  r]  r^  r_  rf  ri  rj  rm  rn  rt  r  r  r  r  r  r  r  r  r  r  r  ZparamZ
skip_if_nor  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  re   r  r  r  r  r  r   r   r   r   <module>   s   8
AH5

=(09
 
C"	


 
 	-	

?-	
	1~	
,

-)









	
&	

	
)		