a
    oÝEb`M  ã                   @   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 sp0    Y  tjt| d�� |j||d	� W d   ƒ n1 s¬0    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*   úd/home/ja/django-apps/lartica_env/lib/python3.9/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   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   sz   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   ƒ n1 sl0    Y  d S )Nr   r   ©r
   r   ÚcZ2012ÚH)ÚfreqZ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    ýr@   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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$dHS )IÚTestDataFrameDropc                 C   sP  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 s˜J ‚||||fD ]$}|jjdks¸J ‚|jjdks¤J ‚q¤t|jƒg d¢ksàJ ‚d}tjt	|d�� | dg¡ W d   ƒ n1 �s0    Y  tjt	|d��  |jdgd
d� W d   ƒ n1 �sV0    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   rF   r   ©ÚaxisT)Úinplace©rL   rM   rI   rJ   z\['g'\] not found in axisr   Úgr-   ©r.   ©Únamer
   r3   ©rL   r.   rE   rG   )r   r   rR   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   sJ    ý
,0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 sÔ0    Y  tjtdd�� |jddd� W d   ƒ n1 �s0    Y  tjtdd�� | ddg¡ W d   ƒ n1 �sP0    Y  tjtdd��" |jddgdd� W d   ƒ n1 �s’0    Y  tjtdd��" |jg d¢dd� W d   ƒ n1 �sÔ0    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 �sˆJ ‚t ||¡ d S )&N©r   r   r   r	   )r   r   r   r   )ÚAÚBr\   r   rK   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-   rP   r   rS   éýÿÿÿÚabc)r
   r
   r   ©r7   r
   r   )ÚXÚYrd   rd   Úrowsre   r   T)r&   rM   )r   r/   r0   r$   Úlocr!   r"   r#   rT   ÚzipÚrangeÚ	set_indexr   r7   r9   r:   r;   r   r   )rV   ÚsimpleZnu_dfr)   rY   rW   r*   r*   r+   Ú	test_dropu   sL    *,(..22$ÿÿ"ÿ
&(zTestDataFrameDrop.test_dropc                 C   sÞ   t jg d¢ddgd�}tg d¢g|d�}|j ¡ s6J ‚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 sÄ0    Y  t ||¡ d S )N))r
   Ú )Úb1Úc1)Úb2Úc2r   r3   r   )r   r   r	   rc   )r
   r   r3   rE   )r   rn   ro   r   )r   rp   rq   r	   )r7   Údatar
   rE   )r   r7   Úvaluesr   rK   )r   Úfrom_tuplesr   r7   Z_is_lexsortedZpivot_tableÚreset_indexr/   r0   r$   Úassert_produces_warningr   )rV   Zlexsorted_miZlexsorted_dfZnot_lexsorted_dfrY   Ú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 �s20    Y  tjt|d�� |jddd� W d   ƒ n1 �sp0    Y  d}tjt|d�� |jd
d� W d   ƒ n1 �s°0    Y  d S )Nr   rB   rC   r2   rD   rH   r
   r   rE   r   rK   rc   rF   )r&   rL   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)rV   r)   Zres1Zres2r%   r*   r*   r+   Útest_drop_api_equivalenceÅ   s8    ý
..z+TestDataFrameDrop.test_drop_api_equivalencer   Úactualr
   ©rr   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 sR0    Y  tjt|d��" |j	jd|dd� W d   ƒ n1 s’0    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   rL   r   r-   )rL   r   r.   )Ú
isinstancer   r   ÚreÚescaper!   r"   r#   r$   ÚTr/   r0   )rV   r{   r   r%   Zexpected_no_errr*   r*   r+   Ú"test_raise_on_drop_duplicate_indexî   s    
.0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>	  ó    z:TestDataFrameDrop.test_drop_empty_list.<locals>.<listcomp>r   ©r   r$   r/   r0   )rV   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   sB   t jtdd��  t|d� |¡ W d   ƒ n1 s40    Y  d S )Nr8   r   r   )r!   r"   r#   r   r$   )rV   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   )rV   r�   rr   r   r)   rY   rw   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)rm   ÚODr•   Úresult1Zresult2r–   )rm   ÚwxÚwyrm   rm   rm   r	   r   rc   r
   r   rK   )r
   rm   rm   r’   )r’   r•   r—   )r’   r•   r˜   r–   r}   )r“   r–   rm   )r”   r–   rm   )Úsortedrh   r   rt   r   r9   r:   r;   r$   r/   r0   )rV   ZarraysZtuplesr   r)   rw   rY   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   Únanrj   Z
sort_indexr$   r   rt   r/   r0   ©rV   r)   rw   rY   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Ú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var4rc   r§   r   )r§   r¨   r©   r   r   )r   ÚgroupbyÚsizerg   rj   r$   r   ru   r§   Úisinr/   r0   )rV   r)   Zgrp_sizeZdrop_idxZidfrw   rY   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ÚbarZquxrI   r   )r   r   r   r   r   r�   rJ   )r   r   r   r   r   é	   r   )rL   r   )r$   r>   r/   r0   r�   )rV   Z multiindex_dataframe_random_datarŠ   rw   rY   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 slJ ‚|j|d
d�}|j|dk }t ||¡ d S )N)r   r   r	   r	   r   ÚidrQ   )Z201603231400Z201603231500Ú201603231600r²   Z201603231700r   r   r   Úabr6   ZtstampT)Úappendr²   Fr   r	   )r   r<   Úto_datetimer   r9   ZarangeZreshaperT   rj   r   r   Z	is_uniquer$   rg   r/   r0   )rV   ÚidxZidxdtr)   Útsrw   rY   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:00Z15min)r5   r   r|   z2017-10-29 00:15:00)r   r<   r=   Úlenr$   r/   Zassert_equal)
rV   r¹   ÚstartÚendr   rr   rw   Zexpected_startZexpected_idxrY   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sPJ ‚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   r9   r:   r;   r$   r   r   )rV   r   r)   rw   r*   r*   r+   Útest_drop_preserve_names¶  s    ÿz*TestDataFrameDrop.test_drop_preserve_namesÚ	operation)Ú__iadd__Ú__isub__Ú__imul__Ú__ipow__rM   FTc                 C   sš   t dtdƒiƒ}| ¡ }tdƒ|d< |d }t d ¡�P |rN|jdd|d� n|jdd|d�}t||ƒdƒ t ||¡ W d   ƒ n1 sŒ0    Y  d S )Nr¡   r   r¦   r   rN   )r   ri   r?   r/   rv   r$   Úgetattrr0   )rV   rÀ   rM   r)   rY   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   )rV   r'   r)   rw   rY   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   ri   r»   r$   rt   r/   r0   )rV   rÉ   r¶   r)   rw   rY   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
   rc   r
   r   rK   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   r3   rE   rF   rœ   )r   r   r   r   rK   )r   r   r   r   r   r^   )r   r9   r:   r;   Ztaker$   r/   r0   )rV   r)   rY   Zdf2rw   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 sD0    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/   rv   ÚFutureWarningr$   r0   )rV   r)   r%   rw   rY   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   TrN   ÚobjectrŽ   )r   r
   r$   r/   rU   r7   r   Úmean)rV   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   ƒ n1 sN0    Y  d S )Nr   r   zlabels \[5\] not found in levelr   r   r   r   )r   r   rË   ri   r!   r"   r#   r$   )rV   r)   r*   r*   r+   Ú(test_drop_level_missing_label_multiindex  s    z:TestDataFrameDrop.test_drop_level_missing_label_multiindexN)%Ú__name__Ú
__module__Ú__qualname__rZ   rl   rx   rz   rr   r!   ÚmarkÚparametrizer   rj   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+   rA   E   sh   /3'üþ	

úþ
!

ÿ


	rA   )r   Únumpyr9   r!   Zpandas.errorsr   Zpandasr<   r   r   r   r   r   r   Zpandas._testingZ_testingr/   rØ   rÙ   r,   r1   r@   rA   r*   r*   r*   r+   Ú<module>   s"    þþ

