a
    üGbÌ  ã                   @   sŒ   d dl Z d dlZd dlZd dlmZ d dlZd dlmZm	Z	 d dl
mZ dd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )é    N)ÚPerformanceWarning)ÚIndexÚ
MultiIndexc                 C   sž  |   ddg¡}t ddg¡}|   |¡}| g d¢ }t ||¡ t ||¡ |   dg¡}| g d¢ }t ||¡ |   d¡}| g d¢ }t ||¡ t dg¡}tjtd	d
 |   dg¡ W d   ƒ n1 sÌ0    Y  tjtd	d
 |   |¡ W d   ƒ n1 s0    Y  tjtdd
 |   ddg¡ W d   ƒ n1 sD0    Y  t ddg¡}tjtd	d
 |   |¡ W d   ƒ n1 sŒ0    Y  | j |dd}| g d¢ }t ||¡ | j |dd}| g d¢ }t ||¡ | j ddgdd}| g d¢ }t ||¡ |   ddg¡}| g d¢ }t ||¡ g d¢}tjtdd
 |   |¡ W d   ƒ n1 sj0    Y  | j |dd}| g d¢ }t ||¡ d S )N)ÚfooÚtwo©ZquxÚone)r   é   é   é   Úbar)r   é   r
   é   r   r   )r	   r
   r   r   )r   r   z^10$©Úmatchz^'two'$r   Úignore)Úerrors)r   r   r	   r
   r   r   )r   r   r	   r
   r   )r	   r
   r   )r   r   r   )Údropr   Úfrom_tuplesÚtmÚassert_index_equalÚpytestÚraisesÚKeyError)ÚidxÚdroppedÚindexZdropped2ÚexpectedZmixed_index© r   úClib/python3.9/site-packages/pandas/tests/indexes/multi/test_drop.pyÚ	test_drop   sP    

**.**r    c                 C   s¸   | |   d¡ }| d¡}|jdks&J ‚tttdƒƒttdƒƒttdƒƒgt g d¢¡t g d¢¡t g d¢¡gg d¢d	}| d¡}|jd
ks’J ‚| d¡}| d¡}| 	|¡s´J ‚d S )Nr   r   Úsecondr   ©r   r   r   r	   r	   r	   r
   r
   ©r   r   r   r   r   r   r   r   ©r   r   r   r   r   r   r   r   ©r   r   Úthree©ZlevelsZcodesÚnames)r   r&   r   r   )
Zget_locÚ	droplevelÚnamer   r   ÚrangeÚnpÚarrayr(   Úequals)r   r   r   r   r   r   r   Útest_droplevel_with_namesJ   s     
 ýù	


r/   c                  C   sN  t ttdƒƒttdƒƒttdƒƒgt g d¢¡t g d¢¡t g d¢¡gg d¢d} | d d…  dd	g¡}| d d…  d¡ d
¡}| |¡sJ ‚| d d…  g ¡}| d d… }| |¡s¼J ‚d}tjt	|d& | d d…  g d¢¡ W d   ƒ n1 sú0    Y  tjt
dd& | d d…  d	dg¡ W d   ƒ n1 s@0    Y  d S )Nr   r"   r#   r$   r%   r'   r	   r&   r   r   zSCannot remove 3 levels from an index with 3 levels: at least one level must be leftr   z'Level four not found'Zfour)r   r   r+   r,   r-   r)   r.   r   r   Ú
ValueErrorr   )r   r   r   Úmsgr   r   r   Útest_droplevel_list`   s(     ýù
ÿ4r2   c                  C   sÄ   g d¢} t j| ddgd}| ¡ s&J ‚tjg d¢g d¢g d¢gd}|jd	ddgd
d}| ¡ }|j}| ¡ rrJ ‚t 	||¡ t 
t¡( t 	| d	¡| d	¡¡ W d   ƒ n1 s¶0    Y  d S )N))ÚaÚ )Úb1Úc1)Úb2Úc2ÚbÚc©r(   )r3   r9   r:   Úd)r   r5   r6   r
   )r   r7   r8   r   )ÚcolumnsÚdatar3   r<   )r   r=   Úvalues)r   r   Z_is_lexsortedÚpdZ	DataFrameZpivot_tableZreset_indexr=   r   r   Zassert_produces_warningr   r   )ZtuplesZlexsorted_miZdfZnot_lexsorted_mir   r   r   Útest_drop_not_lexsorted~   s    ÿrA   c                 C   sb   t jd| fgddgd}d}tjt|d$ |jt d¡dd W d   ƒ n1 sT0    Y  d S )	NZblahr*   Údater;   z@labels \[Timestamp\('2001-01-01 00:00:00'\)\] not found in levelr   Z2001©Úlevel)r   r   r   r   r   r   r@   Z	Timestamp)Znulls_fixtureÚmir1   r   r   r   Útest_drop_with_nan_in_index•   s    rF   c                  C   sh   t  g d¢¡} t ¡ & t dt¡ |  d¡}W d   ƒ n1 sB0    Y  t  dg¡}t ||¡ d S )N)©r   r	   ©r	   r
   rG   r   rG   rH   )	r   r   ÚwarningsÚcatch_warningsÚsimplefilterr   r   r   r   )rE   Úresultr   r   r   r   Ú'test_drop_with_non_monotonic_duplicates   s    
(rM   c                  C   s|  t  g d¢¡} d}tjt|d | jddd W d   ƒ n1 sD0    Y  tjt|d" | jddgdd W d   ƒ n1 s„0    Y  d}tjt|d" | jtjgdd W d   ƒ n1 sÈ0    Y  tjt|d( | jtjdd	d
gdd W d   ƒ n1 s0    Y  t  tjdfdg¡} d}tjt|d& | jtjddgdd W d   ƒ n1 sn0    Y  d S )N)rG   )r	   r	   )r
   r	   zlabels \[4\] not found in levelr   r   r   rC   r   z!labels \[nan\] not found in levelr	   r
   rG   z!labels \['a'\] not found in levelr3   )r   r   r   r   r   r   r,   Únan)rE   r1   r   r   r   Ú1test_single_level_drop_partially_missing_elements§   s    ,008rO   c                  C   s8   t jdgdd} |  g ¡}tdgdd}t ||¡ d S )N)r	   )r9   r;   r	   r9   )r*   )r   r   r)   r   r   r   )r   rL   r   r   r   r   Ú#test_droplevel_multiindex_one_level¼   s    
rP   )rI   Znumpyr,   r   Zpandas.errorsr   Zpandasr@   r   r   Zpandas._testingZ_testingr   r    r/   r2   rA   rF   rM   rO   rP   r   r   r   r   Ú<module>   s   :
