U
    +if                     @   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_dfgrleftrightr   r    T/home/mars/bis/venv/lib/python3.8/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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   r9   Fr/   columnsxr   r)   )r:   r;   )index)
r   r3   r   r   r   r   r@   namer   replace)r   expectedresultr"   r"   r#   test_nuniqueB   s     
"rE   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idrA   r=   )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   )levelZint64)r   objectr   r   r   r   )rK   rD   rC   r"   r"   r#   test_nunique_with_empty_seriesn   s    rO   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)timerK   rS   h)freqrK   )r   r   Z	set_indexr   pdZGrouperr   r   r   r   r   testrD   rC   r"   r"   r#   test_nunique_with_timegrouperv   s    	
rY   zkey, data, dropna, expectedr?   z
2019-01-01r'   keyrA   rK   )r@   rA   i  yc                 C   s6   t | |d}|dgd j|d}t|| d S )N)rZ   rK   rZ   rK   r   )r   r   r   r   r   )rZ   rK   r   rC   r   rD   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   r9   Zlevel_0r[   r=   r   )r   rV   Indexr   r   r>   r   r   rW   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   r[   )r   r   r   Z	transformr   r   r   )r   rD   rC   r"   r"   r#   $test_nunique_transform_with_datetime   s    ra   ) datetimedtstringr   numpyr0   ZpytestZpandasrV   r   r   r   r   r   r   Zpandas._testingZ_testingr   markZslowZparametrizeZaranger8   rE   rL   rO   rY   r^   r`   r]   r_   ra   r"   r"   r"   r#   <module>   sV    ***
