U
    Mf                     @   s	  d dl Z d dlZd dlmZ d dlmZ d dlmZ d dl	Z
d dlZd dlmZ d dlZd dlmZmZmZmZmZmZmZmZmZ d dlmZ d dlm  mZ d dlm Z! ej"#dd	d
gej"#dddgej"#ddddgdddgdddgdddgdd d gd d d gdddgdddgdddgdddgdddgdddge
j$e
j$e
j$ggdd Z%dd Z&dd Z'ej"#d e(e)e*gej"#d!d"d"d#ggd$d% Z+d&d' Z,d(d) Z-d*d+ Z.d,d- Z/d.d/ Z0ej"#d0d1d2d3d4d5d6d7gej"#d8d9d:ddd;ddd;gifd<d:ddd;dd=d;gifd>d:ddd;ddd;gifd?d:ddd;dd=d;gifd@ddd;dd=d;gdgdAfdBddd;ddd;gd4dCfgdDdE Z1ej"#dFedGedHfdIgdJdK Z2ej"#dLdMd dgddgddgdNfdOddgd dgd dgdNfgdPdQ Z3dRdS Z4dTdU Z5dVdW Z6ej"#dXdYe
j7fdZe
j8fd[e
j9fd\e
j:fd]e
j*fd^e
j;fd>e
j)fd?e
j(fd9d_d` fd<dad` fdBe
j<fej=dbe6e!j>dcgddde Z?dfdg Z@dhdi ZAdjdk ZBdldm ZCej"#dndYd\d[dodpgdqdr ZDej"jEedsddtdudv ZFej"#dwdddxddd d=dxdyddgddddgfddze
jGdde
jGe
jG dxd{de
jG gddddgfdde
j$dde
j$e
j$dxe
jG de
j$gddddgfgd|d} ZHej"#dwd~dddd=dxddd ddgddddgfe
jGde
jG e
jGdde
jG dxde
jG e
jG gddddgfdde
j$dde
j$e
j$dxe
jG de
j$gddddgfgdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPej"#dd~e
Qdd ej"#dd~ddgej"#dddgej"#dddgdd ZRdd ZSdd ZTdd ZUdd ZVej"#ddddgedeedgdedgejdgddddfdddgeWdddeeWdddgdedgejdgddddfdddddgeWdddeeWdddeeWdddgdeddgejddgddddfdddddgeWdddeeWdddeeWdddgdeddgejddgddddfgdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbej"#ddddddgej"#ddddd=dxgdxd=dddgfdddd=gd=dddgfdddd=dxgd=dddgfdddddgdddddgfde
j$de
j$dgde
j$de
j$dgfe
j$de
j$de
j$ge
j$de
j$de
j$gfecejdddxd͍ecejdddxd͍ddd΅ fe
j$gdx e
j$gdx fgej"#dd ddddgddԄ Zdddք Zedd؄ Zfddڄ Zgdd܄ Zhej"#dddgej"#dd gd dggej"#dddggdd Zidd Zjdd Zkdd Zldd Zmdd Zndd Zodd Zpej"#ddddddddddg	dejqddejqddejqdg	d;ddddddgddddddgd;gej"#ddYdZd\gdd ZrdS )    N)StringIO)product)ascii_lowercase)UnsupportedFunctionCall)		DataFrameIndex
MultiIndexNaTSeries	Timestamp_is_numpy_dev
date_rangeisna)_test_decoratorsagg_funcanyallskipnaTFvalsfoobarbaz                ?       @      @        c                 C   s   t dgd dgd  |d d}tt| |}|rLtt|rL| dkrLd}t |gd dgtddgd	d
d}t|d	| |d}t|| d S )Nar   br   keyvalr   Fr$   r#   namecolumnsindex)r   )	r   getattrbuiltinsr   r   r   groupbytmassert_frame_equal)r   r   r   dfexpZexp_dfresult r2   F/tmp/pip-unpacked-wheel-izj5yhnl/pandas/tests/groupby/test_function.pytest_groupby_bool_aggs   s    ""r4   c                  C   s   t ddddgddddgddg d} | d	 }d
|ks@t| d	jdd}d
|ks^t| d	 }d
|ksxt| d	jdd}d
|kstd S )N      r   r   r      Zmama)nniissr8   r:   FZnumeric_only)r   r,   maxAssertionErrormin)Zaar1   r2   r2   r3   test_max_min_non_numeric@   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 )Nr   r   r   r   r   r   )
r
   npnanr,   aggr+   sumapplyr-   assert_series_equal)sgroupedr1   Zresult2expectedr2   r2   r3   test_intercept_builtin_sumQ   s    rI   fkeysjimjoec                 C   s   t j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s~t|t||| tt| |tkr|| | }|j| ddd tj||dd tt|| t||  d S )Nr   2   )  r   rL   rM   r(   rO   Zjolie)Zsubsetzinvalid frame shape: z (expected (z, 3))r   TF)inplacedrop)Zcheck_dtype)pdr   r@   randomrandintrandn__name__r,   rD   lenZdrop_duplicatesshaper=   r-   r.   r*   rC   rB   reset_index	set_indexrE   )rK   rJ   r/   fnamer1   ZngroupsZ
assert_msgrH   r2   r2   r3   test_builtins_apply`   s     r]   c                  C   s|  t jdddgdddgdddgtdt tddd	d
dgt jdddt jddddt jddddd	dddddddddg	d} tdddg}t jddgddgt d t d!gd"dgt 	d#t 	d$gt j	d#dd%t j	d$dd%gd&tddgdd'ddddddgd(}d)D ]F}t
| d|}| }t|j| |d*d+}t||| qtdddddddg}d,D ]B}t
| d|}| }t|j| |d*d+}t|j| qptddddddddg}d-D ]B}t
| d|}| }t|j| |d*d+}t|j| qtdddddg}d.D ]B}t
| d|}| }t|j| |d*d+}t|j| q*tdddg}d/D ]B}t
| d|}| }t|j| |d*d+}t|j| qtddddddg}d0D ]B}t
| d|}| }t|j| |d*d+}t|j| qtddddg}d1D ]B}t
| d|}| }t|j| |d*d+}t|j| q4d S )2Nr   r   r         @      @g      @abccategory      	   Z20130101periodsz
US/Eastern)rf   tzz1 srF   rf   freq)	groupintfloatstringcategory_stringcategory_intdatetime
datetimetz	timedeltarj   rk   rl   rm   rn   ro   rp   rq   rr   rP   g      @      @z1.5sZ3s      ?z2013-01-01 12:00:00z2013-01-03 00:00:00rg   )ro   rl   rr   rk   rp   rq   r%   r)   r(   )meanmedianFr;   )r>   r<   )firstlastrC   )prodcumprod)cummincummax)cumsum)rS   r   listr
   astyper   Ztimedelta_ranger   Z	Timedeltar   r*   r,   r-   Zassert_index_equalr(   r.   Zreindex_like)r/   Zexpected_columns_numericrH   attrrJ   r1   expected_columnsr2   r2   r3   test_arg_passthru{   s    






r   c               
   C   s6  t dddgdtjdgdtjdggddd	gd
} | d}| jddd}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|| t	j
ddgdd}t	jdgddddddddggdgd ttdgd}t	j 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|| t ddgddggdd	gddgd}d|j_| }t|| t dgtjggdgddgd}d|j_| }t|| d S )Nr   r   r   r   r   r   ABCrP   Fas_indexr   r'   r   r%   countrw   stdr>   25%50%75%r<   rc   levelscodesr   r   rv   T)r   r@   rA   r,   r)   r&   Zmadr-   r.   rS   r   r   r   rangedescribeconcatr   Zunstackto_frameTr   idxmax)r/   gZgnirH   r1   expected_indexZexpected_colr2   r2   r3   test_non_cython_api
  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   rd   r   r7   r   r   r   rP   Fr   axis)r   r@   rA   r,   r   r-   r.   r}   r/   rH   r1   r2   r2   r3   test_cython_api2I  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 )NrO   r   r   rN   size      )r   r@   rT   rV   rA   valuesrU   r   rl   r,   rx   rB   nanopsZ	nanmedianr-   r.   )r/   labelsr1   r0   rsZxpr2   r2   r3   test_cython_median`  s    r   c                 C   sl   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)rx   xr2   r2   r3   <lambda>x      z(test_median_empty_bins.<locals>.<lambda>)rS   r   r@   rT   rU   r   Zcutr,   rx   rB   r-   r.   )r   r/   ZgrpsZbinsr1   rH   r2   r2   r3   test_median_empty_binsq  s    r   dtypeint8int16int32int64float32float64Zuint64zmethod,datary   r/   r    r!   rz   r7   r>   r<   nth)r/   argsr   )r/   out_typec           	      C   s   t ddddddddddddg}|j| |d< d|krJg |d< d|kr\|d }n| }|d	 }t |}|j||d< |jd
dd |d
}t|||d  }t|| d S )Nr   r   r   r   r7   r!   r   r   r/   r    T)rQ   )	rS   r   r!   r   r[   r,   r*   r-   r.   )	r   methoddatar/   r   r0   Zdf_outZgrpdtr2   r2   r3   %test_groupby_non_arithmetic_agg_types|  s     "


r   iz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sltqld S )
Nr   r   r   rH   )rH   r   r   )ry   rz   r>   r<   r   r   r   r    )rS   r   itemsr,   r*   ilocr!   r=   )r   r/   Zgrp_expr   r   rG   resr2   r2   r3   2test_groupby_non_arithmetic_agg_int_like_precision  s    "



	
r   zfunc, valuesZidxmin)c_intc_floatc_dater   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< t|d|  }t j|tddgddd}t|| d S )Nr   r   r   r   r   r7   gGz@g=
ףp=@gRQ @g?Z2019Z2018Z2016Z2017)r&   r   r   r   r   r&   r%   r)   )rS   r   to_datetimer*   r,   r   r-   r.   )funcr   r/   r1   rH   r2   r2   r3   $test_idxmin_idxmax_returns_int_types  s    	



r   c                  C   s   t tjddgtddgtddgddd	} tjd
tjtjdtjtjdtjtjdtjg| d< tjdtjtjdtjtjdtjtjdtjg| d< | jdddj	dd}| j
jdd
dj	ddj
}t|| d S )NZvalue1Zvalue2z
2014-01-01z
2014-01-0612idr%   rv   r   r5   r   r6   r   !   r7   r   r   )levelr   Zffill)r   )r   rS   r   from_productr   r   r@   rA   r,   Zfillnar   r-   r.   r   r2   r2   r3   test_fill_consistency  sF    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#   valuer#   r   c                 S   s   |   S r   r}   r   r2   r2   r3   r     r   z&test_groupby_cumprod.<locals>.<lambda>d   c                 S   s   |   S r   r   r   r2   r2   r3   r     r   )
rS   r   r,   r}   rD   r&   r-   rE   r   rl   )r/   actualrH   r2   r2   r3   test_groupby_cumprod  s    r   c                  O   s   ddl m} || ddi|S )Nr   )semZddofr   )Zscipy.statsr   )r   kwargsr   r2   r2   r3   	scipy_sem   s    r   z	op,targoprw   rx   r   varrC   r|   c                 C   s
   | j d S Nr   r   r   r2   r2   r3   r   1  r   r   c                 C   s
   | j d S )Nr   r   r2   r2   r3   r   2  r   r   )Zmarksc                 C   s`   t tjd}tjjddddt}t|||  t}||	|}t
|| d S )NrO   r   rN   r   )r   r@   rT   rV   rU   r   rl   r*   r,   rB   r-   r.   )opZtargopr/   r   r1   rH   r2   r2   r3   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)rS   Zread_csvr   r,   r<   r   r-   r.   r   r   r=   )rawr/   gbrer2   r2   r3   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   rb   r   rd   r   r7      r   Z
aaaaabbbbbZaaabbbrc   r   rz   )Zkeep)r
   r   r,   nlargestr   from_arraysr-   rE   r    r!   r   r   r   r2   r2   r3   test_nlargestN  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   re   ZoneZtwory   secondnames   r   r   r   r   r   r7   r   r   rb   rc   rd   g-r@g-`w?g@f|?gp?g=J-?g],l;?g]f$?gM8r g4Y?g
F;FT)Zcheck_exactZcheck_less_precise)r@   rT   RandomStater   r   r   r
   rV   r,   r   from_tuplesr-   rE   )	ZnprZdts	iterablesidxrF   r1   Zexp_idxZ
exp_valuesrH   r2   r2   r3   test_nlargest_mi_grouperb  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
   r   r,   	nsmallestr   r   r-   rE   r   r2   r2   r3   test_nsmallest  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 groupbymatch)r   )rS   r   r,   pytestraisesr   r*   )r   r/   r   msgr2   r2   r3   test_numpy_compat  s    
r  z1https://github.com/pandas-dev/pandas/issues/31992)reasonstrictc                  C   s  t jt jt jt jg} t t jjt t jjt t jjt t jjg}t t jjt t jjt t jjt t jjg}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}ddddddddg}t| ||D ]\}}}||}	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	
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||
 qt 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t jdt jdt jdt jdgi}
|d }t||
 |djdd	  }
t||
 t j|d< t	
dt jgd i}
|d }t|
| |djdd	  }t|
| |d }t|
| |djdd	  }t|
| t	
tdgt	dgd}	t	jt	ddgdd}
dD ](}t|	dd | }t|
| q,t	
tdddgdddgd}	|	dj }t	jdddgdd}
t||
 t	
tdddgdddgd}	|	dj }t	jdddgdd}
t||
 d S )Nr   r   r   r7   r   r   r   c                 S   s   |   S r   r~   r   r2   r2   r3   r     r   z$test_cummin_cummax.<locals>.<lambda>r   rb   c                 S   s   |   S r   r  r   r2   r2   r3   r     r   c                 S   s   |   S r   r   r   r2   r2   r3   r     r   c                 S   s   |   S r   r  r   r2   r2   r3   r     r   r   c                 S   s   |   S r   r  r   r2   r2   r3   r     r   c                 S   s   |   S r   r  r   r2   r2   r3   r     r   rc   c                 S   s   |   S r   r  r   r2   r2   r3   r     r   c                 S   s   |   S r   r  r   r2   r2   r3   r     r   Z2001r   r!   r)   r&   )r   r~   r    r%   )r@   r   r   r   r   Ziinfor>   Zfinfor<   rS   r   zipr   r,   r~   r-   r.   r   rD   r   locr   rA   dictr   r
   r*   rE   r!   )Z	num_typesZnum_minsZnum_maxZbase_dfZexpected_minsZexpected_maxsr   Zmin_valZmax_valr/   rH   r1   r   r2   r2   r3   test_cummin_cummax  s    (
&&
r
  zin_vals, out_valsr   i @r5   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 j||dd}t	|| |dgj
dd }t	|| d S )Nr   r   34567891011r    r!   cdr   r   r   r   abcdr%   r   r)   r   r&   c                 S   s   | j S r   )is_monotonic_increasingr   r2   r2   r3   r   9  r   z.test_is_monotonic_increasing.<locals>.<lambda>)rS   r   r,   r   r  r   r   r
   r-   rE   rD   Zin_valsZout_valsZsource_dictr/   r1   r)   rH   r2   r2   r3   test_is_monotonic_increasing  s    
r  r   rd   rb   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 j||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  )
rS   r   r,   r   Zis_monotonic_decreasingr   r   r
   r-   rE   r  r2   r2   r3   test_is_monotonic_decreasing=  s    
r  c                 C   s   | j dd}|  d S )Nry   r   )r,   r   )ZmframerG   r2   r2   r3   test_apply_describe_bugb  s    r   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   r2   r2   r3   r   i  r   z/test_series_describe_multikey.<locals>.<lambda>c                 S   s   | j S r   monthr   r2   r2   r3   r   i  r   rw   FZcheck_namesr   r>   )r-   makeTimeSeriesr,   r   rE   rw   r   r>   )tsrG   r1   r2   r2   r3   test_series_describe_multikeyg  s    r(  c                  C   s@   t  } | dd }|dd }|  }t || d S )Nc                 S   s   | j S r   r#  r   r2   r2   r3   r   r  r   z-test_series_describe_single.<locals>.<lambda>c                 S   s   |   S r   )r   r   r2   r2   r3   r   s  r   )r-   r&  r,   rD   r   stackrE   )r'  rG   r1   rH   r2   r2   r3   test_series_describe_singlep  s
    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 r   )rw   r   r2   r2   r3   r   z  r   z(test_series_index_name.<locals>.<lambda>)r  r,   rB   r)   r&   r=   )r/   rG   r1   r2   r2   r3   test_series_index_namex  s    r+  c           	      C   s
  |  dd dd g}| }g }| D ]^}||  }tj|g|jgdgt|j tt|jgd}tj|j||j	d}|
| q&tj|dd}t|| | j ddddd	dd}| }|  j}tjddg|j	gddddgtt|j	gd|_	t|| d S )
Nc                 S   s   | j S r   r!  r   r2   r2   r3   r     r   z.test_frame_describe_multikey.<locals>.<lambda>c                 S   s   | j S r   r#  r   r2   r2   r3   r     r   r   r   r'   r   r   )r   r   r   D)r,   r   rS   r   r(   rX   r   r   r   r)   appendr   r-   r.   r   )	ZtsframerG   r1   Zdesc_groupscolrj   Z	group_colrH   ZgroupedTr2   r2   r3   test_frame_describe_multikey~  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   r7   r   r   r      (   rN   r      ,  i  r   )r   yz)r   r   r   )r   r   r   )r   r   r   kr#   rP   z*Names should be list-like for a MultiIndexr   )r   renamer   r   
ValueErrorr,   r   )Zdf1Zdf2r   r2   r2   r3   test_frame_describe_tupleindex  s    r9  c                  C   s   t jdd ddt jdd ddt jdd ddi} t jdd ddt jdd ddt jdd dd	i}t | |d
}|dj }||jdk j j ||jdk j j g}t j|t j	ddgddddddddddgd}t
|| d S )Nz2011-01-06 10:59:05ru   ia  z2011-01-06 12:43:33ic  z2011-01-06 12:54:09i /hYl    rT i )PRICEVOLUMEr:  r%   r   rw   r   r>   r   r   r   r<   rv   )rS   r   r   r,   r;  r   r:  r   tolistr   r-   r.   )ZpricesZvolumesr/   r1   r   rH   r2   r2   r3   $test_frame_describe_unstacked_format  s2          r=  nr   mr   rO   sortdropnac                    s  d fdd	}t ddd}ttjtt| tj|| tjd|| d}||d	g ||d	d
g d |jdd dd	f< d |jdd dd
f< d |jdd ddf< d |jdd ddf< d |jdd ddf< ||d	g ||d	d
g ||d	gdd ||d	d
gdd d S )NTc                    s|   |   }| j||d}|d j d}| j||d}|d jtj d}|s\|jdd}tj||dd t| | d S )N)r   r@  julierA  T)rR   Fr%  )	copyr,   nuniquerD   r
   rZ   r-   rE   r.   )r/   rK   r   Zoriginal_dfZgrleftrightrA  r@  r2   r3   check_nunique  s    z2test_series_groupby_nunique.<locals>.check_nuniquez
2015-08-23r   re   r   )rL   rM   rB  rL   rM   r   r   r   %   rb      rB  rc   rd   Fr   )T)	r   r   r@   rT   choicer   r   rU   r  )r>  r?  r@  rA  rI  daysframer2   rH  r3   test_series_groupby_nunique  s&    rO  c                  C   s
  t tdtdtdd} t dgd dddgdddgd}| jdd	d
 }t|| td|_d|j_| d }t|| | dd idjd	d}t|| t dgd dgd dgd dtdd}d|j_| dd id }t|| d S )NZabbaccZabxaccZabbacxr  r   r   r   r   Fr   r`   r   rC  r   )	r   r   r,   rE  r-   r.   r)   r&   replacer   r2   r2   r3   test_nunique  s    "
*rQ  c                  C   s   t jdddgdddgddd	gd
ddgdddggdddgd} | ddgd  }t| j| jg}t jdgd d|d}t	
|| d S )Nr   r   ZAlicer2  r   ZBobr3  r   ZCharlieipr7   ZDanr   r   ZEdithamountr   r&   rP   r&   r)   )rS   r   r,   rE  r   r   r   rR  r
   r-   rE   )r   r1   r)   rH   r2   r2   r3   test_nunique_with_object  s    rT  c                  C   s<   t jdtd} | jdd }t jddd}t|| d S )Nr&   )r&   r   r   r  r   )rS   r
   objectr,   rE  r-   rE   )r   r1   rH   r2   r2   r3   test_nunique_with_empty_series  s    rV  c                  C   sx   t tdtdtdgdddgdd} | t jd	d
d  }| t jd	d
d t jj}t	
|| d S )Nz2016-06-28 09:35:35z2016-06-28 16:09:30z2016-06-28 16:46:28r   r   r  )timer   rW  h)ri   r   )rS   r   r   r[   r,   ZGrouperrE  rD   r
   r-   rE   testr1   rH   r2   r2   r3   test_nunique_with_timegrouper'  s    	
 r[  zkey, data, dropna, expectedr   z
2019-01-01r#   r%   r   r  i  r4  c                 C   s8   t | |d}|dgd j|d}t|| d S )N)r#   r   r#   r   rC  )rS   r   r,   rE  r-   rE   )r#   r   rA  rH   r/   r1   r2   r2   r3   test_nunique_with_NaT8  s    r\  c                  C   sV   t jdddgt jdgddd} | dddg }t jdg| jd}t|| d S )Nr   r   r   Zlevel_0r%   rP   r   )rS   r   r   r,   rE  r(   r-   r.   rY  r2   r2   r3   )test_nunique_preserves_column_level_names\  s     r]  c                  C   s^   t tdtddd} tddgtjddgdd	d
d}| dj	
 }t|| d S )Nababr7   ztimedelta64[ns])r   deltr   r    r!   r   r%   r_  r  )r   r   r@   aranger   r
   rS   r   r,   r_  r   r-   rE   r   r2   r2   r3   #test_groupby_timedelta_cython_counth  s     ra  c                  C   sJ  d} t d| d dd}ttjtt| tjdd| tj| 	dtjd	d| tj|| tj| 	dtj| 	dtj|| tj|d
 tjtt| d	}|j
dddgD ]"}tj|jtj| | d |f< q|d d|d< ddddgfD ]<}|| }||tjj|d
d}t|| qd S )Ni   z
2015-08-30r   r   rh   r   r   r   ir   )	1st2ndZ3rd4thZ5thZ6thZ7thZ8th9thrb  rc  rd  re  ra   r   )r   r   r@   rT   rL  r   r   rU   rV   roundr(   rR   rA   r  r   r,   r   rD   r-   r.   )r>  Zdrr/   r.  r#   rF  rG  r2   r2   r3   
test_countq  s*     rg  c                  C   s   t jdddgdtjdgdtjtjggdddgd	} | d }| jdd
d }tddgddggddgddgd}d|j_t	||
  t	|| | dd  }t||d  d S )Nr   r   r   r   r   r   r   r   rP   Fr   r   r'   )rS   r   r@   rA   r,   r   r)   r&   r-   r.   rZ   rE   )r/   Zcount_asZcount_not_asrH   Zcount_Br2   r2   r3   test_count_non_nulls  s     "rh  c                  C   s   t dgd dgd  dgd dgd  d} | dj }t jddgt jddgdddd}t|| t dt	j
t	j
gdgd  dgd dgd  d} | dj }t jd	dgt jddgdddd}t|| d S )
Nr    r   r!   r   )r    r  r  r%   r  r   )rS   r   r,   r    r   r
   r   r-   rE   r@   rA   r/   r1   rH   r2   r2   r3   test_count_object  s    0"4"rj  c                  C   s   t t jdddt jdddf} tj| ddddgd	}t j||dk< |ddg }d
D ]F}|d 	||d< |d 	||d< |ddg }t
|| q`d S )Nr   r   )r   r   r   r    r!   r  r  rP   )r   rU  )r@   ZhstackrT   rU   rS   r   rA   r,   r   r   r-   r.   )r   r/   rH   r   r1   r2   r2   r3   test_count_cross_type  s    rk  c               	   C   s   t tddddgtjtddddgtjtdddd	gtjtd
d} | d }t ddgddgddgdt	j
tdddd}t|| d S )Nr   r   r   r   r   r   r7   r   rc   r^  )r    r!   r  grprl  )r    r!   r  abr%   r   )r   r@   arrayr   Zuint32r   r   r,   r   rS   r   r-   r.   ri  r2   r2   r3   test_lower_int_prec_count  s     ro  c                     s   G dd dt G fddd t fddtdD tdd	} | d
 }tdddgitjtdd
dd}t	|| d S )Nc                   @   s   e Zd ZdS )zAtest_count_uses_size_on_exception.<locals>.RaisingObjectExceptionN)rW   
__module____qualname__r2   r2   r2   r3   RaisingObjectException  s   rr  c                       s*   e Zd Zd fdd	ZfddZ  ZS )z8test_count_uses_size_on_exception.<locals>.RaisingObjectI will raise inside Cythonc                    s   t    || _d S r   )super__init__r   )selfr   	__class__r2   r3   ru    s    
zAtest_count_uses_size_on_exception.<locals>.RaisingObject.__init__c                    s    | j d S r   )r   )rv  otherrr  r2   r3   __eq__  s    z?test_count_uses_size_on_exception.<locals>.RaisingObject.__eq__)rs  )rW   rp  rq  ru  r{  __classcell__r2   rz  rw  r3   RaisingObject  s   r}  c                    s   g | ]
}  qS r2   r2   .0_)r}  r2   r3   
<listcomp>  s     z5test_count_uses_size_on_exception.<locals>.<listcomp>r7   r^  )r    rl  rl  r    r   rm  r%   r   )
	Exceptionr   r   r   r,   r   rS   r   r-   r.   ri  r2   )r}  rr  r3   !test_count_uses_size_on_exception  s    	$"r  c           	      C   sR  |  ddg}| }|D ]\}}|| t|kstq|  d}| }|D ]\}}|| t|ksNtqN|  d}| }|D ]\}}|| t|kstqttjddtdd} t	ddd	dd	gfD ]F\}}| j ||d
 }| j ||d
d 
dd }tj||dd qtddgd} tdtg ddd}t|  d | d S )Nr   r   r   )rO   r   r`   rP   )FTr    r!   r@  r  c                 S   s
   | j d S r   )rY   )r    r2   r2   r3   r     r   ztest_size.<locals>.<lambda>Fr%  r   r%   r   r)   )r,   r   rX   r=   r   r@   rT   rL  r   r   rD   r-   rE   r
   r   )	r/   rG   r1   r#   rj   r@  rF  rG  outr2   r2   r3   	test_size  s(    

r  c                  C   sB   t dd d gi} | d }tdtg ddd}t|| d S )Nr   r   r%   r  )r   r,   r   r
   r   r-   rE   ri  r2   r2   r3   test_size_groupby_all_null  s    r  interpolationZlinearlowerZhighernearestZmidpointza_vals,b_valsr^   r_   z1/1/18r,  )ri   rf   r   q      ?      ?      ?c           	      C   s   | dkr*|dkr*|ddddgkr*t d t|j|| d}t|j|| d}td	gt| d
gt|  || d}t||gdgtd	d
gddd}|dj|| d}t	
|| d S )Nr  r  r7   r   r   r   zBUnclear numpy expectation for nearest result with equidistant data)r  r    r!   r"   r$   r#   r%   r'   )r   skiprS   r
   quantiler   rX   r   r,   r-   r.   )	r  Za_valsZb_valsr  Z
a_expectedZ
b_expectedr/   rH   r1   r2   r2   r3   test_quantile  s      $  r  c                  C   s   t ddddddgi} | dddddgdg}t jddgdgg}t jdddgi|d	}t|| t ddddgdd
ddgd} t jddgddgg}| ddddgddg}t jddddgddddgd|d	}t|| d S )Nr   r   r   r   r   r7   r  g      @r   r   r   rb   r   r  g      @g      @g      @g      @g      @g      @rS   r   r,   r  r   r   r-   r.   r/   r1   r)   rH   r2   r2   r3   test_quantile_array;  s      r  c                  C   s   t jtjdjddddtdd} | ddd	g}t jd
dddddddddg
ddddddddddg
dt j	j
dddddgdd	ggdd gdd}t|| d S ) Nr   r   )r   r   r   ABCrP   r   g333333?gffffff?g?r  g@g333333@g?g333333@gffffff@g@r   g333333?gffffff@g?r   gffffff?g@)r   r   r   r   r   r7   r   r   )rS   r   r@   rT   r   rU   r   r,   r  r   r   r-   r.   ri  r2   r2   r3   test_quantile_array2N  s      	r  c                  C   s   t dddgdddgd} | jdddgdd	d
ddg}t jddddddgddddddgdt jddgd
ddggd}t|| | jdddgdd	dd
g}t jddddgddddgdt jddgdd
ggd}t|| d S )Nr   r   r   r   r7   r   r   Fr  r  r  r  r   rt   g      @r^   rs   r   r  ri  r2   r2   r3   test_quantile_array_no_sort`  s      r  c                  C   s   t dddgdddgdddgdddgd	} | d
dgddg}t jjddddgd
dd gd}t jddddgddddgd|d}t|| d S )Nr   r   r   r   r7   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   g      
@g      @r_   r   r   )rS   r   r,   r  r   r   r-   r.   r  r2   r2   r3   #test_quantile_array_multiple_levelsq  s    $
 r  
frame_size)r   r   )r   r   r,   g333333?c                    s  | \}t jtfddt|D td}ttt|dgt  g }fddtt|dD gt  tttt|d g }t j|| d g d} fddtt|dD } fddtD }	t j|||	d	}
|	 
}t||
 d S )
Nc                    s   g | ]} |d  g qS )r7   r2   r~  )ncolr2   r3   r    s     zJtest_groupby_quantile_with_arraylike_q_and_int_columns.<locals>.<listcomp>rP   r7   c                    s   g | ]} D ]}|qqS r2   r2   r  r   r  )r  r2   r3   r    s       )r   r   r   c                    s,   g | ]$}D ]}t |gt   qqS r2   )rl   rX   r  r,   r  r  r2   r3   r    s      c                    s   g | ]}| kr|qS r2   r2   )r  r   )r,   r2   r3   r    s      rv   )rS   r   r@   rn  r   r   r>   rX   r   r,   r  r-   r.   )r  r,   r  Znrowr/   Z
idx_levelsZ	idx_codesr   Zexpected_valuesr   rH   r1   r2   r  r3   6test_groupby_quantile_with_arraylike_q_and_int_columns  s2     "$    r  c               	   C   sP   t jddgddgddggddgd} tjtdd	 | d  W 5 Q R X d S )
Nr   r    r!   r  r#   r$   rP   z+cannot be performed against 'object' dtypesr   )rS   r   r   r   	TypeErrorr,   r  r/   r2   r2   r3   test_quantile_raises  s     r  c               	   C   s   t tddddddgtdd} | ddddddg}tjtdd |d W 5 Q R X tjtdd |d	 W 5 Q R X d S )
Nr   r   r   r   zGot '50.0' insteadr   rN   zGot '-1.0' insteadr   )	rS   r   r	  r   r,   r   r   r8  r  )r/   r   r2   r2   r3   $test_quantile_out_of_bounds_q_raises  s    "r  c                  C   sL   t dt jdg} tt| tdd}|d}tdD ]}|  q:d S )Nr   r   r"   r#   r   )	r@   rn  rA   rS   r   r	  r   r,   r  )r   r/   rl  r  r2   r2   r3   /test_quantile_missing_group_values_no_segfaults  s
    
r  c                  C   sn   t dt jdt jg} tt| tdd}|d }tjddgtj	ddgdddgd}t
|| d S )	Nr   r   r7   r"   r#   r%   r$   rv   )r@   rn  rA   rS   r   r	  r   r,   r  r   r-   r.   )r   r/   r1   rH   r2   r2   r3   2test_quantile_missing_group_values_correct_results  s      r  c               	   C   s   t jd} tddddddddg| d| dd}dd }dd	 }|d
||}tddgdd
d}tj	ddgd|d}t
|| d S )NiIr   r   rc   r  c                 S   s   | j  | j   S r   )r   r<   r   r>   )dfgbr2   r2   r3   rJ     s    ztest_pipe.<locals>.fc                 S   s   | d S )Nr   r2   )Zsrsr2   r2   r3   square  s    ztest_pipe.<locals>.squarer   rU  r   r&   g֮vq!@g	֯Y @r   rS  )r@   rT   r   r   rV   r,   piper   rS   r
   r-   rE   )Zrandom_stater/   rJ   r  r1   r)   rH   r2   r2   r3   	test_pipe  s    r  c               	   C   s   t dddddgdddddgdd	d
ddgd} dd }dd }dd }| d|d|d|d}t jdddgdd}t jdddg|d}t|| t ddddddg}||d d! }t jd"d#d$gt dddgd}t|| d S )%Nr   r   r   r   r   r   r_   g      $@g      Y@g     @@g      Yg     @)rj   r   r4  c                    s   | j  fdddd| jS )Nc                    s   | j   kS r   )r4  rw   rl  arg1r2   r3   r     r   z+test_pipe_args.<locals>.f.<locals>.<lambda>FrC  )filterr,   Zgrouper)r  r  r2   r  r3   rJ     s    ztest_pipe_args.<locals>.fc                 S   s   |   |      | S r   r{   )r  Zarg2r2   r2   r3   r     s    ztest_pipe_args.<locals>.gc                 S   s   | j | j | S r   )r   r4  )r/   Zarg3r2   r2   r3   rX    s    ztest_pipe_args.<locals>.hrj   r   r   r   r%   g#SgbeSir   r   r   r   c                 S   s   |   |   S r   )rC   r   r  r2   r2   r3   r     r   z test_pipe_args.<locals>.<lambda>r7   rc      )	rS   r   r,   r  r   r
   r-   rE   Z
Int64Index)r/   rJ   r   rX  r1   r)   rH   Zserr2   r2   r3   test_pipe_args  s"    " r  c                  C   sF   t dddddgdddddgd} | dd	  d d
ksBtd S )Nr   ij  i  io  i`  l    @~ )userconnectionsr  r  l    ,fL )rS   r   r,   rw   r=   r  r2   r2   r3   test_groupby_mean_no_overflow  s    r  r   functionc                 C   s   |dkrdnd}t j|gd td}tjdddgtdd	}tjd
|i|d}tj| ddd}t|| }t	
|| ||}t	
|| ||g}td
|fg|_t	
|| d S )Nr   r  rt   r   )r   r   r   r    r  r!   r   ZInt64)r@   rn  rl   rS   r   rU  r   r,   r*   r-   r.   rB   r   r   r(   )r   r  outputZarrr   rH   groupsr1   r2   r2   r3   ,test_apply_to_nullable_integer_returns_float   s    
r  )sr+   rp   dtior   	itertoolsr   rm   r   Znumpyr@   r   Zpandas.errorsr   ZpandasrS   r   r   r   r	   r
   r   r   r   r   Zpandas._testingZ_testingr-   Zpandas.core.nanopscorer   Zpandas.utilr   tdmarkZparametrizerA   r4   r?   rI   r<   r>   rC   r]   r   r   r   r   r   r   r   r   r   r   r   rw   rx   r   r   r|   r   paramZskip_if_no_scipyr   r   r   r   r   r  Zxfailr
  infr  r  r   r(  r*  r+  r/  r9  r=  r`  rO  rQ  rT  rV  r[  dater\  r]  ra  rg  rh  rj  rk  ro  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  ZNAr  r2   r2   r2   r3   <module>   s  , ? 


-


	-

c$$
$

$,
$

	'**
	 "&	!( 
