o
    _~#gO                     @   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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*   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/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   r4   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 s9w   Y  d S )Nr   )r   r   r
   r   c2012hr   )freqperiodscolumnsr   )r   r   r   r   not found in axisr   r
   r   )r   nprandomdefault_rngstandard_normalpd
date_rangeiloccopyr!   r"   r#   r$   )r)   r*   r*   r+   9test_drop_with_non_unique_datetime_index_and_invalid_keys5   s   "rF   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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	
d0g d1ej	
d2d3d4gd5d6 Zd7d8 Zej	
d9d:d:ggd;d< Zd=d> Z d?d@ Z!dAdB Z"dCdD Z#ej	
dEddgdfdgdFfgdGdH Z$dIdJ Z%dFS )K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   r5   defr   r<   )firstsecondr   rL   r   axisT)inplacerR   rS   rO   rP   z\['g'\] not found in axisr   gr-   r.   namer
   r6   rR   r.   rK   rM   )r   r   rX   r<   r$   rE   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_namesF   sN   
z!TestDataFrameDrop.test_drop_namesc                 C   s  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tdd |jg d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Brg   r   rQ   rh   r<   )r   r   r   r   r   r   r   z\[5\] not found in axisr   r   z\['C'\] not found in axisCz#\['C', 'D', 'F'\] not found in axis)ri   DFr-   rV   r   rY   abc)r
   r
   r   r<   r
   r   )XYro   ro   rowsrp   )r   r   T)r&   rS   )r   r/   r1   r$   locr!   r"   r#   rZ   ziprange	set_indexr   r<   r>   r?   r@   rA   r   r   )r\   simplenu_dfr)   rd   ra   r*   r*   r+   	test_dropu   sZ   *,$"
&(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 |jdddt	}t
t |jddd}W d    n1 s_w   Y  t
|| d S )N))r
    )b1c1)b2c2r   r6   r   )r   r   r	   rn   )r
   r   r6   rK   )r   rz   r{   r   )r   r|   r}   r	   )r<   datar
   rK   )r   r<   valuesr   rQ   )r   from_tuplesr   r<   _is_lexsortedpivot_tablereset_indexr$   astypefloatr/   assert_produces_warningr   r1   )r\   lexsorted_milexsorted_dfnot_lexsorted_dfrd   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   rH   rI   r5   rJ   rN   r
   r   rK   r   rQ   rn   rL   )r&   rR   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/   r1   r!   r"   
ValueError)r\   r)   res1res2r%   r*   r*   r+   test_drop_api_equivalence   s>   
"z+TestDataFrameDrop.test_drop_api_equivalencer   actualr
   r~   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   r6   r   rR   r   r-   )rR   r   r.   )
isinstancer   r   reescaper!   r"   r#   r$   Tr/   r1   )r\   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/   r1   )r\   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$   )r\   r   r   r*   r*   r+   test_drop_non_empty_list  s   "z*TestDataFrameDrop.test_drop_non_empty_listempty_listlikezdatetime64[ns]dtypec                 C   sP   ddgddgd}t dt dg}t||d}| }||}t|| d S )Nr   r   onetwo)column_acolumn_bz
2021-01-01r   )r   r   rE   r$   r/   r1   )r\   r   r~   r   r)   rd   r   r*   r*   r+   2test_drop_empty_listlike_non_unique_datetime_index  s   
zDTestDataFrameDrop.test_drop_empty_listlike_non_unique_datetime_indexc                 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)ry   ODr   result1result2r   )ry   wxwyry   ry   ry   r   )r	   r   rn   r
   r   rQ   )r
   ry   ry   r   )r   r   r   )r   r   r   r   r   )r   r   ry   )r   r   ry   )sortedrs   r   r   r   r>   r?   r@   rA   r$   r/   r1   )r\   arraystuplesr   r)   r   rd   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)r   r   r   r           g      ?g       @)r
   r   r6   r6   rf   rg   rh   ri   rj   )rg   rh   ri   r6   ri   r   r   r   rj   )r   r   r   r   r
   r   r;   )
r   r>   nanru   
sort_indexr$   r   r   r/   r1   r\   r)   r   rd   r*   r*   r+   $test_drop_multiindex_other_level_nanI  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zr6   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var4rn   r   r   )r   r   r   r   r   )r   groupbysizerr   ru   r$   r   r   r   isinr/   r1   )r\   r)   grp_sizedrop_idxidfr   rd   r*   r*   r+   test_drop_nonuniquea  s(   z%TestDataFrameDrop.test_drop_nonuniquec                 C   s   |}|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barquxrO   r   )r   r   r   r   r   r   rP   )r   r   r   r   r   	   r   )rR   r   )r$   rD   r/   r1   r   )r\    multiindex_dataframe_random_datar   r   rd   r*   r*   r+   test_drop_level~  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   idrW   )z2016-03-23 14:00z2016-03-23 15:002016-03-23 16:00r   z2016-03-23 17:00r   r   r   abr;   tstampT)append201603231600Fr   r	   )r   rB   to_datetimer   r>   arangereshaperZ   ru   r   r   	is_uniquer$   rr   r/   r1   )r\   idxidxdtr)   tsr   rd   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:0015min)r9   r   r   z2017-10-29 00:15:00)r   rB   rC   lenr$   r/   assert_equal)
r\   frame_or_seriesstartendr   r~   r   expected_startexpected_idxrd   r*   r*   r+   'test_drop_tz_aware_timestamp_across_dst  s   
z9TestDataFrameDrop.test_drop_tz_aware_timestamp_across_dstc                 C   sX   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@   rA   r$   r   r   )r\   r   r)   r   r*   r*   r+   test_drop_preserve_names  s   z*TestDataFrameDrop.test_drop_preserve_names	operation)__iadd____isub____imul____ipow__rS   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   rT   )r   rt   rE   r/   r   r$   getattrr1   )r\   r   rS   r)   rd   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/   r1   )r\   r'   r)   r   rd   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   rt   r   r$   r   r/   r1   )r\   r   r   r)   r   rd   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
   rn   r
   r   rQ   r   r   r   r*   r*   r+    test_drop_with_duplicate_columns  s   z2TestDataFrameDrop.test_drop_with_duplicate_columnsc                 C   s   t tjddtjddtjddg dd}|jg ddd}|jg ddd}|jd	dd}t|| d S )
Nr   r   )r
   r   r6   rK   rL   r   )r   r   r   r   rQ   )r   r   r   r   r   ri   )	r   r>   r?   r@   rA   taker$   r/   r1   )r\   r)   rd   df2r   r*   r*   r+   !test_drop_with_duplicate_columns2  s   	z3TestDataFrameDrop.test_drop_with_duplicate_columns2c                 C   sr   t dg ditdgddd}|j}|jdgddd t|jtg dd || 8 }t|jtg dd d S )	Nr
   r   objectr   rn   r   TrT   )r   r   r
   r$   r/   r[   r<   mean)r\   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   rt   r!   r"   r#   r$   )r\   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   rB   NAru   r$   r   r/   r1   )r\   any_numeric_ea_dtyper   r   r)   r   rd   r*   r*   r+   test_drop_index_ea_dtype  s   z*TestDataFrameDrop.test_drop_index_ea_dtypec                 C   s`   t ddgddgdtdtdgd}|jddd}t dgdgdtdgd}t|| d S )	Nr   r   r  z
2000-01-03z
2000-01-04r   r   rQ   )r   r   r$   r/   r1   r   r*   r*   r+   &test_drop_parse_strings_datetime_index  s   z8TestDataFrameDrop.test_drop_parse_strings_datetime_index)&__name__
__module____qualname__re   rx   r   r   r~   r!   markparametrizer   ru   r   r   r   r>   arrayr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r*   r*   r*   r+   rG   E   sl    /5'
	

!



	
rG   )r   numpyr>   r!   pandas.errorsr   pandasrB   r   r   r   r   r   r   pandas._testing_testingr/   r  r  r,   r4   rF   rG   r*   r*   r*   r+   <module>   s$     

