o
    g&K                     @   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 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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g dg dgddgd}tg d|d}tg d|d}tjt| d |j||d	 W d    n1 s8w   Y  tjt| d |j||d	 W d    d S 1 sWw   Y  d S )
N         r         r	   r   names
         indexmatchlevel)r   from_arraysr   r   pytestraisesKeyErrordrop)msglabelsr   misdf r)   b/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/frame/methods/test_drop.py0test_drop_raise_exception_if_labels_not_in_level   s   	"r+   zlabels,level)r   r	   )r
   r   c                 C   sz   t jg dg dgddgd}tg d|d}tg d|d}|j| |dd	}t|| |j| |dd	}t|| d S )
Nr   r   r	   r   r   r   r   ignore)r   errors)r   r   r   r   r#   tmassert_series_equalassert_frame_equal)r%   r   r&   r'   r(   
expected_sexpected_dfr)   r)   r*   test_drop_errors_ignore&   s   r3   c                  C   s|   t tjddg dtjddddd} | jg d  } tj	t
d	d
 | ddg W d    d S 1 s7w   Y  d S )Nr   r   r	   r   c2012H)freqperiodscolumnsr   )r   r   r   r   not found in axisr   r	   r   )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_keys4   s   "rD   c                
   @   s  e Zd Zdd Zdd Zdd Zdd Zg d	g d	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g d	g dgej	
dg dgdggdd Zej	
dg d	g dgej	
dddgddggdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zej	
d'eegd(d) Zd*d+ Zej	
d,g d-ej	
d.d/d0gd1d2 Zd3d4 Zej	
d5d6d6ggd7d8 Zd9d: Zd;d< Zd=d> Zd?d@ ZdAdB ZdCS )DTestDataFrameDropc                 C   sL  t g dg dg dgg dg dd}d\|j_|j_|d}|jd	d
d}| | }}|jddd}|d u s>J |jd	d
dd}|d u sLJ ||||fD ]}|jjdks\J |jjdksdJ qRt|jg dkspJ d}tjt	|d |dg W d    n1 sw   Y  tjt	|d |jdgd
d W d    n1 sw   Y  |jdgdd}	t
g d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
g ddd}
t|	j|
 |jddgd
dd}	t
d	dgdd}
t|	j|
 |jg dd}	t
g ddd}
t|	j|
 d S )Nr   r   r   r   r   r   r
   r4   defr   r;   )firstsecondr   rJ   r   axisT)inplacerP   rQ   rM   rN   z\['g'\] not found in axisr   gr,   r-   namer	   r5   rP   r-   rI   rK   )r   r   rV   r;   r#   rC   listr    r!   r"   r   r.   assert_index_equal)selfr(   df_dropped_bdf_dropped_edf_inplace_bdf_inplace_ereturn_valueobjr$   droppedexpectedr)   r)   r*   test_drop_namesE   sN   
z!TestDataFrameDrop.test_drop_namesc                 C   sP  t g dg dd}t|jddd|dg  t|jddgdd|g   t|jg d	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 d    n1 sjw   Y  tjtdd |jddd W d    n1 sw   Y  tjtdd |ddg W d    n1 sw   Y  tjtdd |jddgdd W d    n1 sw   Y  t|jddd| t|jd
dgdd|jg d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g dd}t|jddd|dg  t|jddd|d  t|g | |tg d}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 u sJ t|| d S )$Nr   r   r   r   )r   r   r   r   )ABre   r   rO   rf   r;   )r   r   r   r   r   r   r   z\[5\] not found in axisr   r   z\['C'\] not found in axisCr,   rT   r   rW   abc)r	   r	   r   r;   r	   r   )XYrk   rk   rowsrl   r   T)r%   rQ   )r   r.   r0   r#   locr    r!   r"   rX   ziprange	set_indexr   r;   r=   r>   r?   r   r   )rZ   simplenu_dfr(   rb   r_   r)   r)   r*   	test_dropt   sP   *,$"
&(zTestDataFrameDrop.test_dropc                 C   s   t jg dddgd}tg dg|d}|j sJ tg dg dg d	gd
}|jdddgdd}| }|j r>J t|| |j	ddd}t
t |j	ddd}W d    n1 sbw   Y  t|| d S )N))r	    )b1c1)b2c2r   r5   r   )r   r   r   rj   )r	   r   r5   rI   )r   rv   rw   r   )r   rx   ry   r   )r;   datar	   rI   )r   r;   valuesr   rO   )r   from_tuplesr   r;   _is_lexsortedpivot_tablereset_indexr.   r0   r#   assert_produces_warningr   )rZ   lexsorted_milexsorted_dfnot_lexsorted_dfrb   resultr)   r)   r*   "test_drop_multiindex_not_lexsorted   s&   
z4TestDataFrameDrop.test_drop_multiindex_not_lexsortedc                 C   s  t g dg dg dgg dg d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 d    n1 sw   Y  tjt|d |jddd W d    n1 sw   Y  d}tjt|d |jd
d W d    d S 1 sw   Y  d S )Nr   rF   rG   r4   rH   rL   r	   r   rI   r   rO   rj   rJ   )r%   rP   r   z2Cannot specify both 'labels' and 'index'/'columns'r   r   )r%   r   )r%   r;   z>Need to specify at least one of 'labels', 'index' or 'columns')r   r#   r.   r0   r    r!   
ValueError)rZ   r(   res1res2r$   r)   r)   r*   test_drop_api_equivalence   s>   
"z+TestDataFrameDrop.test_drop_api_equivalencer   actualr	   rz   r   r   r   r   c                 C   s   t |jtrdnd }td}tjt|d |jd|dd W d    n1 s)w   Y  tjt|d |j	jd|dd W d    n1 sIw   Y  |jdd|dd}t
|| |j	jdd|dd}t
|j	| d S )	Nr   z"['c'] not found in axis"r   r5   r   rP   r   r,   )rP   r   r-   )
isinstancer   r   reescaper    r!   r"   r#   Tr.   r0   )rZ   r   r   r$   expected_no_errr)   r)   r*   "test_raise_on_drop_duplicate_index   s   
z4TestDataFrameDrop.test_raise_on_drop_duplicate_indexr   )r   r   r   drop_labelsr   c                    s8    fdd|D }t |d }t|t |d d S )Nc                    s   g | ]}| vr|qS r)   r)   ).0ir   r)   r*   
<listcomp>  s    z:TestDataFrameDrop.test_drop_empty_list.<locals>.<listcomp>r   r   r#   r.   r0   )rZ   r   r   expected_indexframer)   r   r*   test_drop_empty_list   s   z&TestDataFrameDrop.test_drop_empty_list)r   r   r   r   r   c                 C   sD   t jtdd t|d| W d    d S 1 sw   Y  d S )Nr<   r   r   )r    r!   r"   r   r#   )rZ   r   r   r)   r)   r*   test_drop_non_empty_list  s   "z*TestDataFrameDrop.test_drop_non_empty_listc                 C   s"  g dg dg d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 )N)r	   topr   routine1r   routine2)ru   ODr   result1result2r   )ru   wxwyru   ru   ru   r   r   rj   r	   r   rO   )r	   ru   ru   r   )r   r   r   )r   r   r   r   r   )r   r   ru   )r   r   ru   )sortedro   r   r|   r   r=   r>   r?   r#   r.   r0   )rZ   arraystuplesr   r(   r   rb   r)   r)   r*   test_mixed_depth_drop  s0   
z'TestDataFrameDrop.test_mixed_depth_dropc                 C   s   t g dtjdddgg dg ddg d }|jd	d
d}t ddgdgtjddtjdfgg ddd}t	|| d S )N)oner   twor           g      ?g       @)r	   r   r5   r5   rd   re   rf   rg   Dre   rf   rg   r5   rg   r   r   r   r   )r   r   r   r   r	   r   r:   )
r   r=   nanrq   
sort_indexr#   r   r|   r.   r0   rZ   r(   r   rb   r)   r)   r*   $test_drop_multiindex_other_level_nan0  s&   
z6TestDataFrameDrop.test_drop_multiindex_other_level_nanc                 C   s   t g dg dg dg dg dg dg dg dg d	g	g d
d}|d }|j|dk }|g d}|j|jdd }||j	|j  }|j|_t
|| d S )N)x-axr	   g      ?)r   r   r	   333333?)zz-czr5   g@)r   r   r	   ffffff@)x-br   r   gffffff@)r   r   r   r   )r   r   r   g@)zy-ayr	   r   )zz-br   r   g @)var1var2var3var4rj   r   r   )r   r   r   r   r   )r   groupbysizern   rq   r#   r   r   r   isinr.   r0   )rZ   r(   grp_sizedrop_idxidfr   rb   r)   r)   r*   test_drop_nonuniqueH  s(   z%TestDataFrameDrop.test_drop_nonuniquec                 C   s
  t g dg dgg dg dgddgd}ttjdd	|tg d
ddd}|jddgdd}|jg d }t	|| |jdgdd}|jg d }t	|| |j
jddgddd}|jg d j
}t	|| |j
jdgddd}|jg d j
}t	|| d S )N)foobarbazqux)r   r   three)
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   rM   rN   )levelscodesr   r   r   r   exprU   rL   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r
   	   r   )rP   r   )r   r   r=   r>   r?   r   r#   rB   r.   r0   r   )rZ   r   r   r   rb   r)   r)   r*   test_drop_levele  s,   z!TestDataFrameDrop.test_drop_levelc                 C   s   t g ddd}tg d}ttdddtd|d	}||d
< |jd
dd}t	d}|j
jdu s6J |j|d
d}|j|dk }t|| d S )N)r   r   r   r   r   idrU   )201603231400201603231500201603231600r   201603231700r   r   r   abr:   tstampT)appendr   Fr   r   )r   r@   to_datetimer   r=   arangereshaperX   rq   r   r   	is_uniquer#   rn   r.   r0   )rZ   idxidxdtr(   tsr   rb   r)   r)   r*   "test_drop_level_nonunique_datetime  s    	z4TestDataFrameDrop.test_drop_level_nonunique_datetimeboxc           
      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:0015min)r8   r   r   z2017-10-29 00:15:00)r   r@   rA   lenr#   r.   assert_equal)
rZ   r   startendr   rz   r   expected_startexpected_idxrb   r)   r)   r*   'test_drop_tz_aware_timestamp_across_dst  s   
z9TestDataFrameDrop.test_drop_tz_aware_timestamp_across_dstc                 C   sT   t jg dg dgddgd}ttjdd|d}|d	g}|jjd
ks(J d S )N)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=   r>   r?   r#   r   r   )rZ   r   r(   r   r)   r)   r*   test_drop_preserve_names  s   z*TestDataFrameDrop.test_drop_preserve_names	operation)__iadd____isub____imul____ipow__rQ   FTc                 C   s   t dtdi}| }td|d< |d }td ) |r'|jdd|d n|jdd|d}t||d t|| W d    d S 1 sGw   Y  d S )Nr   r   r   r   rR   )r   rp   rC   r.   r   r#   getattrr0   )rZ   r   rQ   r(   rb   r   r)   r)   r*   test_inplace_drop_and_operation  s   "z1TestDataFrameDrop.test_inplace_drop_and_operationc                 C   s^   t g dg dg}tg d|d}|jdd}tdgt dgdggd}t|| d S )	N)r   r   r   )r   jr   r   r   r   r   r   r   )r   r   r   r#   r.   r0   )rZ   r&   r(   r   rb   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   rp   r   r#   r|   r.   r0   )rZ   r   r   r(   r   rb   r)   r)   r*   *test_drop_tuple_with_non_unique_multiindex  s   z<TestDataFrameDrop.test_drop_tuple_with_non_unique_multiindexc                 C   sv   t g dg dg dgg d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 )N)r   r   g      @)r   r	   r	   rj   r	   r   rO   r   r   r   r)   r)   r*    test_drop_with_duplicate_columns  s   z2TestDataFrameDrop.test_drop_with_duplicate_columnsc                 C   sp   t tjdtjdtjdg dd}|jg ddd}|jg ddd}|jddd}t|| d S )	Nr   )r	   r   r5   rI   rJ   r   )r   r   r   r   rO   )r   r   r   r   r   rg   )r   r=   r>   r?   taker#   r.   r0   )rZ   r(   rb   df2r   r)   r)   r*   !test_drop_with_duplicate_columns2  s   


	z3TestDataFrameDrop.test_drop_with_duplicate_columns2c                 C   sl   t dg di}d}tjt|d |dd}W d    n1 s"w   Y  t g dd}t|| d S )Nr	   r   ztIn a future version of pandas all arguments of DataFrame\.drop except for the argument 'labels' will be keyword-onlyr   r   )r   r   r   r   )r   r.   r   FutureWarningr#   r0   )rZ   r(   r$   r   rb   r)   r)   r*   test_drop_pos_args_deprecation  s   z0TestDataFrameDrop.test_drop_pos_args_deprecationc                 C   sd   t dg d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   TrR   object)dtype)r   r	   r#   r.   rY   r;   r   mean)rZ   r(   r	   r)   r)   r*   .test_drop_inplace_no_leftover_column_reference  s   z@TestDataFrameDrop.test_drop_inplace_no_leftover_column_referencec                 C   s^   t ttdtdgd}tjtdd |jddd W d    d S 1 s(w   Y  d S )Nr   r   zlabels \[5\] not found in levelr   r   r   r   )r   r   r   rp   r    r!   r"   r#   )rZ   r(   r)   r)   r*   (test_drop_level_missing_label_multiindex  s   "z:TestDataFrameDrop.test_drop_level_missing_label_multiindexN) __name__
__module____qualname__rc   rt   r   r   rz   r    markparametrizer   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r)   r)   r)   r*   rE   D   sT    //'
	!




	rE   )r   numpyr=   r    pandas.errorsr   pandasr@   r   r   r   r   r   pandas._testing_testingr.   r  r  r+   r3   rD   rE   r)   r)   r)   r*   <module>   s$    

