U
    sVc                     @   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dd	d
g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dddgedeedgdedgejdgdddd fdddged!ddeed!ddgdedgejdgdddd fdddd"d"g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ddddd"g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
         md   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_dfZgrleftrightr   r    E/tmp/pip-unpacked-wheel-xj8nt62q/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&    r7   c                  C   s  t tdtdtdd} t tddddgdddg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abcr&   r   r8   Fr.   columnsxr   r(   )r9   r:   )index)
r   r2   r   r   r   r   r?   namer   replace)r   expectedresultr!   r!   r"   test_nuniqueB   s     
"rD   c                  C   s   t dddgdddgddd	gd
ddgdddggdddgd} | ddgd  }t| j| jg}tdgd d|d}t	|| d S )Nr   r&   ZAlice   r   ZBobi,  r(   ZCharlieip   ZDani     ZEdithamountidr@   r<   )r@   r?   )
r   r   r   r   Zfrom_arraysrI   rH   r   r   r   )datarC   r?   rB   r!   r!   r"   test_nunique_with_object[   s    rK   c                  C   s8   t dtd} | jdd }t ddd}t|| d S )Nr@   )r@   Zdtyper   )levelZint64)r   objectr   r   r   r   )rJ   rC   rB   r!   r!   r"   test_nunique_with_empty_seriesn   s    rN   c                  C   st   t tdtdtdgdddg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)timerJ   rR   h)freqrJ   )r   r   Z	set_indexr   pdZGrouperr   r   r   r   r   testrC   rB   r!   r!   r"   test_nunique_with_timegrouperv   s    	
rX   zkey, data, dropna, expectedr>   z
2019-01-01r&   keyr@   rJ   )r?   r@   i  yc                 C   s6   t | |d}|dgd j|d}t|| d S )N)rY   rJ   rY   rJ   r   )r   r   r   r   r   )rY   rJ   r   rB   r   rC   r!   r!   r"   test_nunique_with_NaT   s    r\   c                  C   sR   t dddgtjdgddd} | dddg }t dg| jd}t|| d S )Nr&   r   r8   Zlevel_0rZ   r<   r   )r   rU   Indexr   r   r=   r   r   rV   r!   r!   r"   )test_nunique_preserves_column_level_names   s    r^   c                  C   sP   t tdddgd} | dddgd d}tdddgdd	}t|| d S )
Nz
2008-12-31z
2009-01-02dater<   r   r&   r   r   rZ   )r   r   r   Z	transformr   r   r   )r   rC   rB   r!   r!   r"   $test_nunique_transform_with_datetime   s    r`   ) datetimedtstringr   Znumpyr/   ZpytestZpandasrU   r   r   r   r   r   r   Zpandas._testingZ_testingr   markZslowZparametrizeZaranger7   rD   rK   rN   rX   r]   r_   r\   r^   r`   r!   r!   r!   r"   <module>   sV    ***
