a
    d                     @   s2  d dl Zd dlmZ d dlZd dl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 ejjejdddgejdddgejdddgejd	ddgejd
dgddggdd Zdd Zdd Zdd Zdd Zejdg dedeedgdedgejdgddddfg ded ddeed ddgdedgejdgddddfg d!ed ddeed ddeed ddgded"d"gejdd#gddddfg d$ed ddeed ddeed ddgded"dgejdd#gddddfgd%d& Zd'd( Zd)d* Zd+d, ZdS )-    N)ascii_lowercase)	DataFrame
MultiIndexNaTSeries	Timestamp
date_rangesortFTdropnaas_indexwith_nankeysjoejimc                 C   sf  d}d}t ddd}ttjdtt|tjd||tjdd||d}|r|	dt
i}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< | }	|j||| d}
|
d j|d}|j||| d}
|
d jtj|d}|s.|jdd}|rFtj||dd ntj||dd t||	 d S )Nd   
   z
2015-08-23)Zperiods   r   )r   r   julier         r      %   r            	   )r   r	   r
   T)dropF)Zcheck_names)r   r   nprandomZdefault_rngchoicelistr   Zintegersastypefloatloccopygroupbynuniqueapplyr   Zreset_indextmassert_series_equalassert_frame_equal)r	   r
   r   r   r   nmdaysdfZoriginal_dfZgrleftright r2   j/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/groupby/test_nunique.pytest_series_groupby_nunique   s6    r4   c                  C   s  t tdtdtdd} t tdg dg dd}| jdd	d
 }t|| td|_d|j_|jdd}| d }t|| | 	dd idjd	d}t|| t dgd dgd dtdd}d|j_| 	dd id }t|| d S )NZabbaccZabxaccZabbacx)ABCabc)r   r   r   )r   r   r   r5   F)r   columnsxr   r   r   )r6   r7   )index)
r   r!   r&   r'   r)   r+   r<   namer   replace)r/   expectedresultr2   r2   r3   test_nunique;   s    
"rA   c                  C   sz   t g dg dg dg dg dgg dd} | dd	gd
  }t| j| jg}tdgd d
|d}t	|| d S )N)r   r   ZAlice)   r   ZBob)i,  r   ZCharlie)ip   ZDan)i     ZEdith)amountidr=   r9   rF   rE   r=   r   rD   )r=   r<   )
r   r&   r'   r   Zfrom_arraysrF   rE   r   r)   r*   )datar@   r<   r?   r2   r2   r3   test_nunique_with_objectT   s    rH   c                  C   s8   t dtd} | jdd }t ddd}t|| d S )Nr=   )r=   dtyper   )levelint64)r   objectr&   r'   r)   r*   )rG   r@   r?   r2   r2   r3   test_nunique_with_empty_seriesg   s    rM   c                  C   sr   t tdtdtdgg ddd} | tjddd	  }| tjddd	 tj}t	
|| d S )
Nz2016-06-28 09:35:35z2016-06-28 16:09:30z2016-06-28 16:46:28)123)timerG   rQ   h)freqrG   )r   r   Z	set_indexr&   pdZGrouperr'   r(   r   r)   r*   testr@   r?   r2   r2   r3   test_nunique_with_timegroupero   s    	
rW   zkey, data, dropna, expected)r;   r;   r;   z
2019-01-01r   r;   keyr=   rG   )r<   r=   i  )r;   r;   r;   yrZ   r   rZ   )r;   r;   r;   r;   rZ   c                 C   s6   t | |d}|dgd j|d}t|| d S )N)rX   rG   rX   rG   r   )r   r&   r'   r)   r*   )rX   rG   r
   r?   r/   r@   r2   r2   r3   test_nunique_with_NaT   s    r[   c                  C   sX   t g dtjdgddd} | g d }t dgtdg| jd	}t	|| d S )
N)r   r   r   r5   Zlevel_0rY   r9   )r   r   r   r   r   )r<   r:   )
r   rT   Indexr&   r'   r   arrayr:   r)   r+   rU   r2   r2   r3   )test_nunique_preserves_column_level_names   s    r^   c                  C   sL   t tdddgd} | g dd d}tg ddd}t|| d S )	Nz
2008-12-31z
2009-01-02dater9   )r   r   r   r'   )r   r   r   rY   )r   r   r&   Z	transformr   r)   r*   )r/   r@   r?   r2   r2   r3   $test_nunique_transform_with_datetime   s    r`   c                 C   sn   t dgd}|d d }|j|| d}| }| rNt g |d d dd}nt dg|dd}t|| d S )Nr   categoryr   )observedrK   )r<   rI   )r   r"   r&   r'   r)   r*   )rb   catZsergbr@   r?   r2   r2   r3   test_empty_categorical   s    re   ) datetimedtstringr   numpyr   ZpytestZpandasrT   r   r   r   r   r   r   Zpandas._testingZ_testingr)   markZslowZparametrizer4   rA   rH   rM   rW   r\   r_   r[   r^   r`   re   r2   r2   r2   r3   <module>   sZ    "**
