U
    sVc                  "   @   sH  d dl Z d dlmZ d dlZd dlZd dlmZ d dlm	Z	 d dl
Zd dl
mZmZmZmZmZmZ d dlmZ d dlm  mZ d dlmZ d dlmZ ejejejej ej!dd	gd
ddddd	gddd Z"dd Z#ej$%de&e'e(gej$%ddddggdd Z)G dd dZ*G dd dZ+dd Z,dd  Z-d!d" Z.ej$%d#d$d%d&d'd(d)d*gej$%d+d,d-d.d.d/d0d1d/gifd2d-d.d0d/d0d3d/gifd4d-d.d.d/d0d1d/gifd5d-d.d0d/d0d3d/gifd6d.d0d/d0d3d/gd.gd7fd8d.d0d/d0d0d/gd'd9fgd:d; Z/ej$%d<ed=ed>fd?gd@dA Z0ej$%dBdCd d0gd.d1gd.d0gdDfdEd.d1gd d0gd d1gdDfgej$%dFdGdHgej$1dIdJdK Z2dLdM Z3ej$%dFdGdHdgdNdO Z4dPdQ Z5dRdS Z6dTdU Z7ej$%dVdWej8fdXej9fdYej:fdZej;fd[ej(fd\ej<fd4ej'fd5ej&fd,d]d^ fd2d_d^ fd8ej=fej>d`e7ej?dagdbdc Z@ddde ZAdfdg ZBdhdi ZCdjdk ZDej$%dld d.d0d1gd d d.d.gfd gd gfgej$%dmdndogdpdq ZEej$%drdsdtgdudv ZFdwdx ZGej$%dmdydzgej$%d#d{dd	d|d}gd~d ZHdd ZIdd ZJej$%dmdydzgej$%d#d|dd	gej$%dd.d.d.gd.ddgfd.d0d1gd.dd0gfd.d1d1gd.ddgfgdd ZKej$%dmdydzgdd ZLejMej$%dmdydzgej$%dd{eNd*j&fdgdd ZOej$%dd.d0dd1d0d d3ddd.d.gdGdHdHdGgfd.dejPd1d0ejPejP ddd.ejP gdGdHdGdHgfd.d0ejQd1d0ejQejQdejP d.ejQgdHdHdHdHgfgdd ZRej$%ddddd1d3ddd0d d.d.gdGdHdHdGgfejPd.ejP ejPd0dejP ddejP ejP gdGdGdHdGgfd.d0ejQd1d0ejQejQdejP d.ejQgdHdHdHdHgfgdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZej$1dej$%ddGdHgdd Z[dd Z\ej$%dd.d.d.d0d0d0d1d1d1g	d.ej]d0d.ej]d0d.ej]d0g	d/d.d.d0d0d1d1gd.d0d.d0d.d0gd/gej$%ddWdXdZgdd Z^dd Z_dd Z`dd Zaej$%ddddddddddddddddddddddddddddddddgej$%dFdGdHejbgej$%ddgddggddۄ Zcej$%d#edeeefeggdd݄ Zhej$%d#eeefeggej$%ddddgddddddgddgddddgdgddgdd Zidd Zjej$1ddd ZkdS )    N)StringIO)lib)UnsupportedFunctionCall)	DataFrameIndex
MultiIndexSeries	Timestamp
date_range)get_groupby_method_args)_test_decoratorsInt64Float64znp.int32znp.int64z
np.float32z
np.float64)paramsidsc                 C   s   | j }|}|dkrtj}n|dkr(tj}t|jdkrDt|jn
t|j}t|jdkrlt|j	n
t|j	}|||fS )zZ
    Fixture of dtypes with min and max values used for testing
    cummin and cummax
    r   r   i)
paramnpint64float64dtypekindiinfominZfinfomax)requestr   Znp_typemin_valmax_val r   F/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/groupby/test_function.pydtypes_for_minmax   s    	

r    c                  C   s`   t ddtjdg} | ddddg}|tj}|tj}| }t	|| t	|| d S )N      ?       @      @r         )
r   r   nangroupbyaggbuiltinssumapplytmassert_series_equal)sgroupedresultZresult2expectedr   r   r   test_intercept_builtin_sum8   s    r2   fkeysjimjoec              	      sb  t tjdddddgd}tjd|d< || }|j}||}t|j	| d	}d
|j
 d| d}|j
|dfkst|tt| |ttfkrt}nd }d}	tj||	dd | }
W 5 Q R X t||
 td  | fdd}W 5 Q R X t|| |tkrB|| }
|
j| ddd tj||
dd tt|| t||  d S )Nr$   2   )  r%   r5   r6   columnsr8   Zjolie)Zsubsetzinvalid frame shape: z (expected (z, 3))   z*scalar (max|min) over the entire DataFrameF)matchZcheck_stacklevelc                    s    | ddS )Nr   axisr   xZnpfuncr   r   <lambda>`       z%test_builtins_apply.<locals>.<lambda>T)inplacedrop)Zcheck_dtype)r   r   randomrandintrandnr'   __name__r+   lenZdrop_duplicatesshapeAssertionErrorgetattrr   r   FutureWarningr,   assert_produces_warningassert_frame_equalr*   r(   reset_index	set_indexr-   )r4   r3   dfgbfnamer0   ZngroupsZ
assert_msgwarnmsgr1   Z	expected2r   rA   r   test_builtins_applyC   s0    



rX   c                   @   s   e Zd Zejdd Zejdddgdd Zejddd	gd
d Z	ejdddgdd Z
ejdddgdd Zejdddgdd Zejdddgdd Zdd ZdS )TestNumericOnlyc                 C   s~   t dddgdddgdddgtdttddd	d
dgtdddtddddtjddddd	dddddddddg	d}|S )Nr$   r%   r;         @      @      @abccategory      	   Z20130101periods
US/Eastern)rc   tzz1 sr.   )rc   freq)	groupintfloatstringcategory_stringcategory_intdatetime
datetimetz	timedeltarg   rh   ri   rj   rk   rl   rm   rn   ro   r9   )r   listr   astyper
   pdZtimedelta_rangeselfrS   r   r   r   rS   n   s.    
zTestNumericOnly.dfmethodmeanmedianc                 C   s   t dddg}|d}tddgddgtd	td
gddgtdtdgtdddtdddgdt ddgddddddddgd}tjtdd t	||dd}W 5 Q R X t
||| |j}| |||| d S )Nrh   ri   rl   rg   g      @ra         @r\   z1.5sZ3s      ?r;   z2013-01-01 12:00:00z2013-01-03 00:00:00rd   re   )rl   ri   ro   rh   rm   rn   r$   r%   namerm   rn   ro   indexr:   zDropping invalidr<   Fnumeric_only)r   r'   r   rr   	Timedeltar	   r,   rO   rN   rM   rP   Zreindex_liker:   _check)rt   rS   ru   expected_columns_numericrT   r1   r0   expected_columnsr   r   r   test_averages   s8    


zTestNumericOnly.test_averagesr   r   c                 C   s.   t dddddddg}|}| |||| d S )Nrh   ri   rj   rl   rm   rn   ro   r   r   rt   rS   ru   r   r   r   r   r   test_extrema   s    zTestNumericOnly.test_extremafirstlastc              	   C   s0   t ddddddddg}|}| |||| d S )	Nrh   ri   rj   rk   rl   rm   rn   ro   r   r   r   r   r   test_first_last   s    zTestNumericOnly.test_first_lastr*   cumsumc                 C   sL   t dddg}t dddddg}|dkr8t ddddg}| |||| d S )Nrh   ri   rl   rj   ro   r   r   )rt   rS   ru   r   r   r   r   r   test_sum_cumsum   s    zTestNumericOnly.test_sum_cumsumprodcumprodc                 C   s&   t dddg}|}| |||| d S )Nrh   ri   rl   r   r   r   r   r   test_prod_cumprod   s    z!TestNumericOnly.test_prod_cumprodcummincummaxc                 C   s,   t ddddddg}|}| |||| d S )Nrh   ri   rl   rm   rn   ro   r   r   r   r   r   test_cummin_cummax   s
    z"TestNumericOnly.test_cummin_cummaxc              	   C   s   | d}d }|dkrt}n|dkr(t}tj|ddd t|| }W 5 Q R X t|j| d }t|t|jjk rzt}tj|dd t||dd}W 5 Q R X t|j| d S )	Nrg   )r   r   )r   r   zDropping invalid columnsF)r<   Zraise_on_extra_warningsr   r   )	r'   rN   r,   rO   rM   assert_index_equalr:   rJ   Z_obj_with_exclusions)rt   rS   ru   r   r   rT   rV   r0   r   r   r   r      s&    
  zTestNumericOnly._checkN)rI   
__module____qualname__pytestfixturerS   markparametrizer   r   r   r   r   r   r   r   r   r   r   rY   k   s   

'




rY   c                   @   sV   e Zd Zejdd Zejdd Zejdd Zdd Zd	d
 Z	dd Z
dd ZdS )TestGroupByNonCythonPathsc                 C   s2   t dddgdtjdgdtjdggddd	gd
}|S )Nr$   r%   foobarr;   ZbazABCr9   )r   r   r&   rs   r   r   r   rS     s
    zTestGroupByNonCythonPaths.dfc                 C   s   | d}|S )Nr   r'   )rt   rS   rT   r   r   r   rT   %  s    
zTestGroupByNonCythonPaths.gbc                 C   s   |j ddd}|S )Nr   Fas_indexr   )rt   rS   gnir   r   r   r   *  s    zTestGroupByNonCythonPaths.gnic              	   C   s\   t dgtjggdgddgd}d|j_d}tjt|d | }W 5 Q R X t	|| d S )	N        r   r$   r;   r:   r~   r   z<The default value of numeric_only in DataFrameGroupBy.idxmaxr   )
r   r   r&   r~   r|   r,   rO   rN   idxmaxrP   rt   rT   r1   rW   r0   r   r   r   test_idxmax0  s    z%TestGroupByNonCythonPaths.test_idxmaxc              	   C   s\   t dgtjggdgddgd}d|j_d}tjt|d | }W 5 Q R X t	|| d S )	Nr   r   r$   r;   r   r   z<The default value of numeric_only in DataFrameGroupBy.idxminr   )
r   r   r&   r~   r|   r,   rO   rN   idxminrP   r   r   r   r   test_idxmin;  s    z%TestGroupByNonCythonPaths.test_idxminc              	   C   s   t dgtjggdgddgd}d|j_tjtdd | }W 5 Q R X t	|| t dd	gdtjggddgddgd}tjtdd | }W 5 Q R X t	|| d S )
Nr   r   r$   r;   r   r   zThe 'mad' method is deprecatedr   r   )
r   r   r&   r~   r|   r,   rO   rN   madrP   )rt   rT   r   r1   r0   r   r   r   test_madF  s     $ z"TestGroupByNonCythonPaths.test_madc              
   C   s   t ddgdd}tdgdddd	d
dddggdgd ttdgd}tddtjdddddgdtjtjtjtjtjtjtjgg||d}| }t	|| t
||jdk    j||jdk    jg}t ddg|_| }t	|| d S )Nr$   r;   r   r{   r   countrv   stdr   25%50%75%r   r   r`   levelscodesr!   r"   r   r}   )r   r   rp   ranger   r   r&   describer,   rP   rr   concatr   Zunstackto_frameTr~   )rt   rS   rT   r   Zexpected_indexZexpected_colr1   r0   r   r   r   test_describeW  s,     z'TestGroupByNonCythonPaths.test_describeN)rI   r   r   r   r   rS   rT   r   r   r   r   r   r   r   r   r   r     s   


r   c                  C   s   t ddtjgdtjdgdddggdddgd	} t dtjgtjdgddggddgd	}| d }t|| | jdd
d }t|| | djdd}| jdd}t|| | djdd}| jdd}t|| d S )Nr$   r%   ra   r;      r   r   r   r9   Fr   r=   )r   r   r&   r'   r   r,   rP   r   )rS   r1   r0   r   r   r   test_cython_api2t  s    .&r   c                  C   s   t tjd} tj| jd d d< tjjddddt}tj|d d d< | 	|
 }| 	|tj}t|| t tjdd} | 	|tj
}| 	|
 }t|| d S )Nr8   r%   r   r7   size      )r   r   rF   rH   r&   valuesrG   rq   ri   r'   rw   r(   nanopsZ	nanmedianr,   rP   )rS   labelsr0   exprsZxpr   r   r   test_cython_median  s    r   c                 C   sj   t tjddd}tddd}t|d |}|j|| d }|j|| d	dd }t
|| d S )	Nr   ,     7   r   )observedc                 S   s   |   S N)rw   r?   r   r   r   rB     rC   z(test_median_empty_bins.<locals>.<lambda>)r   r   rF   rG   r   rr   Zcutr'   rw   r(   r,   rP   )r   rS   ZgrpsZbinsr0   r1   r   r   r   test_median_empty_bins  s    r   r   Zint8Zint16int32r   float32r   Zuint64zmethod,datar   rS   r$   abr%   r;   r   r   r   r   nth)rS   argsr   )rS   out_typec           	      C   s   t ddddddddddddg}|j| |d< d|krHg |d< d|krZ|d }n| }|d	 }t |}|j||d< |jd
dd |d
}t|||d  }t|| d S )Nr$   r   r%   r;   r   r   r   r   rS   r   T)rD   )r   r   rq   rR   r'   rM   r,   rP   )	r   ru   datarS   r   r   Zdf_outZgrpdtr   r   r   %test_groupby_non_arithmetic_agg_types  s     "

r   r   z2011-01-15 12:50:28.502376z2011-01-20 12:50:28.593448)l    m;-Ll    m;-Lc                 C   s   t d| d dd| d dg}d| d id| d id| d id| d i| d dgdddid}| D ]L\}}d|krg |d< |d	}t|||d  }|jd j|d ksjtqjd S )
Nr$   r   r   r1   )r1   r   r%   )r   r   r   r   r   r   r   r   )r   itemsr'   rM   ilocr   rL   )r   rS   Zgrp_expru   r   r/   resr   r   r   2test_groupby_non_arithmetic_agg_int_like_precision  s     



	
r   zfunc, valuesr   )c_intc_floatc_dater   r   TFz(ignore:.*Select only valid:FutureWarningc                 C   s8  t ddddgddddgddd	d
gddddgd}t|d |d< |d jd|d< |d |d jd  |d< |d jd|d< |d d|d< |d d|d< t|	d| |d}t |t
ddgddd }|r|jdgd!}n$|d |d< |d |d< |d |d< |d |d< |d |d< t|| d S )"Nr   r   r$   r%   r;   r   gGz@g=
ףp=@gRQ @g?Z2019Z2018Z2016Z2017)r|   r   r   r   r   z
US/PacificZ	c_date_tzr   Zc_timedeltaWZc_periodr   r   Z	c_Integerr   r   Z
c_Floatingr|   r   r{   r~   r9   )r   rr   to_datetimedtZtz_localizer   Z	to_periodrq   rM   r'   r   rE   r,   rP   )funcr   r   rS   r0   r1   r   r   r   $test_idxmin_idxmax_returns_int_types  s.    



r   c               
   C   s   t tjddddddgd} dd	d
dd	d
dd	d
dg
| d< | d}|jdd}| jd d dd f jdd}|jd}t	
|| |d tddd| d< | d}d}tjt|d |jdd W 5 Q R X d S )N
   r   r   r   r   Dr9   r$   r%   r;   r=   z
2016-01-01rb   Ez7reduction operation 'argmax' not allowed for this dtyper   )r   r   rF   rH   r'   r   r   r~   Zget_level_valuesr,   r-   Z	droplevelr
   r   raises	TypeError)rS   rT   r   ZaltZindexerZgb2rW   r   r   r   test_idxmin_idxmax_axis1  s    

r   c              
   C   s  |dkrt d |dkr$t d |dkrFd}| jt jj|d ttj	dd	d
dddgd}d|d< dddddddddd	g
}|
|}t||}t||}ddi}	|d k	r||	d< d}
d}|d k	r||
krd}t jt|d |||	 W 5 Q R X n||krdd}|dkr |s tnd }tj|dd* t jt|d |||	 W 5 Q R X W 5 Q R X n|d kst|s|dkrd}t jtdd | d!d |||	 W 5 Q R X nZ|||	}|r|jddjn|j}t||| j}|d"kr|s|t}t|| d S )#Nr   r   z5idxmax and idx_min tested in test_idxmin_idxmax_axis1)r   tshiftzmad and tshift are deprecated)corrwithskewzDGH#47723 groupby.corrwith and skew do not correctly implement axis=1reasonr   r   r   r   r   r   r9   r@   r   r$   r%   r;   r>   r   )r   r   difffillna
pct_changerankshift)r   r   r   r   r   r   r   r   r   r   r   1got an unexpected keyword argument 'numeric_only'r   z)got an unexpected keyword argument 'axis'r   zDropping of nuisance columns)r   r   )z"not supported between instances ofz2can't multiply sequence by non-int of type 'float'unsupported operand type(|)r   )r   skipnode
add_markerr   xfailr   r   rF   rH   r'   rM   r   r   r   rN   r,   rO   joinrE   r   rq   ri   Zassert_equal)r   groupby_funcr   rW   rS   groupsrT   ru   r   kwargsZno_argsZhas_axisrV   Zmsgsr0   Zdf_expectedr1   r   r   r   test_axis1_numeric_only/  sL    





 

r  c                  C   s   t dgd dd} | dd  }| jdddd d	d
 }d|_t|| t dgd dd} | dd  }| d t| d< | jdddd dd
 }d|_t|| d S )Nr   r   r%   )keyvaluer  r  FZ
group_keysc                 S   s   |   S r   r   r?   r   r   r   rB     rC   z&test_groupby_cumprod.<locals>.<lambda>d   c                 S   s   |   S r   r	  r?   r   r   r   rB     rC   )	r   r'   r   r+   r|   r,   r-   rq   ri   )rS   actualr1   r   r   r   test_groupby_cumprodz  s    r  c                  C   s`   t ddtjdgdddgd} | djddd}t dtjtjgddd	gd
}t|| d S )Nr$   r%   r#   r   r   cr   TF)r   skipnar\   r   r  )r   r   r&   r'   r   r,   rP   rS   r0   r1   r   r   r   1test_groupby_cumprod_nan_influences_other_columns  s    
r  c                  O   s   ddl m} || ddi|S )Nr   )semZddofr$   )Zscipy.statsr  )r   r  r  r   r   r   	scipy_sem  s    r  z	op,targoprv   rw   r   varr*   r   c                 C   s
   | j d S )Nr   r   r?   r   r   r   rB     rC   rB   c                 C   s
   | j d S )Nr  r?   r   r   r   rB     rC   r  )Zmarksc                 C   sZ   t tjd}tjjddddt}t|||  }||	|}t
|| d S )Nr8   r   r7   r   )r   r   rF   rH   rG   rq   ri   rM   r'   r(   r,   rP   )opZtargoprS   r   r0   r1   r   r   r   test_ops_general  s
    r  c                  C   sd   d} t jt| dgd}|d}|dg  }|d   }t|| |d  	 r`t
d S )Nz,Date,app,File
-04-23,2013-04-23 00:00:00,,log080001.log
-05-06,2013-05-06 00:00:00,,log.log
-05-07,2013-05-07 00:00:00,OE,xlsxr   )Zparse_datesDateZFile)rr   Zread_csvr   r'   r   r   r,   rP   ZisnaanyrL   )rawrS   rT   rer   r   r   test_max_nan_bug  s    
r  c                  C   s   t ddddddddd	d
g
} t td}| |}|d}t dddd
dd	gttdddddddggd}t|| t ddddddddddg
} | |}t ddddddgttddddd	ddggd}t|jddd| d S Nr$   r;   r   r_   r%   ra   r   r      r   Z
aaaaabbbbbZaaabbbr`   r   r   )Zkeep)r   rp   r'   nlargestr   from_arraysr,   r-   r   r   rT   r  r  r   r   r   test_nlargest  s     


r%  c            	      C   sF  t jd} tddd}|ddgg}tj|ddgd	}t| d
|d}|d	d}tj
|d |d df|d |d df|d |d df|d |d df|d |d df|d |d df|d |d df|d |d df|d |d df|d |d dfg
dddgd	}ddddddddddg
}t||d}tj||d d!d" d S )#Ni[Z20180101r   rb   ZoneZtwor   second)names   r   r$   r   r%   r;   r   r   r!  r_   r`   ra   g-r@g-`w?g@f|?gp?g=J-?g],l;?g]f$?gM8r g4Y?g
F;FgMbP?)check_exactZrtol)r   rF   ZRandomStater
   r   Zfrom_productr   rH   r'   r"  from_tuplesr,   r-   )	ZnprZdts	iterablesidxr.   r0   Zexp_idxZ
exp_valuesr1   r   r   r   test_nlargest_mi_grouper  sB    r-  c                  C   s   t ddddddddd	d
g
} t td}| |}|d}t dddddd	gttddddd	ddggd}t|| t ddddddddddg
} | |}t ddddddgttdddddddggd}t|jddd| d S r   )r   rp   r'   	nsmallestr   r#  r,   r-   r$  r   r   r   test_nsmallest
  s     


r/  zdata, groupsru   r"  r.  c                 C   s`   |dkrt t| } t| dd}t|||dd}t| t||jgdd}t	|| d S )Nr"  r   r{   r%   )nr~   r|   )
rp   reversedr   rM   r'   r   r#  r~   r,   r-   )r   r  ru   serr0   r1   r   r   r   test_nlargest_and_smallest_noop  s    	r4  r   r   r   c              	   C   s   t dddgdddgd}|d}d}tjt|d t|| ddd W 5 Q R X tjt|d t|| dd W 5 Q R X d S )	Nr$   r%   r;   r   r   r   z+numpy operations are not valid with groupbyr   )r   )r   r'   r   r   r   rM   )r   rS   grW   r   r   r   test_numpy_compat/  s    
r7  c              
   C   sj  | d }| d }t ddddddddgddddddddgd}ddddddddg}||}t d|i|}|d }t|| |jdd	d
jdd  }t|| ||j	ddgdf< |d |j	ddgdf< ||j	ddddgdf< |d |j	ddgdf< |d }tj||dd |jdd	d
jdd  }tj||dd t
j|j	ddddgdf< t dt
jdt
jdt
jdt
jdgi}|d }t|| |jdd	d
jdd  }t|| t dgtdgd}ttddgdd}|dd  }t|| t dddgdddgd}|dj }tdddgdd}t|| d S )Nr   r$   r%   r;   r   r5  r   r   Fr  c                 S   s   |   S r   r   r?   r   r   r   rB   J  rC   ztest_cummin.<locals>.<lambda>r!  r   r_   T)r)  c                 S   s   |   S r   r8  r?   r   r   r   rB   U  rC   c                 S   s   |   S r   r8  r?   r   r   r   rB   _  rC   2001r   r   r1  r   r{   )r   rq   r'   r   r,   rP   r   r+   r   locr   r&   rr   r   r   r-   r   )r    r   r   base_dfZexpected_minsrS   r1   r0   r   r   r   test_cummin=  sD    .
$r<  r   r   ZUInt64ri   booleanc              	   C   s   t ddddddddgtjgd d}|d ||d< |d}t dtjgd i|d}t||  }t|| t|d |   }t|| d S )Nr$   r%   r`   r5  r   r   r   )	r   r   r&   rq   r'   rM   r,   rP   r   )ru   r   r;  r/   r1   r0   r   r   r   test_cummin_max_all_nan_columnq  s    &
r?  c              
   C   s6  | d }| d }t ddddddddgddddddddgd}ddddddddg}||}t d|i|}|d }t|| |jdd	d
jdd  }t|| ||j	ddgdf< ||j	ddddgdf< |d }t|| |jdd	d
jdd  }t|| t
j|j	ddddgdf< t dt
jdt
jdt
jdt
jdgi}|d }t|| |jdd	d
jdd  }t|| t dgtdgd}ttddgdd}|dd  }t|| t dddgdddgd}|dj }tdddgdd}t|| d S )Nr   r%   r$   r;   r   r5  r   r   Fr  c                 S   s   |   S r   r   r?   r   r   r   rB     rC   ztest_cummax.<locals>.<lambda>r!  r_   c                 S   s   |   S r   r@  r?   r   r   r   rB     rC   c                 S   s   |   S r   r@  r?   r   r   r   rB     rC   r9  r   r   r1  r   r{   )r   rq   r'   r   r,   rP   r   r+   r   r:  r   r&   rr   r   r   r-   r   )r    r   r   r;  Zexpected_maxsrS   r1   r0   r   r   r   test_cummax  s@    .
$rA  c                  C   sZ   t dd tdD } td| | dd}|d}| }|dd	g }t|| d S )
Nc                 S   s   g | ]}t jj| qS r   )rr   NaTr  ).0r0  r   r   r   
<listcomp>  s     z:test_cummax_i8_at_implementation_bound.<locals>.<listcomp>r   r$   zM8[ns]r   r   r   r   r   r   )r   r   r   viewr'   r   r,   rP   )r3  rS   rT   r   r   r   r   r   &test_cummax_i8_at_implementation_bound  s    
rG  zgroups,expected_datac           	      C   sj   t dtdd dg|di}| }||d }t|| dd}t||dd}t|| t|| d S )Nr   r$   r%   r>  Fr  )r   r|   )r   r   copyr'   rM   r,   rP   r-   )	ru   r   r  Zexpected_datarS   origrT   r0   r1   r   r   r   test_cummin_max_skipna  s    rK  c                 C   st   t tjddgdddgd}|dddgddg }t|| dd}t tjtjtjgdddgd}t|| d S )Nr"   r   r$   r   r   FrH  )r   r   r&   r'   rM   r,   rP   )ru   rS   rT   r0   r1   r   r   r   $test_cummin_max_skipna_multiple_cols  s
     rL  z	dtype,val)r   l         c                 C   sT   |t jg}tddg|d|d}|d}|| }td|i|d}t|| d S )Nr$   )grpr   r>  rM  r   )rr   NAr   r'   Z	transformr,   rP   )ru   r   valr   rS   r/   r0   r1   r   r   r   #test_nullable_int_not_cast_as_float  s    


rP  zin_vals, out_valsr   ig @   c                 C   s   ddddddddd	d
dgdddddddddddg| d}t |}|djj}ttddd}t||dd}t|| |dgj	dd }t|| d S )N1234567891011r   r   r  drE  r   abcdr{   r   r~   r   r|   c                 S   s   | j S r   )is_monotonic_increasingr?   r   r   r   rB     rC   z.test_is_monotonic_increasing.<locals>.<lambda>)
r   r'   r   r`  r   rp   r   r,   r-   r+   Zin_valsZout_valsZsource_dictrS   r0   r~   r1   r   r   r   test_is_monotonic_increasing  s    rb  r   ra   r_   c                 C   s|   ddddddddd	d
dgdddddddddddg| d}t |}|djj}ttddd}t||dd}t|| d S )NrR  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r   r   r  r]  rE  r   r^  r{   r   r_  )	r   r'   r   Zis_monotonic_decreasingr   rp   r   r,   r-   ra  r   r   r   test_is_monotonic_decreasing  s    rd  c                 C   s   | j dd}|  d S )Nr   )level)r'   r   )Zmframer/   r   r   r   test_apply_describe_bug<  s    rf  c                  C   sr   t  } | dd dd g}| }t j|d | dd t j|d | dd t j|d | dd d S )	Nc                 S   s   | j S r   yearr?   r   r   r   rB   C  rC   z/test_series_describe_multikey.<locals>.<lambda>c                 S   s   | j S r   monthr?   r   r   r   rB   C  rC   rv   F)Zcheck_namesr   r   )r,   makeTimeSeriesr'   r   r-   rv   r   r   )tsr/   r0   r   r   r   test_series_describe_multikeyA  s    rm  c                  C   s@   t  } | dd }|dd }|  }t || d S )Nc                 S   s   | j S r   ri  r?   r   r   r   rB   L  rC   z-test_series_describe_single.<locals>.<lambda>c                 S   s   |   S r   )r   r?   r   r   r   rB   M  rC   )r,   rk  r'   r+   r   stackr-   )rl  r/   r0   r1   r   r   r   test_series_describe_singleJ  s
    ro  c                 C   s@   | j d d dgf | d }|dd }|jjdks<td S )Nr   r   c                 S   s   |   S r   )rv   r?   r   r   r   rB   T  rC   z(test_series_index_name.<locals>.<lambda>)r:  r'   r(   r~   r|   rL   )rS   r/   r0   r   r   r   test_series_index_nameR  s    rp  c           	      C   s  |  dd dd g}| }g }| D ]Z}||  }t|g|jgdgt|j tt|jgd}t|j||jd}|	| q&t
j|dd}t|| | j ddddd	dd}| }|  j}tddg|jgddddgtt|jgd|_t|| d S )
Nc                 S   s   | j S r   rg  r?   r   r   r   rB   Y  rC   z.test_frame_describe_multikey.<locals>.<lambda>c                 S   s   | j S r   ri  r?   r   r   r   rB   Y  rC   r   r   r   r$   r=   )r   r   r   r   )r'   r   r   r:   rJ   r   r   r   r~   appendrr   r   r,   rP   r   )	Ztsframer/   r0   Zdesc_groupscolrg   Z	group_colr1   ZgroupedTr   r   r   test_frame_describe_multikeyX  s*    

rs  c               	   C   s   t dddddgd dddd	d
gd dddddgd d} dddgd | d< | jddid}d}tjt|d | d  W 5 Q R X tjt|d |d  W 5 Q R X d S )Nr$   r%   r;   r   r   r   r(     (   r7   r
     i,  i  r   )r@   yz)r   r   r$   )r   r$   r   )r$   r   r   kr  r9   z*Names should be list-like for a MultiIndexr   )r   renamer   r   
ValueErrorr'   r   )Zdf1Zdf2rW   r   r   r   test_frame_describe_tupleindexs  s    r|  c                  C   s   t dd ddt dd ddt dd ddi} t dd ddt dd ddt dd dd	i}t| |d
}|dj }||jdk j j ||jdk j j g}t|tddgddddddddddgd}t	
|| d S )Nz2011-01-06 10:59:05rz   ia  z2011-01-06 12:43:33ic  z2011-01-06 12:54:09i /hYl    rT i )PRICEVOLUMEr}  r{   r   rv   r   r   r   r   r   r   r}   )r	   r   r'   r~  r   r}  r   tolistr   r,   rP   )ZpricesZvolumesrS   r0   r   r1   r   r   r   $test_frame_describe_unstacked_format  s2    
 
 
 
 
 
 r  zZignore:indexing past lexsort depth may impact performance:pandas.errors.PerformanceWarningr   c                 C   s   t ddddddgddddddgd	d
ddddgddddgdd}t ddddddddddddd d!d"d#ddddd d!d"d#gd$dgj}d d g|j_tddgdd%|_| r|jdgd$d&}n|j	d'd(}|j
d| d) }t|| d S )*Nc   X   r$   r%   r;   r   r   r!  r   r(  rt  ru  r7   <   r  r   r   F)r:   rI  )r   r   r#   r#   )r   rv         V@     X@)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   rv   r[   r"   )r   r   r!   r!   )r   r   rZ   r!   )r   r   rx   ry   )r   r   r[   r"   )r   r   g      @g      @)r   r   r\   r#   r   r{   )r:   re  TrE   r   )r   Zfrom_recordsrR   r   r:   r'  r   r~   rE   rQ   r'   r   r,   rP   )r   rS   r1   r0   r   r   r   0test_describe_with_duplicate_output_column_names  sZ     r  c                  C   sD   t dddddgdddddgd} | dd	  d d
ks@td S )Nr   ij  i  io  i`  l    @~ )userconnectionsr  r  l    ,fL )r   r'   rv   rL   )rS   r   r   r   test_groupby_mean_no_overflow  s    r  r   functionc                 C   s   |dkrdnd}t j|gd td}tdddgdd	d
}td|i|dd}t| d	dd}t|| }t	|| |
|}t	|| |
|g}td|fg|_t	|| d S )Nr  g      ?ry   r;   r>  r$   r%   r   r   r|   r   r   r   r   )r   arrayri   r   r   rq   r'   rM   r,   rP   r(   r   r*  r:   )r   r  outputZarrr,  r1   r  r0   r   r   r   ,test_apply_to_nullable_integer_returns_float  s    
r  c                  C   s   t dddgdddgdddgddd} | d}tdddgddd}|d	 jdd
}ttjgd d|d	d}t|| |jdd
}t tjgd tjgd dd|d}t	|| d S )Nr   r$   r%   r  r   r>  r   r  r   Z	min_countr;   )r   r~   r|   r  )r   r~   )
r   r'   r   r*   r   rr   rN  r,   r-   rP   )rS   r/   r,  r0   r1   r   r   r   0test_groupby_sum_below_mincount_nullable_integer	  s    &
$r  c                  C   sf   t ttdddgd d} | dd  }ttddgdtddgdd	d
}t	|| d S )Nr   r   r   r   )timecatr  r  r   r{   )r|   r~   )
r   rr   Zto_timedeltar   r'   rv   r   r   r,   r-   r  r   r   r   test_mean_on_timedelta  s       r  c                  C   s   t ddddgtdtdtdtjgd} tjdd}| d	}| }t d
||gitddgd	dd}t|| |d
  }t	||d
  |d
 jdd}t
|tjgdd
|jd}t	|| d S )Nr$   r%   Z1dZ2dZ3dr   r;   )daysr   r   r{   r   r  zm8[ns])r   r|   r~   )r   rr   r   rB  r'   r*   r   r,   rP   r-   r   r~   )rS   Ztd3rT   r   r1   r   r   r   #test_groupby_sum_timedelta_with_nat"  s    

 r  z5kernel, numeric_only_default, drops_nuisance, has_arg)allFFF)r  FFF)bfillFFF)corrTFT)r   TFT)covTFT)r   FTT)r   FTT)r   TTT)r   TTT)r   FFF)ffillFFF)r   FFF)r   FFT)r   TFT)r   TFT)r   FFT)r   FTT)rv   TTT)rw   TTT)r   FTT)r   FFF)nuniqueFFF)r   FFF)r   TTT)quantileTFT)r  TTT)r   TFT)r   TTT)r*   TTT)r  TFTa1a2c              	   C   s  t ddgddgddgdtg d}t| |}|tjkr<i nd|i}||}	t|	| }
|r|dksv|tjkrr|sv|r|dks|s|sd }nt}|tjkr|rd|  }n
d	|  }tj	||d
 |
||}W 5 Q R X d|j
kstn| dks
| dkr&|tjkr&|
||}d|j
kstn|r|dk	s:t|tjk	sT|dksTt|r^td}tjt|d
 |
|| W 5 Q R X nz|s|tjk	rtjtdd
 |
|| W 5 Q R X nB| dkst|tjksttjtdd
 |
|| W 5 Q R X d S )Nr$   r%   r   r!  )r  r  a3r   r   Tz6The default value of numeric_only in DataFrameGroupBy.z-Dropping invalid columns in DataFrameGroupBy.r   r   )r   r   )r  r  r  r  r   r   r  Fz(not allowed for this dtype|must be a string or a number|cannot be performed against 'object' dtypes|must be a string or a real number|unsupported operand type)r   )r   r   r   )r   objectr   r   
no_defaultr'   rM   rN   r,   rO   r:   rL   r   r   r   )kernelZnumeric_only_defaultZdrops_nuisancehas_argr   r4   rS   r   r  rT   ru   rV   rW   r0   r   r   r   test_deprecate_numeric_only:  sb    ,$



	

 r  c              
   C   s,  |dkrt d n"|dkr6d}|jt jj|d dddg}tdddg| d}||}t||}tdddg}||}	t|	|}
t	||}d	}d
}||kr| t
kr|dkrd}n|dkrd}nd}t jt|d ||  W 5 Q R X n:| t
kr(|| }|
| }||kr|t
}t|| d}||krdd}t jt|d ||ddi W 5 Q R X n| t
kr t}| d}|drd }d}t}| d}n|dkrt}d}nt}d}tj||d. t j||d ||ddi W 5 Q R X W 5 Q R X n(||ddi}||ddi}t|| d S )N)Zbackfillr   padr   zmethod is deprecatedr   z,corrwith is not implemented on SeriesGroupByr   r   r$   r>  )	r  r  r   r   r   r   r   r   r  )	r   r   r   r  r  r   r*   r   r   r   znot allowed for this dtyper  z+cannot be performed against 'object' dtypesz!is not supported for object dtyper   )r   r   r   rv   rw   r   r   r  r  r   r   r*   r  r   r   r   r   r   r   Tz  does not implement numeric_onlyZcum z" is not supported for object dtyper   z$will raise a TypeError in the futurezThis will raise a TypeErrorF)r   r   r   r   r   r   r   r'   rM   r   r  r   r   rq   r,   r-   NotImplementedError
startswithrN   rO   )r   r  r   rW   Zgrouperr3  rT   ru   Zexpected_serZexpected_gbZexpected_methodr   Zfails_on_numeric_objectZ
obj_resultr0   r1   Zhas_numeric_onlyZerr_categoryerr_msgZwarn_categoryZwarn_msgr   r   r   "test_deprecate_numeric_only_series  sj    












$r  r  g?g?g333333?r  )Zpercentilesincludeexcluderh   c                 C   s   t dddggdddg| d}|d t|d< |d t|d< |jd d djf |}|djf |jd	d
jd d }t	|| |jd d dj
jf |}|dj
jf |jd	d
jd d }tg |_t	|| d S )Nr$   r%   r;   r   r   r   )r:   r   r   Tr  )r   rq   rh   ri   r   r'   r   rQ   r,   rP   r   r   r~   )r   r  rS   r0   r1   r   r   r   test_groupby_empty_dataset  s    $&
r  c                  C   sj   t dddgdddgd} | dj| dd}td	d
ddddgdd}ttjgd |d}t|| d S )Nr$   r%   r;   r_   r   r   r   r=   )r$   r   )r$   r$   )r$   r%   )r%   r%   )r%   r   )r%   r$   )r   N)r   r|   r!  r   )	r   r'   r   r   r   r   r&   r,   r-   )rS   r0   r~   r1   r   r   r   test_corrwith_with_1_axis-  s    r  z%ignore:.* is deprecated:FutureWarningc                 C   sd   t g g g ddddg}|jdddgdd}t|| }t| |}|| j}|j}t|| d S )Nr  r   r   r  Fr  )r   rR   r'   rM   r   r~   r,   r   )r  rS   rT   ru   r   r0   r1   r   r   r   ,test_multiindex_group_all_columns_when_empty9  s    


r  )lr)   ior   Znumpyr   r   Zpandas._libsr   Zpandas.errorsr   Zpandasrr   r   r   r   r   r	   r
   Zpandas._testingZ_testingr,   Zpandas.core.nanopscorer   Zpandas.tests.groupbyr   Zpandas.utilr   tdr   r   r   r   r   r    r2   r   r   r   r   r*   rX   rY   r   r   r   r   r   r   filterwarningsr   r   r  r  r  r  rv   rw   r   r  r   r   r   Zskip_if_no_scipyr  r  r%  r-  r/  r4  r7  r<  r?  rA  rG  rK  rL  Zskip_if_32bitr   rP  infr&   rb  rd  rf  rm  ro  rp  rs  r|  r  r  r  rN  r  r  r  r  r  r  boolrh   ri   r  r  r  r  r  r   r   r   r   <module>   s   
& /[ 


 
J


	-"
42
 $$
$

$,
$

	9 

$E
n
