U
    ¾mœdYM  ã                   @   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	m
Z
mZmZmZ d dlmZ ej dddg¡dd„ ƒZej d	d
dg¡dd„ ƒZdd„ ZG dd„ dƒZdS )é    N)ÚPerformanceWarning)Ú	DataFrameÚDatetimeIndexÚIndexÚ
MultiIndexÚSeriesÚ	Timestampzmsg,labels,level)zlabels \[4\] not found in levelé   Úa)zlabels \[7\] not found in levelé   Úbc              	   C   sš   t jdddgdddggddgd	�}td
ddg|d�}td
ddg|d�}tjt| d�� |j||d� W 5 Q R X tjt| d�� |j||d� W 5 Q R X d S )Né   é   é   r	   é   é   r
   r   ©Únamesé
   é   é   ©Úindex©Úmatch©Úlevel)r   Úfrom_arraysr   r   ÚpytestÚraisesÚKeyErrorÚdrop)ÚmsgÚlabelsr   ÚmiÚsÚdf© r'   ú]/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/frame/methods/test_drop.pyÚ0test_drop_raise_exception_if_labels_not_in_level   s    	"r)   zlabels,level)r	   r
   )r   r   c                 C   s‚   t jdddgdddggddgd	�}td
ddg|d�}td
ddg|d�}|j| |dd�}t ||¡ |j| |dd�}t ||¡ d S )Nr   r   r   r	   r   r   r
   r   r   r   r   r   r   Úignore)r   Úerrors)r   r   r   r   r!   ÚtmZassert_series_equalÚassert_frame_equal)r#   r   r$   r%   r&   Z
expected_sZexpected_dfr'   r'   r(   Útest_drop_errors_ignore'   s    "r.   c               	   C   sl   t tj dd¡dddgtjdddd�d	�} | jd
dddg  ¡ } tj	t
dd�� |  ddg¡ W 5 Q R X d S )Nr   r   r
   r   ÚcZ2012ÚH)ÚfreqZperiods©Úcolumnsr   r   r   únot found in axisr   )r   ÚnpÚrandomÚrandnÚpdÚ
date_rangeÚilocÚcopyr   r   r    r!   )r&   r'   r'   r(   Ú9test_drop_with_non_unique_datetime_index_and_invalid_keys5   s    ýr<   c                
   @   s,  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
dgd	d
dggZej	 
deeddgd�eeddgd�eeddgd� dd	g¡eeddgd� dd	g¡g¡dd„ ƒZej	 
dd	d
dgd	d	d
gg¡ej	 
dg d	gd
gg¡dd„ ƒƒZej	 
dd	d
dgd	d
d
gg¡ej	 
dd	dgddgg¡dd„ ƒƒZej	 
dg i e g ¡eg dd�eg ƒeg ƒg¡dd„ ƒZd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zej	 
d.d/d0d1d2g¡ej	 
d3d4d5g¡d6d7„ ƒƒZd8d9„ Zej	 
d:d;d;gg¡d<d=„ ƒZd>d?„ Z d@dA„ Z!dBdC„ Z"dDdE„ Z#ej	 
dFddgdfdgdGfg¡dHdI„ ƒZ$dGS )JÚTestDataFrameDropc              	   C   s6  t dddgdddgdddggdd	d
gdddgd�}d\|j_|j_| d	¡}|jddd�}| ¡ | ¡  }}|jd	dd�}|d ks†t‚|jdddd�}|d ks¢t‚||||fD ]$}|jjdksÂt‚|jjdks®t‚q®t|jƒdddgksìt‚d}tj	t
|d�� | dg¡ W 5 Q R X tj	t
|d�� |jdgdd� W 5 Q R X |jdgdd�}	tdd	d
gdd�}
t |	j|
¡ |jd	dgdd�}	tdd
gdd�}
t |	j|
¡ |jdgddd�}	tdddgdd�}
t |	j|
¡ |jddgddd�}	tddgdd�}
t |	j|
¡ |jg dd�}	tdd	d
gdd�}
t |	j|
¡ d S )Nr   r   r   r	   r   r   r   r
   r   r/   ÚdÚeÚf©r   r3   )ÚfirstÚsecond©ÚaxisT)Úinplace©rE   rF   rB   rC   z\['g'\] not found in axisr   Úgr*   ©r+   ©Úname©rE   r+   )r   r   rK   r3   r!   r;   ÚAssertionErrorÚlistr   r   r    r   r,   Úassert_index_equal)Úselfr&   Zdf_dropped_bZdf_dropped_eZdf_inplace_bZdf_inplace_eÚreturn_valueÚobjr"   ZdroppedÚexpectedr'   r'   r(   Útest_drop_namesF   sJ    ý
z!TestDataFrameDrop.test_drop_namesc              	   C   s>  t ddddgddddgdœƒ}t |jddd�|d	g ¡ t |jdd	gd
d�|g  ¡ t |jdddgdd�|jdgd d …f ¡ t |jddgdd�|jddgd d …f ¡ tjtdd�� | d¡ W 5 Q R X tjtdd�� |jddd� W 5 Q R X tjtdd�� | ddg¡ W 5 Q R X tjtdd�� |jddgdd� W 5 Q R X tjtdd�� |jdddgdd� W 5 Q R X t |jddd�|¡ t |jddgdd�|jdddgd d …f ¡ t |jdddd�|¡ t |jddgddd�|d	g ¡ t tt	t
dƒt
ddƒtdƒƒƒdddgd�}t |jddd�|dg ¡ t |jdd
d�|d ¡ t | g ¡|¡ | tdddgƒ¡}tdƒ|_t |jddd�|jdgd d …f ¡ t |jddgdd�|jg d d …f ¡ t tj dd¡tdƒd�}||jdk  }|j||jdk jd d!�}|d k�s.t‚t ||¡ d S )"Nr   r   r   r	   r   )ÚAÚBrU   rD   rV   r3   r   z\[5\] not found in axisr   r   z\['C'\] not found in axisÚCz#\['C', 'D', 'F'\] not found in axisÚDÚFr*   rI   rL   éýÿÿÿÚabcr
   r   ©r3   ÚXÚYÚrowsr   T)r#   rF   )r   r,   r-   r!   Úlocr   r   r    rN   ÚzipÚrangeÚ	set_indexr   r3   r5   r6   r7   r   r   rM   )rP   ÚsimpleZnu_dfr&   rS   rQ   r'   r'   r(   Ú	test_dropu   sR    ,, ÿ ÿ ÿ
&(zTestDataFrameDrop.test_dropc              	   C   sÚ   t jdddgddgd�}tddd	gg|d
�}|j ¡ s:t‚t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 	||¡ |j
ddd�}t t¡� |j
ddd�}W 5 Q R X t 	||¡ d S )N)r
   Ú )Úb1Úc1)Úb2Úc2r   r/   r   r   r   r	   r\   r
   r>   rg   rh   ri   rj   )r3   Údata)r   r3   ÚvaluesrD   )r   Úfrom_tuplesr   r3   Z_is_lexsortedrM   Zpivot_tableÚreset_indexr,   r-   r!   Úassert_produces_warningr   )rP   Zlexsorted_miZlexsorted_dfZnot_lexsorted_dfrS   Úresultr'   r'   r(   Ú"test_drop_multiindex_not_lexsorted¨   s,     ÿ
 ÿ  ÿz4TestDataFrameDrop.test_drop_multiindex_not_lexsortedc              	   C   s†  t dddgdddgdddggdd	d
gdddgd�}| d¡}|jdd�}t ||¡ |jddd�}|jdd�}t ||¡ |jddd�}|jdd�}t ||¡ |jdgdd�}|jdgd�}t ||¡ |jdgdd�jdgdd�}|jdgdgd�}t ||¡ d}tjt|d�� |jdd	d� W 5 Q R X tjt|d�� |jdd	d� W 5 Q R X d}tjt|d�� |jdd� W 5 Q R X d S )Nr   r   r   r	   r   r   r   r
   r   r/   r>   r?   r@   rA   r   rD   r\   )r#   rE   r   z2Cannot specify both 'labels' and 'index'/'columns'r   )r#   r   )r#   r3   z>Need to specify at least one of 'labels', 'index' or 'columns')r   r!   r,   r-   r   r   Ú
ValueError)rP   r&   Zres1Zres2r"   r'   r'   r(   Útest_drop_api_equivalenceÅ   s8    ý
z+TestDataFrameDrop.test_drop_api_equivalencer   r   r   Úactualr
   ©rk   r   r   r   c              	   C   s¸   t |jtƒrdnd }t d¡}tjt|d�� |jd|dd� W 5 Q R X tjt|d�� |j	jd|dd� W 5 Q R X |jdd|dd�}t
 ||¡ |j	jdd|dd�}t
 |j	|¡ d S )	Nr   z"['c'] not found in axis"r   r/   ©r   rE   r   r*   )rE   r   r+   )Ú
isinstancer   r   ÚreÚescaper   r   r    r!   ÚTr,   r-   )rP   rt   r   r"   Zexpected_no_errr'   r'   r(   Ú"test_raise_on_drop_duplicate_indexî   s    
z4TestDataFrameDrop.test_raise_on_drop_duplicate_indexr   Údrop_labelsc                    s8   ‡ fdd„|D ƒ}t |d� ˆ ¡}t |t |d�¡ d S )Nc                    s   g | ]}|ˆ kr|‘qS r'   r'   )Ú.0Úi©r|   r'   r(   Ú
<listcomp>  s      z:TestDataFrameDrop.test_drop_empty_list.<locals>.<listcomp>r   ©r   r!   r,   r-   )rP   r   r|   Zexpected_indexÚframer'   r   r(   Útest_drop_empty_list  s    z&TestDataFrameDrop.test_drop_empty_listr	   r   c              	   C   s.   t jtdd�� t|d� |¡ W 5 Q R X d S )Nr4   r   r   )r   r   r    r   r!   )rP   r   r|   r'   r'   r(   Útest_drop_non_empty_list  s    z*TestDataFrameDrop.test_drop_non_empty_listÚempty_listlikezdatetime64[ns]©Zdtypec                 C   sP   ddgddgdœ}t dƒt dƒg}t||d�}| ¡ }| |¡}t ||¡ d S )Nr   r   ÚoneÚtwo)Zcolumn_aZcolumn_bz
2021-01-01r   )r   r   r;   r!   r,   r-   )rP   r…   rk   r   r&   rS   rp   r'   r'   r(   Ú2test_drop_empty_listlike_non_unique_datetime_index  s    
zDTestDataFrameDrop.test_drop_empty_listlike_non_unique_datetime_indexc                 C   s:  ddddddgddddddgdd	d
dddgg}t t|Ž ƒ}t |¡}ttj dd¡|d�}|jddd�}|jdgdd�}t	 
||¡ |jdgdd�}|jdgdd�}|jdgdd�}t	 
||¡ |jddd�}|jdgdd�}t	 
||¡ |jdgdd�}|jddd�}|jdddd�}|jddgdd�}t	 
||¡ d S )Nr
   ÚtopÚroutine1Úroutine2rf   ÚODÚresult1Zresult2ÚwxÚwyr	   r   r\   r   rD   )r
   rf   rf   )rŠ   r�   r�   )rŠ   r�   r�   rv   )r‹   rŽ   rf   )rŒ   rŽ   rf   )Úsortedra   r   rm   r   r5   r6   r7   r!   r,   r-   )rP   ZarraysZtuplesr   r&   rp   rS   r'   r'   r(   Útest_mixed_depth_drop)  s2    ý
 ÿz'TestDataFrameDrop.test_mixed_depth_dropc                 C   s’   t ddddgtjdddgddddgd	d
ddgdœƒ dddg¡ ¡ }|jddd�}t d
d	gdgtjddtjdfgdddgd�d�}t 	||¡ d S )Nr‡   rˆ   ç        g      ð?g       @r
   r   r/   r   r   r   r	   ©rU   rV   rW   rX   rU   rV   rW   r   rX   )r‡   r“   r   r   r2   )
r   r5   Únanrc   Z
sort_indexr!   r   rm   r,   r-   ©rP   r&   rp   rS   r'   r'   r(   Ú$test_drop_multiindex_other_level_nanJ  s(    


üÿøÿ ÿýz6TestDataFrameDrop.test_drop_multiindex_other_level_nanc                 C   sÚ   t ddddgddddgdddd	gdddd
gddddgdddd
gddddgddddgddddgg	ddddgd�}| d¡ ¡ }|j|dk }| dddg¡}|j|jdd� ¡ }||j 	|j¡  }|j|_t
 ||¡ d S )Nzx-aÚxr
   g      ø?g333333ó?zz-cÚzr/   gÍÌÌÌÌÌ@gffffff@zx-br   gffffff@gš™™™™™@zy-aÚyzz-bgÍÌÌÌÌÌ @Úvar1Zvar2Zvar3Zvar4r\   r   r   r   )r   ÚgroupbyÚsizer`   rc   r!   r   rn   r›   Úisinr,   r-   )rP   r&   Zgrp_sizeZdrop_idxZidfrp   rS   r'   r'   r(   Útest_drop_nonuniqueb  s(    








÷
ôz%TestDataFrameDrop.test_drop_nonuniquec                 C   sÜ   |}|j ddgdd�}|jddddd	g }t ||¡ |j d
gdd�}|jdddd	ddg }t ||¡ |jj ddgddd�}|jddddd	g j}t ||¡ |jj d
gddd�}|jdddd	ddg j}t ||¡ d S )NÚbarZquxrB   r   r   r   r   r   r   rˆ   rC   r   r   é	   )rE   r   )r!   r:   r,   r-   rz   )rP   Z multiindex_dataframe_random_datar‚   rp   rS   r'   r'   r(   Útest_drop_level  s    z!TestDataFrameDrop.test_drop_levelc                 C   s¤   t dddddgdd�}t ddd	d	d
g¡}tt d¡ dd¡tdƒ|d�}||d< |jddd�}t	dƒ}|j
jdksxt‚|j|dd�}|j|dk }t ||¡ d S )Nr   r   r	   r   ÚidrJ   z2016-03-23 14:00z2016-03-23 15:00z2016-03-23 16:00z2016-03-23 17:00r   Úabr2   ZtstampT)ÚappendZ201603231600Fr   )r   r8   Úto_datetimer   r5   ZarangeZreshaperN   rc   r   r   Z	is_uniquerM   r!   r`   r,   r-   )rP   ÚidxZidxdtr&   Útsrp   rS   r'   r'   r(   Ú"test_drop_level_nonunique_datetime’  s"    ûÿ	 z4TestDataFrameDrop.test_drop_level_nonunique_datetimec           
      C   sŠ   t ddd�}t ddd�}tj||dd�}|dgt|ƒ |d�}| |¡}t d	dd�}tj||dd�}|dgt|ƒ |d�}	t ||	¡ d S )
Nz
2017-10-29zEurope/Berlin)Útzz2017-10-29 04:00:00Z15min)r1   r   ru   z2017-10-29 00:15:00)r   r8   r9   Úlenr!   r,   Zassert_equal)
rP   Zframe_or_seriesÚstartÚendr   rk   rp   Zexpected_startZexpected_idxrS   r'   r'   r(   Ú'test_drop_tz_aware_timestamp_across_dst¨  s    
z9TestDataFrameDrop.test_drop_tz_aware_timestamp_across_dstc                 C   sd   t jddddddgddddddggddgd�}ttj dd¡|d	�}| d
g¡}|jjdks`t	‚d S )Nr   r   r   r   r‡   rˆ   r   r   r   )r   r   )r‡   rˆ   )
r   r   r   r5   r6   r7   r!   r   r   rM   )rP   r   r&   rp   r'   r'   r(   Útest_drop_preserve_names´  s     ÿz*TestDataFrameDrop.test_drop_preserve_namesÚ	operationÚ__iadd__Ú__isub__Ú__imul__Ú__ipow__rF   FTc              	   C   s†   t dtdƒiƒ}| ¡ }tdƒ|d< |d }t d ¡�F |rN|jdd|d� n|jdd|d�}t||ƒdƒ t ||¡ W 5 Q R X d S )Nr˜   r   rš   r   rG   )r   rb   r;   r,   ro   r!   Úgetattrr-   )rP   r°   rF   r&   rS   rš   r'   r'   r(   Útest_inplace_drop_and_operation¾  s    z1TestDataFrameDrop.test_inplace_drop_and_operationc                 C   sd   t  dddgdddgg¡}tdddg|d�}|jdd�}tdgt  dgdgg¡d�}t ||¡ d S )	Nr˜   rš   r~   Újr   r   r   r   )r   r   r   r!   r,   r-   )rP   r$   r&   rp   rS   r'   r'   r(   Ú$test_drop_with_non_unique_multiindexÓ  s
    z6TestDataFrameDrop.test_drop_with_non_unique_multiindexÚindexer©r
   r
   c                 C   sj   t  ddgddgg¡}tdtt|ƒƒi|d�}|jdgd�}tdddgit  ddg¡d�}t ||¡ d S )	Nr
   r   r˜   r   rº   r   r   )r   r
   )	r   Úfrom_productr   rb   r«   r!   rm   r,   r-   )rP   r¹   r§   r&   rp   rS   r'   r'   r(   Ú*test_drop_tuple_with_non_unique_multiindexÛ  s    
 ÿz<TestDataFrameDrop.test_drop_tuple_with_non_unique_multiindexc                 C   s~   t dddgdddgdddggdddgd�}|jdgdd�}t dgdgdggdgd�}t ||¡ |jddd�}t ||¡ d S )Nr   r   g      @r    r
   r\   rD   r�   r–   r'   r'   r(   Ú test_drop_with_duplicate_columnsæ  s     ÿz2TestDataFrameDrop.test_drop_with_duplicate_columnsc              	   C   s~   t tj d¡tj d¡tj d¡dddddgdœƒ}|jdd	d	gd	d
�}|jddd	dd	gd	d
�}|jdd	d
�}t ||¡ d S )Nr   r
   r   r/   r>   r?   r”   r   r   rD   r   rW   )r   r5   r6   r7   Ztaker!   r,   r-   )rP   r&   rS   Zdf2rp   r'   r'   r(   Ú!test_drop_with_duplicate_columns2ð  s    


üÿ	z3TestDataFrameDrop.test_drop_with_duplicate_columns2c                 C   sf   t ddddgiƒ}|j}|jdgddd� t |jtg dd�¡ || ¡ 8 }t |jtg dd�¡ d S )	Nr
   r   r   r   TrG   Úobjectr†   )r   r
   r!   r,   rO   r3   r   Zmean)rP   r&   r
   r'   r'   r(   Ú.test_drop_inplace_no_leftover_column_reference   s    z@TestDataFrameDrop.test_drop_inplace_no_leftover_column_referencec              	   C   sH   t t tdƒtdƒg¡d�}tjtdd�� |jddd� W 5 Q R X d S )Nr   r   zlabels \[5\] not found in levelr   r   r   r   )r   r   r»   rb   r   r   r    r!   )rP   r&   r'   r'   r(   Ú(test_drop_level_missing_label_multiindex	  s    z:TestDataFrameDrop.test_drop_level_missing_label_multiindexz
idx, levelNc                 C   sd   t dddtjgddœ|d� |¡}|jtdtjgƒ|d�}t dgddœ|d� |¡}t ||¡ d S )Nr   r   éd   )r
   r   r†   r   )r   r8   ZNArc   r!   r   r,   r-   )rP   Zany_numeric_ea_dtyper§   r   r&   rp   rS   r'   r'   r(   Útest_drop_index_ea_dtype  s     ÿþ
 ÿþz*TestDataFrameDrop.test_drop_index_ea_dtype)%Ú__name__Ú
__module__Ú__qualname__rT   re   rq   rs   rk   r   ÚmarkÚparametrizer   rc   r{   rƒ   r„   r5   Úarrayr   r   r   r‰   r’   r—   rŸ   r¢   r©   r®   r¯   r¶   r¸   r¼   r½   r¾   rÀ   rÁ   rÃ   r'   r'   r'   r(   r=   E   sj   /3'üþ	

úþ
!
 
ÿ


	r=   )rx   Únumpyr5   r   Zpandas.errorsr   Zpandasr8   r   r   r   r   r   r   Zpandas._testingZ_testingr,   rÇ   rÈ   r)   r.   r<   r=   r'   r'   r'   r(   Ú<module>   s"    þþ

