o
    5ccO                     @   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*   Z/var/www/html/gps/gps/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 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_keys5   s   "rE   c                
   @   s6  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ej	
d,eegd-d. Zd/d0 Zej	
d1g d2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#dFdG Z$ej	
dHddgdfdgdIfgdJdK Z%dIS )L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   rK   r   axisT)inplacerQ   rR   rN   rO   z\['g'\] not found in axisr   gr-   r.   namer
   r6   rQ   r.   rJ   rL   )r   r   rW   r<   r$   rD   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Brf   r   rP   rg   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)rh   DFr-   rU   r   rX   abc)r
   r
   r   r<   r
   r   )XYrn   rn   rowsro   r   T)r&   rR   )r   r/   r1   r$   locr!   r"   r#   rY   ziprange	set_indexr   r<   r>   r?   r@   r   r   )r[   simplenu_dfr)   rc   r`   r*   r*   r+   	test_dropu   sV   *,$"
&(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   r6   r   )r   r   r	   rm   )r
   r   r6   rJ   )r   ry   rz   r   )r   r{   r|   r	   )r<   datar
   rJ   )r   r<   valuesr   rP   )r   from_tuplesr   r<   _is_lexsortedpivot_tablereset_indexr/   r1   r$   assert_produces_warningr   )r[   lexsorted_milexsorted_dfnot_lexsorted_dfrc   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   rG   rH   r5   rI   rM   r
   r   rJ   r   rP   rm   rK   )r&   rQ   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   rQ   r   r-   )rQ   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   rD   r$   r/   r1   )r[   r   r}   r   r)   rc   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)rx   ODr   result1result2r   )rx   wxwyrx   rx   rx   r	   r   rm   r
   r   rP   )r
   rx   rx   r   )r   r   r   )r   r   r   r   r   )r   r   rx   )r   r   rx   )sortedrr   r   r   r   r>   r?   r@   r$   r/   r1   )r[   arraystuplesr   r)   r   rc   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   re   rf   rg   rh   ri   )rf   rg   rh   r6   rh   r   r   r   ri   )r   r   r   r   r
   r   r;   )
r   r>   nanrt   
sort_indexr$   r   r   r/   r1   r[   r)   r   rc   r*   r*   r+   $test_drop_multiindex_other_level_nanK  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var4rm   r   r   )r   r   r   r   r   )r   groupbysizerq   rt   r$   r   r   r   isinr/   r1   )r[   r)   grp_sizedrop_idxidfr   rc   r*   r*   r+   test_drop_nonuniquec  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quxrN   r   )r   r   r   r   r   r   rO   )r   r   r   r   r   	   r   )rQ   r   )r$   rC   r/   r1   r   )r[    multiindex_dataframe_random_datar   r   rc   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   idrV   )201603231400201603231500201603231600r   201603231700r   r   r   abr;   tstampT)appendr   Fr   r	   )r   rA   to_datetimer   r>   arangereshaperY   rt   r   r   	is_uniquer$   rq   r/   r1   )r[   idxidxdtr)   tsr   rc   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)r9   r   r   z2017-10-29 00:15:00)r   rA   rB   lenr$   r/   assert_equal)
r[   r   startendr   r}   r   expected_startexpected_idxrc   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   )r[   r   r)   r   r*   r*   r+   test_drop_preserve_names  s   z*TestDataFrameDrop.test_drop_preserve_names	operation)__iadd____isub____imul____ipow__rR   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   rS   )r   rs   rD   r/   r   r$   getattrr1   )r[   r   rR   r)   rc   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   rc   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   rs   r   r$   r   r/   r1   )r[   r   r   r)   r   rc   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
   rm   r
   r   rP   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   r6   rJ   rK   r   )r   r   r   r   rP   )r   r   r   r   r   rh   )r   r>   r?   r@   taker$   r/   r1   )r[   r)   rc   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$   r1   )r[   r)   r%   r   rc   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   TrS   objectr   )r   r
   r$   r/   rZ   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   rs   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   rA   NArt   r$   r   r/   r1   )r[   any_numeric_ea_dtyper   r   r)   r   rc   r*   r*   r+   test_drop_index_ea_dtype  s   z*TestDataFrameDrop.test_drop_index_ea_dtype)&__name__
__module____qualname__rd   rw   r   r   r}   r!   markparametrizer   rt   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+   rF   E   sn    /3'
	

!




	rF   )r   numpyr>   r!   pandas.errorsr   pandasrA   r   r   r   r   r   r   pandas._testing_testingr/   r
  r  r,   r4   rE   rF   r*   r*   r*   r+   <module>   s$     

