a
    j=ic                     @   s  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edd ejdg d	ejd
ddgejddd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S )+    N)ascii_lowercase)	DataFrame
MultiIndexNaTSeries	Timestamp
date_rangen
         m)r
   d   i  sortFT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}|rrtj||dd ntj||dd t| | d S )N)as_indexr   julier   T)dropF)Zcheck_names)	copygroupbynuniqueapplyr   Zreset_indextmassert_series_equalassert_frame_equal)dfkeysr   Zoriginal_dfgrleftrightr   r    r/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/groupby/test_nunique.pycheck_nunique   s    z2test_series_groupby_nunique.<locals>.check_nuniquez
2015-08-23r
   )Zperiodsr   )jimjoer   r%   r&            %         r      	   Fr   )T)	r   r   nprandomchoicelistr   randintloc)r	   r   r   r   r$   daysframer"   r!   r#   test_series_groupby_nunique   s&    r8   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   r9   Fr/   columnsxr   r'   r)   )r:   r;   )index)
r   r3   r   r   r   r   r@   namer   replace)r   expectedresultr"   r"   r#   test_nuniqueB   s    
"rE   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idrA   r=   rJ   rI   rA   r'   rH   )rA   r@   )
r   r   r   r   Zfrom_arraysrJ   rI   r   r   r   )datarD   r@   rC   r"   r"   r#   test_nunique_with_object[   s    rL   c                  C   s8   t dtd} | jdd }t ddd}t|| d S )NrA   )rA   Zdtyper   )levelint64)r   objectr   r   r   r   )rK   rD   rC   r"   r"   r#   test_nunique_with_empty_seriesn   s    rP   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)timerK   rT   h)freqrK   )r   r   Z	set_indexr   pdZGrouperr   r   r   r   r   testrD   rC   r"   r"   r#   test_nunique_with_timegrouperv   s    	
rZ   zkey, data, dropna, expected)r?   r?   r?   z
2019-01-01r'   r?   keyrA   rK   )r@   rA   i  )r?   r?   r?   yr]   r]   )r?   r?   r?   r?   r]   c                 C   s6   t | |d}|dgd j|d}t|| d S )N)r[   rK   r[   rK   r   )r   r   r   r   r   )r[   rK   r   rC   r   rD   r"   r"   r#   test_nunique_with_NaT   s    r^   c                  C   sN   t g dtjdgddd} | g d }t dg| jd}t|| d S )N)r'   r   r   r9   Zlevel_0r\   r=   )r   r   r   r   )r   rW   Indexr   r   r>   r   r   rX   r"   r"   r#   )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dater=   )r   r   r'   r   )r   r   r'   r\   )r   r   r   Z	transformr   r   r   )r   rD   rC   r"   r"   r#   $test_nunique_transform_with_datetime   s    rb   ) datetimedtstringr   numpyr0   ZpytestZpandasrW   r   r   r   r   r   r   Zpandas._testingZ_testingr   markZslowZparametrizeZaranger8   rE   rL   rP   rZ   r_   ra   r^   r`   rb   r"   r"   r"   r#   <module>   sV    ***
