o
    5c                     @   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g dg dg ddg ddS )N)            r   )r   r   r   r   r   )r   r   r      r   abc)r   r   r   r   r   index)pd	DataFrame r   r   ^/var/www/html/gps/gps/lib/python3.10/site-packages/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
   float64r   )r   r   nprandompermutationlistr   astyper   r   r   r   
df_strings   s   
r   c                   C   sl   t jg dg dg dtdt tddg dt jddd	t jddd
dt jddddd	g ddS )N)r   r   r   r   r   r   )g      @g      @g      @abccategory)      	   20130101r   )periodsz
US/Eastern)r"   tzz1 ss)r"   freq)	groupintfloatstringcategory_stringcategory_intdatetime
datetimetz	timedeltacolumns)r   r   r   Seriesr   
date_rangetimedelta_ranger   r   r   r   df_main_dtypes!   s   r4   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g dg dg dg dg d	g d
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g dg d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
   r   )r   r	   r
   )r   r
   r	   )r
   r   r	   )r
   r	   r   )r
   r   r   nr      c           
      C   s   |}d|v r.d| d}t jt|d t|||| W d    d S 1 s'w   Y  d S |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_methodr7   r6   df	error_msgr>   resultexpectedr   r   r   test_nlargest_nA   s   "z%TestNLargestNSmallest.test_nlargest_nr0   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 d    d S 1 sBw   Y  d S )Nr   zColumn 'z' has dtype z, cannot use method 'r9   (z\()z\)[z\[]z\]r:   r   )dtypereplacer?   r@   rA   rB   )rG   r4   rH   r0   rI   colrJ   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)   )r<   r   setnlargest)rG   r4   rI   r   r   r   test_nlargest_all_dtypesy   s    z.TestNLargestNSmallest.test_nlargest_all_dtypesc                 C   s   t g dg dd}|jdddgd}t jg dg d	dg d
d}t|| |jdddgd}t jg dg ddg dd}t|| d S )N)r   r   r   r   r   r   )r   r   r   r   r   r   r	   r
   r   r	   r
   r/   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   rW   rE   rF   r<   rG   rI   rK   rL   r   r   r   +test_nlargest_duplicates_on_starter_columns~   s   zATestNLargestNSmallest.test_nlargest_duplicates_on_starter_columnsc                 C   s   t dgd g dd}|dd}t jdgd g ddg dd	}t|| |dd}t dgd g dd}t|| d S )
Nr   r   r   r   r   r   r   rY   r   r	   r   )r   r   r   r   rZ   r[   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 )NFr=   )r<   rC   rD   rE   rF   rW   )rG   r   r7   r6   rI   rK   rL   r   r   r   test_nlargest_n_duplicate_index   s   z5TestNLargestNSmallest.test_nlargest_n_duplicate_indexc                 C   s   t g dg d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 )N)r   r   r   r   r   r   r   r   )r   r    r   r   r   2   r      rY   r   r	   all)keepr   r   )r   r   r   r   r   r_   r   r   r    r   ra   rb   r   )r   r   r   r_   r   r   rZ   r[   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g d }t|| |dd}|jg d }t|| d S )Nxr	   r
   gQ?gp=
ף?gQ?g      ?gffffff?g333333?gQ?)r0   datar   )rf   r	   )r   r   r   )rf   r
   )r   r   r   )	r   r   
MultiIndexfrom_productr<   ilocrE   rF   rW   r[   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   Fr=   )	r   r   r   nanrW   rC   rD   rE   rF   r[   r   r   r   test_nlargest_nan   s   z'TestNLargestNSmallest.test_nlargest_nanc                 C   sx   t jg dg dg ddtdd}|jddd	gd
}t jg dg dg ddtddddi}t|| d S )N)r   r   r   r   r   Nr   )r   r_   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r	   r
   r/   r]   )r   r_   r   r   r   )r   r   r   r   r   r(   )r   r   ranger<   r   rE   rF   r[   r   r   r   "test_nsmallest_nan_after_n_element   s$   
z8TestNLargestNSmallest.test_nsmallest_nan_after_n_elementN)__name__
__module____qualname__r?   markparametrizern   rM   rU   rX   r\   r^   r`   re   rk   rm   ro   r   r   r   r   r5   =   sH    
"r5   )__doc__r)   r   numpyr   r?   pandasr   pandas._testing_testingrE   fixturer   r   r4   r5   r   r   r   r   <module>   s    



