U
    sVc                     @   sp   d Z ddlmZ ddlZddlZddlZddlm	Z
 ejdd Zejdd Zejdd	 ZG d
d dZdS )z
Note: for naming purposes, most tests are title with as e.g. "test_nlargest_foo"
but are implicitly also testing nsmallest_foo.
    )ascii_lowercaseNc                   C   s>   t jdddddgdddddgdddddgddddddgdS )	N            r      abcindex)pd	DataFrame r   r   L/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/frame/methods/test_nlargest.pydf_duplicates   s    (r   c                   C   s4   t tjdttd d tjdddS )N
   Zfloat64r   )r   r   nprandomZpermutationlistr   astyper   r   r   r   
df_strings   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S )Nr   r   r   g      @g      @g      @abccategory      	   Z20130101)periodsz
US/Eastern)r   tzz1 ss)r   freq)	groupintfloatstringcategory_stringcategory_intdatetime
datetimetz	timedeltar"   r#   r$   r%   r&   r'   r(   r)   r*   columns)r   r   r   ZSeriesr   Z
date_rangeZtimedelta_ranger   r   r   r   df_main_dtypes!   s,    r-   c                   @   s.  e Zd Zejddgdgddgddgddg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gejdedddd	 Zejd
ddgddggdd Zdd Z	dd Z
dd Zejddddgdddgdgdgddgddggejdedddd Zdd Zdd Zdd Zdd  Zd!S )"TestNLargestNSmallestorderr	   r   r
   nr      c           
   	   C   s   |}d|krDd| d}t jt|d t|||| W 5 Q R X n8|dk}t||||}|j||d|}	t||	 d S )Nr
   z0Column 'b' has dtype object, cannot use method '' with this dtypematch	nsmallest	ascending)pytestraises	TypeErrorgetattrsort_valuesheadtmassert_frame_equal)
selfr   nselect_methodr0   r/   df	error_msgr7   resultexpectedr   r   r   test_nlargest_nA   s    
z%TestNLargestNSmallest.test_nlargest_nr,   r"   r&   r%   c              	   C   s|   |}|d }d| d|| j  d| d}|dddd	d
ddd}tjt|d t||d| W 5 Q R X d S )Nr   zColumn 'z' has dtype z, cannot use method 'r2   (z\()z\)[z\[]z\]r3   r   )Zdtypereplacer8   r9   r:   r;   )r@   r-   rA   r,   rB   colrC   r   r   r   test_nlargest_errore   s"       z)TestNLargestNSmallest.test_nlargest_errorc                 C   s@   |}| dtt|ddh  |dtt|ddh  d S )Nr   r&   r%   )r5   r   setnlargest)r@   r-   rB   r   r   r   test_nlargest_all_dtypesy   s    z.TestNLargestNSmallest.test_nlargest_all_dtypesc              	   C   s   t ddddddgddddddgd}|jdddgd}t jddddgddddgdddd	dgd
}t|| |jdddgd}t jddddgddddgddddd	gd
}t|| d S )Nr   r   r   r	   r
   r   r	   r
   r+   r   r   r   r   r   rO   r>   r?   r5   r@   rB   rD   rE   r   r   r   +test_nlargest_duplicates_on_starter_columns~   s    ( 
 
zATestNLargestNSmallest.test_nlargest_duplicates_on_starter_columnsc                 C   s   t dgd dddddgd}|dd}t jdgd dddgddddgd	}t|| |dd}t dgd dddgd}t|| d S )
Nr   r   r   r   r   rQ   r	   r   r   rR   rS   r   r   r    test_nlargest_n_identical_values   s     &z6TestNLargestNSmallest.test_nlargest_n_identical_values   c                 C   s\   |}| ||}|||}t|| |||}|j|dd|}t|| d S )NFr6   )r5   r<   r=   r>   r?   rO   )r@   r   r0   r/   rB   rD   rE   r   r   r   test_nlargest_n_duplicate_index   s    z5TestNLargestNSmallest.test_nlargest_n_duplicate_indexc                 C   s   t ddddddddgdddddd	dd
gd}|jdddd}t ddddddddddddd	dd
dd}t|| |jdddd}t ddddddddd	dd
dd}t|| d S )Nr   r   r   r   r   r   r   r   2      rQ   r	   all)Zkeep)r   r   r   r   r   rV   r   )r   r   r   rV   r   rR   rS   r   r   r   %test_nlargest_duplicate_keep_all_ties   s"    (z;TestNLargestNSmallest.test_nlargest_duplicate_keep_all_tiesc                 C   s   t jt jdgddggddgddgddgd	d
ggd}|dd}|jdddg }t|| |dd}|jdddg }t|| d S )Nxr	   r
   gQ?gp=
ף?gQ?g      ?gffffff?g333333?gQ?)r,   datar   )r\   r	   r   r   )r\   r
   r   )	r   r   Z
MultiIndexZfrom_productr5   Zilocr>   r?   rO   rS   r   r   r   &test_nlargest_multiindex_column_lookup   s    z<TestNLargestNSmallest.test_nlargest_multiindex_column_lookupc                 C   sJ   t tjtjddddg}|dd}|jdddd}t|| d S )Nr   r   r   r   r   Fr6   )	r   r   r   nanrO   r<   r=   r>   r?   rS   r   r   r   test_nlargest_nan   s    z'TestNLargestNSmallest.test_nlargest_nanc              
   C   s   t jdddddd dgdddddddgdddddddgdtdd	}|jdd
dgd}t jdddddgdddddgdddddgdtdd	d
di}t|| d S )Nr   r   r   r   r   r   rV   r   r   r	   r
   r+   r$   )r   r   ranger5   r   r>   r?   rS   r   r   r   "test_nsmallest_nan_after_n_element   s$    z8TestNLargestNSmallest.test_nsmallest_nan_after_n_elementN)__name__
__module____qualname__r8   markZparametrizera   rF   rM   rP   rT   rU   rW   r[   r^   r`   rb   r   r   r   r   r.   =   sH    
&r.   )__doc__r%   r   Znumpyr   r8   Zpandasr   Zpandas._testingZ_testingr>   Zfixturer   r   r-   r.   r   r   r   r   <module>   s   



