U
    >vfC                  "   @   sn  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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/d0d1d2d0gifd3d.d/d1d0d1d4d0gifd5d.d/d/d0d1d2d0gifd6d.d/d1d0d1d4d0gifd7d/d1d0d1d1d0gd(d8fgd9d: Z.ej#$d;ed<ed=fd>gd?d@ Z/ej#$dAdBd d1gd/d2gd/d1gdCfdDd/d2gd d1gd d2gdCfgej#$dEdFdGgdHdI Z0dJdK Z1ej#$dEdFdGdgdLdM Z2dNdO Z3dPdQ Z4dRdS Z5dTdU Z6ej#$dVdWej7fdXej8fdYej9fdZej:fd[ej'fd\ej;fd5ej&fd6ej%fd-d]d^ fd3d_d^ fd7ej<fej=d`e6ej>dagdbdc Z?ddde Z@dfdg ZAdhdi ZBdjdk ZCej#$dld d/d1d2gd d d/d/gfd gd gfgej#$d$dejD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/d1d2gd/dd1gfd/d2d2g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/d1dd2d1d d4ddd/d/gdFdGdGdFgfd/dejPd2d1ejPejP ddd/ejP gdFdGdFdGgfd/d1ejQd2d1ejQejQdejP d/ejQgdGdGdGdGgfgdd ZRej#$ddddd2d4ddd1d d/d/gdFdGdGdFgfejPd/ejP ejPd1dejP ddejP ejP gdFdFdGdFgfd/d1ejQd2d1ejQejQdejP d/ejQgdGdGdGdGgfgdd ZSdd ZTdd ZUdd ZVej#$ddddggdd ZWdd ZXdd ZYdd ZZdd Z[ej#\dej#$ddFdGgej#$ddgddggdd Z]dd Z^dd Z_ej#$dd/d/d/d1d1d1d2d2d2g	d/ej`d1d/ej`d1d/ej`d1g	d0d/d/d1d1d2d2gd/d1d/d1d/d1gd0gej#$ddWdXdZgdd Zadd Zbdd Zcdd Zdej#$ddddddddddddddddddddddddddddddddgej#$dEdFdGejegej#$ddgddggdd Zfej#$d$egeheiejgdd Zkej#$d$eheiejgej#$ddddgddddddgddgddddgdgddgdd Zldd Zmdd Zndd ZodS )    N)StringIO)lib)UnsupportedFunctionCall)	DataFrameIndex
MultiIndexSeries	Timestamp
date_range)nanops)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-vdrwu74i/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    r3   fkeysjimjoec           	   	      s6  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| fdd|}t|| td  |fdd}W 5 Q R X t|| |tkr|  }|j| ddd tj||dd tt| ddt| dd d S )Nr%   2   )  r&   r6   r7   columnsr9   Zjolie)Zsubsetzinvalid frame shape: z (expected (z, 3))   c                    s   t t | ddS )Nr   axis)getattrr   x)fnamer   r    <lambda>S       z%test_builtins_apply.<locals>.<lambda>c                    s    | S Nr   r@   )npfuncr   r    rC   X   rD   TF)inplacedrop)Zcheck_dtyper   r=   )r   r   randomrandintrandnr(   __name__r,   lenZdrop_duplicatesshapeAssertionErrorr-   assert_frame_equalassert_produces_warningr+   r)   reset_index	set_indexr.   r?   )	r5   r4   dfgbr1   ZngroupsZ
assert_msgr2   Z	expected2r   )rB   rF   r    test_builtins_applyC   s&    



rV   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)ra   tzz1 sr/   )ra   freq)	groupintfloatstringcategory_stringcategory_intdatetime
datetimetz	timedeltare   rf   rg   rh   ri   rj   rk   rl   rm   r:   )r   listr   astyper
   pdZtimedelta_rangeselfrT   r   r   r    rT   f   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gd}t||dd}t|	|| |j
}| |||| d S )Nrf   rg   rj   re   g      @r_         @rZ   z1.5sZ3s      ?r<   z2013-01-01 12:00:00z2013-01-03 00:00:00rb   rc   )rj   rg   rm   rf   rk   rl   r%   r&   nameindexr;   Tnumeric_only)r   r(   r   rp   	Timedeltar	   r?   r-   rP   Zreindex_liker;   _check)rr   rT   rs   expected_columns_numericrU   r2   r1   expected_columnsr   r   r    test_averages   s0    


zTestNumericOnly.test_averagesr   r   c                 C   s.   t dddddddg}|}| |||| d S )Nrf   rg   rh   rj   rk   rl   rm   r   r   rr   rT   rs   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 )	Nrf   rg   rh   ri   rj   rk   rl   rm   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 )Nrf   rg   rj   rh   rm   r   r   )rr   rT   rs   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 )Nrf   rg   rj   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 )Nrf   rg   rj   rk   rl   rm   r   r   r   r   r    test_cummin_cummax   s
    z"TestNumericOnly.test_cummin_cummaxc           	   
   C   s4  | d}|drtnt}|dkrddddd| dg}tj||d	 t||  W 5 Q R X nZ|d
krddddg}tj||d	 t||  W 5 Q R X nt|| }t	|j
| |dkrddddddd| dg}tj||d	 t||dd W 5 Q R X nt||dd}t	|j
| d S )Nre   cum)r   r   r   r   r   r   |zCategorical is not ordered*function is not implemented for this dtypezCannot perform z with non-ordered Categoricalmatch)r+   rt   ru   r   z-category type does not support sum operationsz[Cc]ould not convertz0can't multiply sequence by non-int of type 'str'r   r   zcategory type does not supportzcan't multiply sequenceFr}   )r(   
startswithNotImplementedError	TypeErrorjoinpytestraisesr?   r-   assert_index_equalr;   )	rr   rT   rs   r   r   rU   	exceptionmsgr1   r   r   r    r      sH    




zTestNumericOnly._checkN)rL   
__module____qualname__r   fixturerT   markparametrizer   r   r   r   r   r   r   r   r   r   r    rW   c   s   

#




rW   c                   @   s>   e Zd Zejdd Zejdd Zej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Cr:   r   r   r'   rq   r   r   r    rT   #  s
    zTestGroupByNonCythonPaths.dfc                 C   s   | d}|S )Nr   r(   )rr   rT   rU   r   r   r    rU   +  s    
zTestGroupByNonCythonPaths.gbc                 C   s   |j ddd}|S )Nr   Fas_indexr   )rr   rT   gnir   r   r    r   0  s    zTestGroupByNonCythonPaths.gnic              
   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	|| d S )Nr%   r<   r   ry   r   countrt   stdr   25%50%75%r   r   r^   levelscodesr"   r#           r{   )r   r   rn   ranger   r   r'   describer-   rP   rR   )rr   rT   rU   r   Zexpected_indexZexpected_colr2   r1   r   r   r    test_describe5  s"     z'TestGroupByNonCythonPaths.test_describeN)	rL   r   r   r   r   rT   rU   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&   r_   r<      r   r   r   r:   Fr   r=   )r   r   r'   r(   r   r-   rP   r   )rT   r2   r1   r   r   r    test_cython_api2L  s    .&r   c                  C   s   t jd} t j| d d d< t| }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 )Nr9   r&   r   r8   size      )r   rI   rK   r'   r   rJ   ro   rg   r(   ru   r)   r   Z	nanmedianr-   rP   )arrrT   labelsr1   exprsZxpr   r   r    test_cython_medianb  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 rE   )ru   r@   r   r   r    rC   {  rD   z(test_median_empty_bins.<locals>.<lambda>)r   r   rI   rJ   r   rp   Zcutr(   ru   r)   r-   rP   )r   rT   ZgrpsZbinsr1   r2   r   r   r    test_median_empty_binst  s    r   r   Zint8Zint16int32r   float32r   Zuint64zmethod,datar   rT   r%   abr&   r<   r   r   r   r   r   )rT   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   argsr   rT   r   T)rG   )r   r   ro   rS   r(   r?   r-   rP   )	r   rs   datarT   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   r2   )r2   r   r&   )r   r   r   r   nthr   r   r   )r   itemsr(   r?   ilocr   rO   )r   rT   Zgrp_exprs   r   r0   resr   r   r    2test_groupby_non_arithmetic_agg_int_like_precision  s     



	
r   zfunc, valuesidxmin)c_intc_floatc_dateidxmaxr~   TFc                 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)rz   r   r   r   r   z
US/PacificZ	c_date_tzr   Zc_timedeltaWZc_periodr   r   Z	c_Integerr   r   Z
c_Floatingrz   r}   ry   r|   r:   )r   rp   to_datetimedtZtz_localizer   Z	to_periodro   r?   r(   r   rH   r-   rP   )funcvaluesr~   rT   r1   r2   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   Dr:   r%   r&   r<   r=   z
2016-01-01r`   Ez7reduction operation 'argmax' not allowed for this dtyper   )r   r   rI   rK   r(   r   r   r|   Zget_level_valuesr-   r.   Z	droplevelr
   r   r   r   )rT   rU   r   ZaltZindexerZgb2r   r   r   r    test_idxmin_idxmax_axis1  s    

r   c              
   C   s  |dkrt d |dkr4d}| 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rd}t jt|d |||	 W 5 Q R X n|d ks.|sp|dkrpd}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)corrwithskewzDGH#47723 groupby.corrwith and skew do not correctly implement axis=1reasonr   r   r   r   r   r   r:   rA   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   r   )"not supported between instances ofz2can't multiply sequence by non-int of type 'float'unsupported operand type(r   )r   )r   skipnode
add_markerr   xfailr   r   rI   rK   r(   r?   r   r   r   r   rH   Tro   rg   r-   assert_equal)r   groupby_funcr~   r   rT   groupsrU   rs   r   kwargsZno_argsZhas_axisZmsgsr1   Zdf_expectedr2   r   r   r    test_axis1_numeric_only  sD    






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 t| d< | d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 rE   r   r@   r   r   r    rC   Q  rD   z&test_groupby_cumprod.<locals>.<lambda>d   c                 S   s   |   S rE   r	  r@   r   r   r    rC   X  rD   )	r   r(   r   r,   rz   r-   r.   ro   rg   )rT   actualr2   r   r   r    test_groupby_cumprodL  s    r  c                  C   sx   t dgd dd} | dd  }tdddd	gdd
}t|| | jdddd dd }d|_t|| d S )Nr   r   i r  r  r  l    d(	 l     I5 l      Fx:^ ry   Fr  c                 S   s   |   S rE   r	  r@   r   r   r    rC   h  rD   z/test_groupby_cumprod_overflow.<locals>.<lambda>)r   r(   r   r   r-   r.   r,   rz   )rT   r  r2   Znumpy_resultr   r   r    test_groupby_cumprod_overflow]  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~   skipnarZ   r   r  )r   r   r'   r(   r   r-   rP   rT   r1   r2   r   r   r    1test_groupby_cumprod_nan_influences_other_columnsn  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,targoprt   ru   r   varr+   r   c                 C   s
   | j d S )Nr   r   r@   r   r   r    rC     rD   rC   c                 C   s
   | j d S )Nr  r@   r   r   r    rC     rD   r  )Zmarksc                 C   sZ   t tjd}tjjddddt}t|||  }||	|}t
|| d S )Nr9   r   r8   r   )r   r   rI   rK   rJ   ro   rg   r?   r(   r)   r-   rP   )opZtargoprT   r   r1   r2   r   r   r    test_ops_general  s
    r  c               	   C   s~   d} t jtdd tjt| dgd}W 5 Q R X |d}|dg  }|d   }t 	|| |d 
  rzt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,xlsxzCould not infer formatr   r   )Zparse_datesDateZFile)r-   rQ   UserWarningrp   Zread_csvr   r(   r   to_framerP   ZisnaanyrO   )rawrT   rU   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&   r_   r   r      r   Z
aaaaabbbbbZaaabbbr^   r   r   )Zkeep)r   rn   r(   nlargestr   from_arraysr-   r.   r   r   rU   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   r`   onetwor   second)names   r   r%   r   r&   r<   r   r   r$  r]   r^   r_   g-r@g-`w?g@f|?gp?g=J-?g],l;?g]f$?gM8r g4Y?g
F;FgMbP?)check_exactZrtol)r   rI   ZRandomStater
   r   Zfrom_productr   rK   r(   r%  from_tuplesr-   r.   )	ZnprZdts	iterablesidxr/   r1   Zexp_idxZ
exp_valuesr2   r   r   r    test_nlargest_mi_grouper  sB    r2  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   rn   r(   	nsmallestr   r&  r-   r.   r'  r   r   r    test_nsmallest  s     


r4  zdata, groupsrs   r%  r3  c                 C   s   |d k	rt j| |d} |dkr*tt| } t| dd}t|||dd}t|trft j|t jdn|}t| t	
||jgdd}t|| d S )Nr   r%  r   ry   r&   )nr|   rz   )r   arrayrn   reversedr   r?   r(   
isinstanceint_r   r&  r|   r-   r.   )r   r  r   rs   serr1   Zexpidxr2   r   r   r    test_nlargest_and_smallest_noop   s    
r=  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   r?   )r   rT   gr   r   r   r    test_numpy_compat  s    
r@  c              
   C   sx  | 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 |ddi}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   r>  r   r   Fr  c                 S   s   |   S rE   r   r@   r   r   r    rC   0  rD   ztest_cummin.<locals>.<lambda>r$  r   r]   T)r.  c                 S   s   |   S rE   rA  r@   r   r   r    rC   ;  rD   rg   c                 S   s   |   S rE   rA  r@   r   r   r    rC   G  rD   2001r   r   r7  r   ry   )r   ro   r(   r   r-   rP   r   r,   r  locr   r'   rp   r   r   r.   r   )r!   r   r   base_dfZexpected_minsrT   r2   r1   r   r   r    test_cummin#  sF    .
$rE  r   r   ZUInt64rg   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^   r>  r   r   r5  )	r   r   r'   ro   r(   r?   r-   rP   r  )rs   r   rD  r0   r2   r1   r   r   r    test_cummin_max_all_nan_columnY  s    &
rG  c              
   C   sD  | 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|| |ddi}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   r>  r   r   Fr  c                 S   s   |   S rE   r   r@   r   r   r    rC   u  rD   ztest_cummax.<locals>.<lambda>r$  r]   c                 S   s   |   S rE   rH  r@   r   r   r    rC   ~  rD   rg   c                 S   s   |   S rE   rH  r@   r   r   r    rC     rD   rB  r   r   r7  r   ry   )r   ro   r(   r   r-   rP   r   r,   r  rC  r   r'   rp   r   r   r.   r   )r!   r   r   rD  Zexpected_maxsrT   r2   r1   r   r   r    test_cummaxh  sB    .
$rI  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   )rp   NaT_value).0r6  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   )r<  rT   rU   r   r   r   r   r    &test_cummax_i8_at_implementation_bound  s    
rP  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&   r5  Fr  )r   rz   )r   r   copyr(   r?   r-   rP   r.   )	rs   r   r  Zexpected_datarT   origrU   r1   r2   r   r   r    test_cummin_max_skipna  s    rT  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   FrQ  )r   r   r'   r(   r?   r-   rP   )rs   rT   rU   r1   r2   r   r   r    $test_cummin_max_skipna_multiple_cols  s
     rU  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   r5  rV  r   )rp   NAr   r(   Z	transformr-   rP   )rs   r   valr   rT   r0   r1   r2   r   r   r    #test_nullable_int_not_cast_as_float  s    


rY  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  drN  r   abcdry   r   r|   r   rz   c                 S   s   | j S rE   )is_monotonic_increasingr@   r   r   r    rC     rD   z.test_is_monotonic_increasing.<locals>.<lambda>)
r   r(   r   ri  r   rn   r   r-   r.   r,   Zin_valsZout_valsZsource_dictrT   r1   r|   r2   r   r   r    test_is_monotonic_increasing  s    rk  r   r_   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 )Nr[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  r   r   r  rf  rN  r   rg  ry   r   rh  )	r   r(   r   Zis_monotonic_decreasingr   rn   r   r-   r.   rj  r   r   r    test_is_monotonic_decreasing  s    rm  c                 C   s   | j dd}|  d S )Nr   )level)r(   r   )Zmframer0   r   r   r    test_apply_describe_bug&  s    ro  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 rE   yearr@   r   r   r    rC   -  rD   z/test_series_describe_multikey.<locals>.<lambda>c                 S   s   | j S rE   monthr@   r   r   r    rC   -  rD   rt   F)Zcheck_namesr   r   )r-   makeTimeSeriesr(   r   r.   rt   r   r   )tsr0   r1   r   r   r    test_series_describe_multikey+  s    rv  c                  C   s@   t  } | dd }|dd }|  }t || d S )Nc                 S   s   | j S rE   rr  r@   r   r   r    rC   6  rD   z-test_series_describe_single.<locals>.<lambda>c                 S   s   |   S rE   )r   r@   r   r   r    rC   7  rD   )r-   rt  r(   r,   r   stackr.   )ru  r0   r1   r2   r   r   r    test_series_describe_single4  s
    rx  key1key2c                 C   s   t dddddgdddddgdddddgd}|j|| d	d
 }| }t dddgdddgdddgtjtjdgdddgdddgdddgdddgdddgd	}t|dkr|dd|d  | r||}t	|| d S )Nr)  r*  Zthreer%   r&   r   r$  )ry  rz  foo2r   r{  r"   r$   rX   r#   rY   rZ   )	ry  r   rt   r   r   r   r   r   r   rz  ry  )
r   r(   r   r   r'   rM   insertrS   r-   rP   )r   r5   rT   rU   r1   r2   r   r   r    test_series_describe_as_index<  s2    
r}  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 rE   )rt   r@   r   r   r    rC   ^  rD   z(test_series_index_name.<locals>.<lambda>)rC  r(   r)   r|   rz   rO   )rT   r0   r1   r   r   r    test_series_index_name\  s    r~  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 rE   rp  r@   r   r   r    rC   c  rD   z.test_frame_describe_multikey.<locals>.<lambda>c                 S   s   | j S rE   rr  r@   r   r   r    rC   c  rD   r   r   )r;   r|   r%   r=   )r   r   r   r   )r(   r   r   r;   rM   r   r   r   r|   appendrp   concatr-   rP   r   )	Ztsframer0   r1   Zdesc_groupscolre   Z	group_colr2   ZgroupedTr   r   r    test_frame_describe_multikeyb  s*    

r  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-     (   r8   r
     i,  i  r   )rA   yz)r   r   r%   )r   r%   r   )r%   r   r   kr  r:   z*Names should be list-like for a MultiIndexr   )r   renamer   r   
ValueErrorr(   r   )Zdf1Zdf2r   r   r   r    test_frame_describe_tupleindex}  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:05rx   ia  z2011-01-06 12:43:33ic  z2011-01-06 12:54:09i /hYl    rT i )PRICEVOLUMEr  ry   r   rt   r   r   r   r   r   r   r{   )r	   r   r(   r  r   r  r   tolistr   r-   rP   )ZpricesZvolumesrT   r1   r   r2   r   r   r    $test_frame_describe_unstacked_format  s2    
 
 
 
 
 
 r  zZignore:indexing past lexsort depth may impact performance:pandas.errors.PerformanceWarningr   a1a2c                 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ddgdddddgdd}|dgkrf|jdd}t 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krtddgddggddgddggddgd|_	nt
ddgdd |_	| s| }|j|| d! }t|| d S )"Nc   X   r%   r&   r<   r   r   r$  r   r-  r  r  r8   <   )r  r  r   r  r  r  r   F)r;   rR  r:   )r   r   r$   r$   )r   rt   rY   r#   )r   r   r"   r"   )r   r   rX   r"   )r   r   rv   rw   )r   r   rY   r#   )r   r   g      @g      @)r   r   rZ   r$   r   )r   r   r,  ry   r   )r   rH   Zfrom_recordsrS   r   r;   r,  rM   r   r|   r   rR   r(   r   r-   rP   )r   r5   rT   r2   r1   r   r   r    0test_describe_with_duplicate_output_column_names  sZ    	


  
r  c                     s   t ddddgg} ddddg| _| | d }|jg d}dddd	d
dg  fdddD }tj|dd}tddg gddg ddg  ddg  dttd gd|_dg|j	_
t|| d S )Nr   r%   r&   r<   )percentilesr   rt   r   r   r   r   c              	      s,   g | ]$}t d |tj|||ggdg dqS )r"   r%   r{   r   )rL  rX  r:   r   r    rM    s   z3test_describe_duplicate_columns.<locals>.<listcomp>)r   r#   r$   r=   r$  r   )r   r;   r(   r   rp   r  r   rn   r   r|   r,  r-   rP   )rT   rU   r1   framesr2   r   r:   r    test_describe_duplicate_columns  s    

,
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(   rt   rO   )rT   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      ?rw   r<   r5  r%   r&   r   r   rz   r   r   r   r   )r   r8  rg   r   r   ro   r(   r?   r-   rP   r)   r   r/  r;   )r   r  outputr   r1  r2   r  r1   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   r5  r   r  r   Z	min_countr<   )r   r|   rz   r  )r   r|   )
r   r(   r   r+   r   rp   rW  r-   r.   rP   )rT   r0   r1  r1   r2   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   ry   )rz   r|   )
r   rp   Zto_timedeltar   r(   rt   r   r   r-   r.   r  r   r   r    test_mean_on_timedelta5  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   ry   r   r  zm8[ns])r   rz   r|   )r   rp   r   rJ  r(   r+   r   r-   rP   r.   r   r|   )rT   Ztd3rU   r   r2   r   r   r    #test_groupby_sum_timedelta_with_nat?  s    

 r  zkernel, has_arg)allF)r  F)bfillF)corrT)r   T)covT)r   T)r   T)r   T)r   T)r   F)ffillF)r   F)r   T)r   T)r   T)r   T)r   T)rt   T)ru   T)r   T)r   F)nuniqueF)r   F)r   T)quantileT)r  T)r   T)r   T)r+   T)r  Tc              	   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r|||}	d|	jks|tn| d	ks| d
kr|tjkr|||}	d|	jkstn|s| dkr|dk	st| 	drt
nt}
ddddddddg}tj|
|d ||| W 5 Q R X nz|sV|tjk	rVtjtdd ||| W 5 Q R X nB| dksdt|tjkstttjtdd ||| W 5 Q R X d S )Nr%   r&   r   r$  )r  r  a3r   r~   Tr   r   )r  r  r  r  r   r   r  r   r   r   not allowed for this dtypezmust be a string or a number+cannot be performed against 'object' dtypesz!must be a string or a real numberr   r   r   r   r   )r   r   )r   objectr   r   
no_defaultr(   r?   r;   rO   r   r   r   r   r   r   )kernelhas_argr~   r5   rT   r   r  rU   rs   r1   r   r   r   r   r    test_numeric_onlyW  sR    *$



	
 r  c              	   C   s  |dkr"d}|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rPd}tj
t|d ||ddi W 5 Q R X nn| t	krdddddg}tj
t|d ||ddi W 5 Q R X n(||ddi}||ddi}t|| d S )Nr   z,corrwith is not implemented on SeriesGroupByr   r   r%   r5  )	r  r  r   r   r   r   r   r   r  )r   r   r   r  r  r   r+   r   r   r  rt   ru   r   r   r   r   r  r  r  z!is not supported for object dtyper   )r   r   r   rt   ru   r   r   r  r  r   r   r+   r  r   r   r   r   r   r~   Tr   z@SeriesGroupBy.sem called with numeric_only=True and dtype objectz=Series.skew does not allow numeric_only=True with non-numericz7cum(sum|prod|min|max) is not supported for object dtypezCCannot use numeric_only=True with SeriesGroupBy\..* and non-numericF)r   r   r   r   r   r   r(   r?   r   r  r   r   ro   r-   r.   r   )r   r  r   r   Zgrouperr<  rU   rs   Zexpected_serexpected_gbZexpected_methodr   Zfails_on_numeric_objectZ
obj_resultr1   r2   Zhas_numeric_onlyr   r   r    "test_deprecate_numeric_only_series  sZ    










r  r  g?g?g333333?r  )r  includeexcluderf   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   T)rH   )r   ro   rf   rg   r   r(   r   rR   r-   rP   r   r   r|   )r   r  rT   r1   r2   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   rz   r$  r   )	r   r(   r   r   r   r   r'   r-   r.   )rT   r1   r|   r2   r   r   r    test_corrwith_with_1_axis=  s    r  c                 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   rS   r(   r?   r   r|   r-   r   )r  rT   rU   rs   r   r1   r2   r   r   r    ,test_multiindex_group_all_columns_when_emptyI  s    


r  c                 C   s   |dkr"d}| j tjj|d tdddgdddgd	d
dggtdd}t||}|jd|d}t	||| }|j
dddgdd}t||}	|jd|d}
t	|
||	 }|dkr|jddid}t|| d S )Nr   z:GH#50845 - corrwith fails when there are duplicate columnsr   r%   r<   r$  r   r]   r&   r   r^   Zabbr:   r   r   r   r  r=   )r   ZngroupZcumcount)r   r   r   r   r   r   rn   r   r(   r?   Zset_axisr  r-   r   )r   r  r   r   rT   r   rU   r1   Zexpected_dfZexpected_argsr  r2   r   r   r    test_duplicate_columnsU  s    (

r  )N)pr*   ior   Znumpyr   r   Zpandas._libsr   Zpandas.errorsr   Zpandasrp   r   r   r   r   r	   r
   Zpandas._testingZ_testingr-   Zpandas.corer   Zpandas.tests.groupbyr   Zpandas.utilr   tdr   r   r   r   r   r!   r3   r   r   r   r   r+   rV   rW   r   r   r   r   r   r   r   r   r  r  r  r  r  rt   ru   r   r  r   r   r   Zskip_if_no_scipyr  r"  r(  r2  r4  ZALL_INT_NUMPY_DTYPESr=  r@  rE  rG  rI  rP  rT  rU  Zskip_if_32bitr   rY  infr'   rk  rm  ro  rv  rx  r}  r~  r  r  r  filterwarningsr  r  r  rW  r  r  r  r  r  r  boolrf   rg   r  r  r  r  r  r  r   r   r   r    <module>   s   
 =- 


 
F


	-"
64
 $$
$

$,
$

	
7 

$<
j