o
    ҷh                     @   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   sb  d}d}t ddd}ttjdtt|tjd||tjdd||d}|rh|	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}|rtj||dd ntj||dd t||	 d S )Nd   
   z
2015-08-23)periods   r   )r   r   julier         r      %   r            	   )r   r	   r
   T)dropF)check_names)r   r   nprandomdefault_rngchoicelistr   integersastypefloatloccopygroupbynuniqueapplyr   reset_indextmassert_series_equalassert_frame_equal)r	   r
   r   r   r   nmdaysdforiginal_dfgrleftright r9   T/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/groupby/test_nunique.pytest_series_groupby_nunique   s6   r;   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 )Nabbaccabxaccabbacx)ABCabc)r   r   r   )r   r   r   r?   F)r   columnsxr   r   r   )r@   rA   )index)
r   r$   r*   r+   r.   r0   rF   namer   replace)r4   expectedresultr9   r9   r:   test_nunique;   s   
"rK   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   Alice)   r   Bob)i,  r   Charlie)ip   Dan)i     Edith)amountidrG   rC   rU   rT   rG   r   rR   )rG   rF   )
r   r*   r+   r   from_arraysrU   rT   r   r.   r/   )datarJ   rF   rI   r9   r9   r:   test_nunique_with_objectT   s   rX   c                  C   s8   t dtd} | jdd }t ddd}t|| d S )NrG   )rG   dtyper   )levelint64)r   objectr*   r+   r.   r/   )rW   rJ   rI   r9   r9   r:   test_nunique_with_empty_seriesg   s   r]   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)timerW   ra   h)freqrW   )r   r   	set_indexr*   pdGrouperr+   r,   r   r.   r/   testrJ   rI   r9   r9   r:   test_nunique_with_timegroupero   s   	
ri   zkey, data, dropna, expected)rE   rE   rE   z
2019-01-01r   rE   keyrG   rW   )rF   rG   i  )rE   rE   rE   yrl   r   rl   )rE   rE   rE   rE   rl   c                 C   s6   t | |d}|dgd j|d}t|| d S )N)rj   rW   rj   rW   r   )r   r*   r+   r.   r/   )rj   rW   r
   rI   r4   rJ   r9   r9   r:   test_nunique_with_NaT   s   rm   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   r?   level_0rk   rC   )r   r   r   r   r   )rF   rD   )
r   re   Indexr*   r+   r    arrayrD   r.   r0   rg   r9   r9   r:   )test_nunique_preserves_column_level_names   s   rq   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daterC   )r   r   r   r+   )r   r   r   rk   )r   r   r*   	transformr   r.   r/   )r4   rJ   rI   r9   r9   r:   $test_nunique_transform_with_datetime   s   rt   c                 C   sn   t dgd}|d d }|j|| d}| }| r't g |d d dd}nt dg|dd}t|| d S )Nr   categoryr   )observedr[   )rF   rY   )r   r&   r*   r+   r.   r/   )rv   catsergbrJ   rI   r9   r9   r:   test_empty_categorical   s   rz   ) datetimedtstringr   numpyr    pytestpandasre   r   r   r   r   r   r   pandas._testing_testingr.   markslowparametrizer;   rK   rX   r]   ri   ro   rr   rm   rq   rt   rz   r9   r9   r9   r:   <module>   s\     "**
