U
    +if                     @   s  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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 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-d.d/d-gifd0d+d,d.d-d.d1d-gifd2d+d,d,d-d.d/d-gifd3d+d,d.d-d.d1d-gifd4d,d.d-d.d1d-gd,gd5fd6d,d.d-d.d.d-gd%d7fgd8d9 Z+ej !d:ed;ed<fd=gd>d? Z,ej !d@dAd d.gd,d/gd,d.gdBfdCd,d/gd d.gd d/gdBfgej -dDdEdF Z.dGdH Z/dIdJ Z0dKdL Z1ej !dMdNej2fdOej3fdPej4fdQej5fdRej$fdSej6fd2ej#fd3ej"fd*dTdU fd0dVdU fd6ej7fej8dWe1ej9dXgdYdZ Z:d[d\ Z;d]d^ Z<d_d` Z=dadb Z>ej !dcd d,d.d/gd d d,d,gfd gd gfgej !dddedfgdgdh Z?ej !didjdkgdldm Z@dndo ZAej !dddpdqgej !d!drdddsdtgdudv ZBdwdx ZCej !dddpdqgej !d!dsddgej !dyd,d,d,gd,ddgfd,d.d/gd,dd.gfd,d/d/gd,ddgfgdzd{ ZDej !dddpdqgd|d} ZEejFej !dddpdqgej !d~dreGd(j"fdgdd ZHej !dd,d.dd/d.d d1ddd,d,gddddgfd,dejId/d.ejIejI ddd,ejI gddddgfd,d.ejJd/d.ejJejJdejI d,ejJgddddgfgdd ZKej !ddddd/d1ddd.d d,d,gddddgfejId,ejI ejId.dejI ddejI ejI gddddgfd,d.ejJd/d.ejJejJdejI d,ejJgddddgfgdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSej -dej !dddgdd ZTdd ZUej !dd,d,d,d.d.d.d/d/d/g	d,e	jVd.d,e	jVd.d,e	jVd.g	d-d,d,d.d.d/d/gd,d.d,d.d,d.gd-gej !ddNdOdQgdd ZWdd ZXdd ZYdd ZZdS )    N)StringIO)UnsupportedFunctionCall)	DataFrameIndex
MultiIndexSeries	Timestamp
date_range)_test_decoratorsInt64Float64znp.int32znp.int64z
np.float32z
np.float64)paramsZ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   U/home/mars/bis/venv/lib/python3.8/site-packages/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_sum6   s    r/   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"   r2   r3   columnsr5   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   Z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*   )r1   r0   dfgbfnamer-   ZngroupsZ
assert_msgwarnmsgr.   Z	expected2r   r=   r   test_builtins_applyA   s0    



rT   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"   r8         @      @      @abccategory      	   Z20130101periods
US/Eastern)r_   tzz1 sr+   )r_   freq)	groupintfloatstringcategory_stringcategory_intdatetime
datetimetz	timedeltarc   rd   re   rf   rg   rh   ri   rj   rk   r6   )r   listr   astyper	   pdZtimedelta_rangeselfrO   r   r   r   rO   l   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 )Nrd   re   rh   rc   g      @r]         @rX   z1.5sZ3s      ?r8   z2013-01-01 12:00:00z2013-01-03 00:00:00r`   ra   )rh   re   rk   rd   ri   rj   r!   r"   nameri   rj   rk   indexr7   zDropping invalidr9   FZnumeric_only)r   r$   r   rn   	Timedeltar   r)   rK   rJ   rI   rL   Zreindex_liker7   _check)rp   rO   rq   expected_columns_numericrP   r.   r-   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 )Nrd   re   rf   rh   ri   rj   rk   r   r~   rp   rO   rq   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 )	Nrd   re   rf   rg   rh   ri   rj   rk   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 )Nrd   re   rh   rf   rk   r   r   )rp   rO   rq   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 )Nrd   re   rh   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 )Nrd   re   rh   ri   rj   rk   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 t|| }W 5 Q R X t|j| d }t|t|jjk rxt}tj|dd t||dd}W 5 Q R X t|j| d S )Nrc   )r   r   )r   r   zDropping invalid columnsr{   Fr|   )	r$   rJ   r)   rK   rI   Zassert_index_equalr7   rF   Z_obj_with_exclusions)rp   rO   rq   r   r   rP   rR   r-   r   r   r   r~      s    
zTestNumericOnly._checkN)rE   
__module____qualname__pytestfixturerO   markparametrizer   r   r   r   r   r   r~   r   r   r   r   rU   i   s   

'




rU   c                   @   sn   e Zd Zejdd Zejdd Zejdd Zej	ddd	 Z
ej	d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barr8   ZbazABCr6   )r   r   r#   ro   r   r   r   rO     s
    zTestGroupByNonCythonPaths.dfc                 C   s   | d}|S )Nr   r$   )rp   rO   rP   r   r   r   rP   !  s    
zTestGroupByNonCythonPaths.gbc                 C   s   |j ddd}|S )Nr   Fas_indexr   )rp   rO   gnir   r   r   r   &  s    zTestGroupByNonCythonPaths.gni(ignore:.*Select only valid:FutureWarningc                 C   s>   t dgtjggdgddgd}d|j_| }t|| d S N        r   r!   r8   r7   rz   r   )r   r   r#   rz   rx   idxmaxr)   rL   rp   rP   r.   r-   r   r   r   test_idxmax,  s    z%TestGroupByNonCythonPaths.test_idxmaxc                 C   s>   t dgtjggdgddgd}d|j_| }t|| d S r   )r   r   r#   rz   rx   idxminr)   rL   r   r   r   r   test_idxmin6  s    z%TestGroupByNonCythonPaths.test_idxminc                 C   sv   t dgtjggdgddgd}d|j_| }t|| t ddgdtjggddgddgd}| }t|| d S )Nr   r   r!   r8   r   r   r   )r   r   r#   rz   rx   Zmadr)   rL   )rp   rP   r   r.   r-   r   r   r   test_mad@  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!   r8   r   rw   r   countrr   stdr   25%50%75%r   r   r\   Zlevelscodesr   r   r   ry   )r   r   rl   ranger   r   r#   describer)   rL   rn   concatr   Zunstackto_frameTrz   )rp   rO   rP   r   Zexpected_indexZexpected_colr.   r-   r   r   r   test_describeK  s,     z'TestGroupByNonCythonPaths.test_describeN)rE   r   r   r   r   rO   rP   r   r   filterwarningsr   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"   r]   r8      r   r   r   r6   Fr   r:   )r   r   r#   r$   r   r)   rL   r   )rO   r.   r-   r   r   r   test_cython_api2h  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 )Nr5   r"   r   r4   size      )r   r   rB   rD   r#   valuesrC   rm   re   r$   rs   r%   nanopsZ	nanmedianr)   rL   )rO   labelsr-   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)rs   r;   r   r   r   r>     r?   z(test_median_empty_bins.<locals>.<lambda>)r   r   rB   rC   r   rn   cutr$   rs   r%   r)   rL   )r   rO   ZgrpsZbinsr-   r.   r   r   r   test_median_empty_bins  s    r   r   Zint8Zint16int32r   float32r   Zuint64zmethod,datar   rO   r!   abr"   r8   r   r   r   r   nth)rO   argsr   )rO   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"   r8   r   r   r   r   rO   r   T)r@   )r   r   rm   rN   r$   rI   r)   rL   )	r   rq   datarO   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   r.   )r.   r   r"   )r   r   r   r   r   r   r   r   )r   itemsr$   rI   ilocr   rH   )r   rO   Zgrp_exprq   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   c                 C   s   t ddddgddddgddd	d
gddddgd}t|d |d< |d jd|d< |d |d jd  |d< |d jd|d< |d d|d< |d d|d< t|	d|  }t |t
ddgddd}|d |d< |d |d< |d |d< |d |d< |d |d< t|| d S ) Nr   r   r!   r"   r8   r   gGz@g=
ףp=@gRQ @g?Z2019Z2018Z2016Z2017)rx   r   r   r   r   z
US/PacificZ	c_date_tzr   Zc_timedeltaWZc_periodr   r   Z	c_Integerr   r   Z
c_Floatingrx   rw   rz   )r   rn   to_datetimedtZtz_localizer   Z	to_periodrm   rI   r$   r   r)   rL   )funcr   rO   r-   r.   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   Dr6   r!   r"   r8   r:   z
2016-01-01r^   Ez7reduction operation 'argmax' not allowed for this dtyper{   )r   r   rB   rD   r$   r   r   rz   Zget_level_valuesr)   r*   Z	droplevelr	   r   raises	TypeError)rO   rP   r   ZaltZindexerZgb2rS   r   r   r   test_idxmin_idxmax_axis1
  s    

r   c                  C   s   t dgd dd} | dd  }| dd dd }d|_t|| t dgd	 dd} | dd  }| d t| d< | dd d
d }d|_t|| d S )Nr   r   r"   )keyvaluer   r   c                 S   s   |   S r   r   r;   r   r   r   r>   $  r?   z&test_groupby_cumprod.<locals>.<lambda>d   c                 S   s   |   S r   r   r;   r   r   r   r>   -  r?   )	r   r$   r   r(   rx   r)   r*   rm   re   )rO   actualr.   r   r   r   test_groupby_cumprod  s    r   c                  O   s   ddl m} || ddi|S )Nr   )semZddofr!   )Zscipy.statsr   )r   kwargsr   r   r   r   	scipy_sem2  s    r   z	op,targoprr   rs   r   varr'   r   c                 C   s
   | j d S )Nr   r   r;   r   r   r   r>   C  r?   r>   c                 C   s
   | j d S )Nr   r;   r   r   r   r>   D  r?   r   )Zmarksc                 C   sZ   t tjd}tjjddddt}t|||  }||	|}t
|| d S )Nr5   r   r4   r   )r   r   rB   rD   rC   rm   re   rI   r$   r%   r)   rL   )opZtargoprO   r   r-   r.   r   r   r   test_ops_general8  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DateFile)rn   Zread_csvr   r$   r   r   r)   rL   ZisnaanyrH   )rawrO   rP   rer   r   r   test_max_nan_bugR  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!   r8   r   r[   r"   r]   r   r      r   Z
aaaaabbbbbZaaabbbr\   r   r   )Zkeep)r   rl   r$   nlargestr   from_arraysr)   r*   r   r   rP   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"   r8   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   rB   ZRandomStater	   r   Zfrom_productr   rD   r$   r   from_tuplesr)   r*   )	Znprdts	iterablesidxr+   r-   Zexp_idxZ
exp_valuesr.   r   r   r   test_nlargest_mi_groupert  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   rl   r$   	nsmallestr   r  r)   r*   r  r   r   r   test_nsmallest  s     


r  zdata, groupsrq   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   rw   r"   )nrz   rx   )
rl   reversedr   rI   r$   r   r  rz   r)   r*   )r   groupsrq   Zserr-   r.   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"   r8   r   r   r   z+numpy operations are not valid with groupbyr{   )r   )r   r$   r   r   r   rI   )r   rO   grS   r   r   r   test_numpy_compat  s    
r  c              
   C   s^  | 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|| |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 |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|| |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"   r8   r   r  r   r   c                 S   s   |   S r   r   r;   r   r   r   r>     r?   ztest_cummin.<locals>.<lambda>r   r   r[   T)r	  c                 S   s   |   S r   r  r;   r   r   r   r>     r?   c                 S   s   |   S r   r  r;   r   r   r   r>     r?   2001r   r   r  r   rw   )r   rm   r$   r   r)   rL   r   r(   r   locr   r#   rn   r   r   r*   r   )r   r   r   base_dfZexpected_minsrO   r.   r-   r   r   r   test_cummin  s@    .
$r  r   r   ZUInt64re   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   r   )	r   r   r#   rm   r$   rI   r)   rL   r   )rq   r   r  r,   r.   r-   r   r   r   test_cummin_max_all_nan_column  s    &
r   c              
   C   s*  | 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|| |djd	d
  }t|| ||j	ddgdf< ||j	ddddgdf< |d }t|| |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|| |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!   r8   r   r  r   r   c                 S   s   |   S r   r   r;   r   r   r   r>      r?   ztest_cummax.<locals>.<lambda>r   r[   c                 S   s   |   S r   r!  r;   r   r   r   r>   (  r?   c                 S   s   |   S r   r!  r;   r   r   r   r>   0  r?   r  r   r   r  r   rw   )r   rm   r$   r   r)   rL   r   r(   r   r  r   r#   rn   r   r   r*   r   )r   r   r   r  Zexpected_maxsrO   r.   r-   r   r   r   test_cummax  s<    .
$r"  zgroups,expected_datac                 C   sV   t dtdd dg|di}||d }t|| dd}t||dd}t|| d S )Nr   r!   r"   r  FZskipna)r   rx   )r   r   r$   rI   r)   r*   )rq   r   r  Zexpected_datarO   rP   r-   r.   r   r   r   test_cummin_max_skipnaA  s
    r$  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   Fr#  )r   r   r#   r$   rI   r)   rL   )rq   rO   rP   r-   r.   r   r   r   $test_cummin_max_skipna_multiple_colsV  s
     r%  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  r&  r   )rn   NAr   r$   Z	transformr)   rL   )rq   r   valr   rO   r,   r-   r.   r   r   r   #test_nullable_int_not_cast_as_floatb  s    


r)  zin_vals, out_valsr   iTFg @   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   cdr   r   r   r   abcdrw   r   rz   r   rx   c                 S   s   | j S r   )is_monotonic_increasingr;   r   r   r   r>     r?   z.test_is_monotonic_increasing.<locals>.<lambda>)
r   r$   r   r;  r   rl   r   r)   r*   r(   Zin_valsZout_valsZsource_dictrO   r-   rz   r.   r   r   r   test_is_monotonic_increasingr  s    r=  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/  r0  r1  r2  r3  r4  r5  r   r   r6  r7  r8  r   r9  rw   r   r:  )	r   r$   r   Zis_monotonic_decreasingr   rl   r   r)   r*   r<  r   r   r   test_is_monotonic_decreasing  s    r?  c                 C   s   | j dd}|  d S )Nr   )level)r$   r   )Zmframer,   r   r   r   test_apply_describe_bug  s    rA  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   r>     r?   z/test_series_describe_multikey.<locals>.<lambda>c                 S   s   | j S r   monthr;   r   r   r   r>     r?   rr   F)Zcheck_namesr   r   )r)   makeTimeSeriesr$   r   r*   rr   r   r   )tsr,   r-   r   r   r   test_series_describe_multikey  s    rH  c                  C   s@   t  } | dd }|dd }|  }t || d S )Nc                 S   s   | j S r   rD  r;   r   r   r   r>     r?   z-test_series_describe_single.<locals>.<lambda>c                 S   s   |   S r   )r   r;   r   r   r   r>     r?   )r)   rF  r$   r(   r   stackr*   )rG  r,   r-   r.   r   r   r   test_series_describe_single  s
    rJ  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   )rr   r;   r   r   r   r>     r?   z(test_series_index_name.<locals>.<lambda>)r  r$   r%   rz   rx   rH   )rO   r,   r-   r   r   r   test_series_index_name  s    rK  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 S )
Nc                 S   s   | j S r   rB  r;   r   r   r   r>     r?   z.test_frame_describe_multikey.<locals>.<lambda>c                 S   s   | j S r   rD  r;   r   r   r   r>     r?   r   r   r   r!   r:   )r   r   r   r   )r$   r   r   r7   rF   r   r   r   rz   appendrn   r   r)   rL   r   )	Ztsframer,   r-   Zdesc_groupscolrc   Z	group_colr.   ZgroupedTr   r   r   test_frame_describe_multikey  s"    

rN  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"   r8   r   r   r   r     (   r4   r      i,  i  r   )r<   yz)r   r   r!   )r   r!   r   )r!   r   r   kr   r6   z*Names should be list-like for a MultiIndexr{   )r   renamer   r   
ValueErrorr$   r   )Zdf1Zdf2rS   r   r   r   test_frame_describe_tupleindex  s    rW  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:05rv   ia  z2011-01-06 12:43:33ic  z2011-01-06 12:54:09i /hYl    rT i )PRICEVOLUMErX  rw   r   rr   r   r   r   r   r   r   ry   )r   r   r$   rY  r   rX  r   tolistr   r)   rL   )ZpricesZvolumesrO   r-   r   r.   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"   r8   r   r   r   r   r  rO  rP  r4   <   r   r   r6  r   r   F)r7   copy)r   r   r    r    )r   rr         V@     X@)r   r   r   r   )r   r   ra  rb  )r   r   ra  rb  )r   r   ra  rb  )r   r   ra  rb  )r   r   ra  rb  )r   r   r    r    )r   rr   rW   r   )r   r   r   r   )r   r   rV   r   )r   r   rt   ru   )r   r   rW   r   )r   r   g      @g      @)r   r   rX   r    r   rw   )r7   r@  T)rA   r   )r   Zfrom_recordsrN   r   r7   r  r   rz   rA   rM   r$   r   r)   rL   )r   rO   r.   r-   r   r   r   0test_describe_with_duplicate_output_column_names  sZ     rc  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connectionsrd  re  l    ,fL )r   r$   rr   rH   )rO   r   r   r   test_groupby_mean_no_overflowY  s    rf  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      ?ru   r8   r  r!   r"   r   r   rx   r   r   r   r   )r   arrayre   r   r   rm   r$   rI   r)   rL   r%   r   r
  r7   )r   rg  outputZarrr  r.   r  r-   r   r   r   ,test_apply_to_nullable_integer_returns_floatd  s    
rk  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   rh  r   Z	min_countr8   )r   rz   rx   )r   r6  )r   rz   )
r   r$   r   r'   r   rn   r'  r)   r*   rL   )rO   r,   r  r-   r.   r   r   r   0test_groupby_sum_below_mincount_nullable_integer  s    &
$rm  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catro  rn  r   rw   )rx   rz   )
r   rn   Zto_timedeltar   r$   rr   r   r   r)   r*   )rO   r-   r.   r   r   r   test_mean_on_timedelta  s       rp  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   r8   )daysr   r   rw   r   rl  zm8[ns])r   rx   rz   )r   rn   r}   ZNaTr$   r'   r   r)   rL   r*   r   rz   )rO   Ztd3rP   r   r.   r   r   r   #test_groupby_sum_timedelta_with_nat  s    

 rr  )[r&   ior   numpyr   r   Zpandas.errorsr   Zpandasrn   r   r   r   r   r   r	   Zpandas._testingZ_testingr)   Zpandas.core.nanopscorer   Zpandas.utilr
   tdr   r   r   r   r   r   r/   r   r   r   r   r'   rT   rU   r   r   r   r   r   r   r   r   r   r   r   rr   rs   r   r   r   r   r   Zskip_if_no_scipyr   r   r  r  r  r  r  r  r   r"  r$  r%  Zskip_if_32bitr   r)  infr#   r=  r?  rA  rH  rJ  rK  rN  rW  r[  rc  rf  r'  rk  rm  rp  rr  r   r   r   r   <module>   sD   
& -S 





	-"
0.
 $$
$

$,
$

	9 

