o
    թZhO                     @   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/html/lang_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$   tmZassert_series_equalassert_frame_equal)r&   r   r'   r(   r)   Z
expected_sZexpected_dfr*   r*   r+   test_drop_errors_ignore'   s   r1   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   cZ2012hr   )freqZ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   "rA   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   r2   defr   r7   )firstsecondr   rG   r   axisT)inplacerM   rN   rJ   rK   z\['g'\] not found in axisr   gr-   r.   namer
   r3   rM   r.   rF   rH   )r   r   rS   r7   r$   r@   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   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Br]   r   rL   r^   r7   )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)r_   DFr-   rQ   r   rT   abc)r
   r
   r   r7   r
   r   )XYre   re   rowsrf   )r   r   T)r&   rN   )r   r/   r0   r$   locr!   r"   r#   rU   ziprange	set_indexr   r7   r9   r:   r;   r<   r   r   )rW   simpleZnu_dfr)   rZ   rX   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   r3   r   )r   r   r	   rd   )r
   r   r3   rF   )r   ro   rp   r   )r   rq   rr   r	   )r7   datar
   rF   )r   r7   valuesr   rL   )r   from_tuplesr   r7   Z_is_lexsortedZpivot_tablereset_indexr$   Zastypefloatr/   assert_produces_warningr   r0   )rW   Zlexsorted_miZlexsorted_dfZnot_lexsorted_dfrZ   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   rC   rD   r2   rE   rI   r
   r   rF   r   rL   rd   rG   )r&   rM   r   z2Cannot specify both 'labels' and 'index'/'columns'r   r   )r&   r   )r&   r7   z>Need to specify at least one of 'labels', 'index' or 'columns')r   r$   r/   r0   r!   r"   
ValueError)rW   r)   Zres1Zres2r%   r*   r*   r+   test_drop_api_equivalence   s>   
"z+TestDataFrameDrop.test_drop_api_equivalencer   actualr
   rs   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   r3   r   rM   r   r-   )rM   r   r.   )
isinstancer   r   reescaper!   r"   r#   r$   Tr/   r0   )rW   r}   r   r%   Z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   )rW   r   r   Z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 )Nr8   r   r   )r!   r"   r#   r   r$   )rW   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/   r0   )rW   r   rs   r   r)   rZ   ry   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)rn   ODr   result1Zresult2r   )rn   wxwyrn   rn   rn   r   )r	   r   rd   r
   r   rL   )r
   rn   rn   r   )r   r   r   )r   r   r   r   r   )r   r   rn   )r   r   rn   )sortedri   r   ru   r   r9   r:   r;   r<   r$   r/   r0   )rW   ZarraysZtuplesr   r)   ry   rZ   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   r3   r3   r\   r]   r^   r_   r`   )r]   r^   r_   r3   r_   r   r   r   r`   )r   r   r   r   r
   r   r6   )
r   r9   nanrk   Z
sort_indexr$   r   ru   r/   r0   rW   r)   ry   rZ   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zr3   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var3Zvar4rd   r   r   )r   r   r   r   r   )r   groupbysizerh   rk   r$   r   rv   r   isinr/   r0   )rW   r)   Zgrp_sizeZdrop_idxZidfry   rZ   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barZquxrJ   r   )r   r   r   r   r   r   rK   )r   r   r   r   r   	   r   )rM   r   )r$   r?   r/   r0   r   )rW   Z multiindex_dataframe_random_datar   ry   rZ   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   idrR   )z2016-03-23 14:00z2016-03-23 15:002016-03-23 16:00r   z2016-03-23 17:00r   r   r   abr6   ZtstampT)appendZ201603231600Fr   r	   )r   r=   to_datetimer   r9   ZarangeZreshaperU   rk   r   r   Z	is_uniquer$   rh   r/   r0   )rW   idxZidxdtr)   tsry   rZ   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)r5   r   r~   z2017-10-29 00:15:00)r   r=   r>   lenr$   r/   Zassert_equal)
rW   Zframe_or_seriesstartendr   rs   ry   Zexpected_startZexpected_idxrZ   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   r9   r:   r;   r<   r$   r   r   )rW   r   r)   ry   r*   r*   r+   test_drop_preserve_names  s   z*TestDataFrameDrop.test_drop_preserve_names	operation)__iadd____isub____imul____ipow__rN   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   rO   )r   rj   r@   r/   rx   r$   getattrr0   )rW   r   rN   r)   rZ   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   )rW   r'   r)   ry   rZ   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   rj   r   r$   ru   r/   r0   )rW   r   r   r)   ry   rZ   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
   rd   r
   r   rL   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   r3   rF   rG   r   )r   r   r   r   rL   )r   r   r   r   r   r_   )	r   r9   r:   r;   r<   Ztaker$   r/   r0   )rW   r)   rZ   Zdf2ry   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   rd   r   TrO   )r   r   r
   r$   r/   rV   r7   mean)rW   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   rj   r!   r"   r#   r$   )rW   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   r=   ZNArk   r$   r   r/   r0   )rW   Zany_numeric_ea_dtyper   r   r)   ry   rZ   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   rL   )r   r   r$   r/   r0   r   r*   r*   r+   &test_drop_parse_strings_datetime_index  s   z8TestDataFrameDrop.test_drop_parse_strings_datetime_index)&__name__
__module____qualname__r[   rm   rz   r|   rs   r!   markparametrizer   rk   r   r   r   r9   arrayr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r*   r*   r*   r+   rB   E   sl    /5'
	

!



	
rB   )r   numpyr9   r!   Zpandas.errorsr   Zpandasr=   r   r   r   r   r   r   Zpandas._testingZ_testingr/   r   r   r,   r1   rA   rB   r*   r*   r*   r+   <module>   s$     

