U
    +¿ifÌ  ã                   @   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   sX  |   ddg¡}t ddg¡}|   |¡}| ddddg }t ||¡ t ||¡ |   dg¡}| dddd	dg }t ||¡ |   d
¡}| ddd	dg }t ||¡ t dg¡}tjtdd |   dg¡ W 5 Q R X tjtdd |   |¡ W 5 Q R X tjtdd |   d
dg¡ W 5 Q R X t ddg¡}tjtdd |   |¡ W 5 Q R X | j |dd}| ddddd	dg }t ||¡ | j |dd}| dddddg }t ||¡ | j d
dgdd}| ddd	dg }t ||¡ |   d
dg¡}| dddg }t ||¡ d
ddg}tjtdd |   |¡ W 5 Q R X | j |dd}| dddg }t ||¡ d S )N)ÚfooÚtwo)ZquxÚoner   é   é   é   Úbaré   é   r   )r   r   z^10$©Úmatchz^'two'$r   Úignore)Úerrors)Údropr   Úfrom_tuplesÚtmÚassert_index_equalÚpytestÚraisesÚKeyError)ÚidxÚdroppedÚindexZdropped2ÚexpectedZmixed_index© r   úW/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/indexes/multi/test_drop.pyÚ	test_drop   sP    


r   c                 C   sÞ   | |   d¡ }| d¡}|jdks&t‚tttdƒƒttdƒƒttdƒƒgt ddddddddg¡t ddddddddg¡t ddddddddg¡gdd	d
gd}| d¡}|j	dks¸t‚| d	¡}| d¡}| 
|¡sÚt‚d S )Nr   r   Úsecondr   r   r   r	   r   r   Úthree©ZlevelsÚcodesÚnames)r   r!   )Zget_locÚ	droplevelÚnameÚAssertionErrorr   r   ÚrangeÚnpÚarrayr$   Úequals)r   r   r   r   r   r   r   Útest_droplevel_with_namesJ   s     
 ýù	


r,   c                  C   sL  t ttdƒƒttdƒƒttdƒƒgt ddddddddg¡t ddddddddg¡t ddddddddg¡gdddgd	} | d d…  ddg¡}| d d…  d¡ d¡}| |¡s¶t‚| d d…  g ¡}| d d… }| |¡sât‚d
}tj	t
|d | d d…  dddg¡ W 5 Q R X tj	tdd | d d…  ddg¡ W 5 Q R X d S )Nr   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'Úfour)r   r   r(   r)   r*   r%   r+   r'   r   r   Ú
ValueErrorr   )r   r   r   Úmsgr   r   r   Útest_droplevel_list`   s(     ýù
ÿ"r0   c               	   C   s¾   dddg} t j| ddgd}| ¡ s(t‚tjddddgd	d
ddgd	dddggd}|jdddgdd}| ¡ }|j}| ¡ r€t‚t	 
||¡ t	 t¡ t	 
| d¡| d¡¡ W 5 Q R X d S )N)ÚaÚ )Úb1Úc1)Úb2Úc2ÚbÚc©r$   r1   Údr   r3   r4   r	   r5   r6   r   )ÚcolumnsÚdata)r   r;   Úvalues)r   r   Z_is_lexsortedr'   Ú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    

 ÿr?   c              	   C   sN   t jd| fgddgd}d}tjt|d |jt d¡dd W 5 Q R X d S )	NZblahr&   Údater9   z@labels \[Timestamp\('2001-01-01 00:00:00'\)\] not found in levelr   Z2001©Úlevel)r   r   r   r   r   r   r>   Ú	Timestamp)Znulls_fixtureÚmir/   r   r   r   Útest_drop_with_nan_in_index•   s    rE   c               	   C   sV   t  dddg¡} t ¡  t dt¡ |  d¡}W 5 Q R X t  dg¡}t ||¡ d S )N©r   r   )r   r	   r   )	r   r   ÚwarningsÚcatch_warningsÚsimplefilterr   r   r   r   )rD   Úresultr   r   r   r   Ú'test_drop_with_non_monotonic_duplicates   s    
rK   c               	   C   s  t  dddg¡} d}tjt|d | jddd W 5 Q R X tjt|d | jd	dgdd W 5 Q R X d
}tjt|d | jtjgdd W 5 Q R X tjt|d | jtjd	ddgdd W 5 Q R X t  tjd	fdg¡} d}tjt|d | jtjd	dgdd W 5 Q R X d S )NrF   )r   r   )r	   r   zlabels \[4\] not found in levelr   r   r   rA   r   z!labels \[nan\] not found in levelr   r	   z!labels \['a'\] not found in levelr1   )r   r   r   r   r   r   r)   Únan)rD   r/   r   r   r   Ú1test_single_level_drop_partially_missing_elements§   s    "rM   c                  C   s8   t jdgdd} |  g ¡}tdgdd}t ||¡ d S )N)r   )r7   r9   r   r7   )r&   )r   r   r%   r   r   r   )r   rJ   r   r   r   r   Ú#test_droplevel_multiindex_one_level¼   s    
rN   )rG   Únumpyr)   r   Zpandas.errorsr   Zpandasr>   r   r   Zpandas._testingZ_testingr   r   r,   r0   r?   rE   rK   rM   rN   r   r   r   r   Ú<module>   s   :
