B
    `.=                 @   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jdddgdddggddgd	}t jd
ddg|d}t jd
ddg|d}tjt| d |j||d W d Q R X tjt| d |j||d W d Q R X d S )N         r         r	   r   )names
         )index)match)level)	pdr   from_arraysr   r   pytestraisesKeyErrordrop)msglabelsr   misdf r#   S/home/dcms/DCMS/lib/python3.7/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   s   t jjdddgdddggddgd	}t jd
ddg|d}t jd
ddg|d}|j| |dd}t|| |j| |dd}t|| d S )Nr   r   r   r   r   r   r	   r   )r   r   r   r   )r   ignore)r   errors)	r   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    $r*   c           	   C   sn   t jtjdddddgt jddddd	} | jd
dddg  } tj	t
dd | ddg W d Q R X d S )Nr   r   r	   r   cZ2012H)freqZperiods)columnsr   r   r   znot found in axis)r   )r   r   nprandomrandn
date_rangeiloccopyr   r   r   r   )r"   r#   r#   r$   9test_drop_with_non_unique_datetime_index_and_invalid_keys.   s    r5   c            
   @   sj  e Zd Zdd Zdd Zdd Zdd Zd	d
dgd	d
dg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d	d
dgd	d	d
ggej	
dg d	gd
ggdd Zej	
dd	d
dgd	d
d
g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d*S )+TestDataFrameDropc          	   C   s8  t dddgdddgdddggdd	d
gdddgd}d\|j_|j_|d	}|jddd}| |  }}|jd	dd}|d kst|jdddd}|d kstx4||||fD ]$}|jjdkst|jjdkstqW t|jdddgkstd}tj	t
|d |dg W d Q R X tj	t
|d |dgd W d Q R X |jdgdd}	tdd	d
g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dddgdd}
t|	j|
 |jddgddd}	tddgdd}
t|	j|
 |jg dd}	tdd	d
gdd}
t|	j|
 d S )Nr   r   r   r   r   r   r
   r	   r   r+   def)r   r.   )firstsecond)axisT)inplace)r<   r=   r:   r;   z\['g'\] not found in axis)r   gr&   )r'   )name)r<   r'   )r   r   r?   r.   r   r4   AssertionErrorlistr   r   r   r   r(   Z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_names?   sH    
z!TestDataFrameDrop.test_drop_namesc          	   C   s  t ddddgddddgd}t|jddd|d	g  t|jdd	gd
d|g   t|jdddg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 Q R X tjtdd |dd W d Q R X tjtdd |ddg W d Q R X tjtdd |ddgd W d Q R X t|jddd| t|jddgdd|jdddg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dddgd}t|jddd|dg  t|jdd
d|d  t|g | |tdddg}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j tjddtdd}||jdk  }|j||jdk jdd}|d ks tt|| d S )Nr   r   r   r   r   )ABrG   )r<   rH   r.   r   z\[5\] not found in axis)r   r   z\['C'\] not found in axisCr&   )r'   )r<   r'   abcr	   r   )r.   XYrowsr   T)r   r=   )r   r(   r)   r   locr   r   r   rA   ziprange	set_indexr   r   r.   r/   r0   r1   r   r   r@   )rB   simpleZnu_dfr"   rE   rC   r#   r#   r$   	test_dropn   sB    ,,**
&(zTestDataFrameDrop.test_dropc          	   C   s   t jdddgddgd}tddd	gg|d
}|j s:ttddddgddddgdddd	ggd}|jdddgdd}| }|j rtt	|| |j
ddd}tt |j
ddd}W d Q R X t	|| d S )N)r	    )b1c1)b2c2r   r+   )r   r   r   r   )r.   r	   r7   rV   rW   rX   rY   )r.   data)r   r.   values)r<   )r   from_tuplesr   r.   Zis_lexsortedr@   Zpivot_tablereset_indexr(   r)   r   Zassert_produces_warningr   )rB   Zlexsorted_miZlexsorted_dfZnot_lexsorted_dfrE   resultr#   r#   r$   "test_drop_multiindex_not_lexsorted   s    &z4TestDataFrameDrop.test_drop_multiindex_not_lexsortedc          	   C   s  t dddgdddgdddggdd	d
gdddgd}|d}|jdd}t|| |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 Q R X tjt|d |jdd	d W d Q R X d}tjt|d |jdd W d Q R X d S )Nr   r   r   r   r   r   r
   r	   r   r+   r7   r8   r9   )r   r.   )r   )r.   )r   r<   r   )r<   z2Cannot specify both 'labels' and 'index'/'columns')r   )r   r   )r   r.   z>Need to specify at least one of 'labels', 'index' or 'columns')r   r   r(   r)   r   r   
ValueError)rB   r"   Zres1Zres2r   r#   r#   r$   test_drop_api_equivalence   s6    
z+TestDataFrameDrop.test_drop_api_equivalencer   r   r   actualr	   )rZ   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 Q R X tjt|d |j	jd|dd W d Q R X |jdd|dd}t
|| |j	jdd|dd}t
|j	| d S )	Nr   z"['c'] not found in axis")r   r+   )r   r<   r   r&   )r<   r   r'   )
isinstancer   r   reescaper   r   r   r   Tr(   r)   )rB   rb   r   r   Zexpected_no_errr#   r#   r$   "test_raise_on_drop_duplicate_index   s    
z4TestDataFrameDrop.test_raise_on_drop_duplicate_indexr   drop_labelsc                s<    fdd|D }t j|d }t|t j|d d S )Nc                s   g | ]}| kr|qS r#   r#   ).0i)rh   r#   r$   
<listcomp>   s    z:TestDataFrameDrop.test_drop_empty_list.<locals>.<listcomp>)r   )r   r   r   r(   r)   )rB   r   rh   Zexpected_indexframer#   )rh   r$   test_drop_empty_list   s    z&TestDataFrameDrop.test_drop_empty_listr   r   c          	   C   s0   t jtdd tj|d| W d Q R X d S )Nznot found in axis)r   )r   )r   r   r   r   r   r   )rB   r   rh   r#   r#   r$   test_drop_non_empty_list  s    z*TestDataFrameDrop.test_drop_non_empty_listc             C   s:  ddddddgddddddgdd	d
dddg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 )Nr	   toproutine1routine2rU   ODresult1Zresult2wxwyr   r   )r.   r   )r<   )r	   rU   rU   )ro   rr   rt   )ro   rr   ru   )r   r<   )rp   rs   rU   )rq   rs   rU   )sortedrP   r   r\   r   r/   r0   r1   r   r(   r)   )rB   ZarraysZtuplesr   r"   r^   rE   r#   r#   r$   test_mixed_depth_drop	  s,    
z'TestDataFrameDrop.test_mixed_depth_dropc             C   s   t ddddgtjdddgddddgd	d
ddgddddg }|jddd}t d
d	gdgtjjddtjdfgdddgdd}t	
|| d S )Nonetwog        g      ?g       @r	   r   r+   r   r   r   r   )rG   rH   rI   DrG   rH   rI   )r   rz   )rx   g        r   )r   )r.   r   )r   r/   nanrR   Z
sort_indexr   r   r   r\   r(   r)   )rB   r"   r^   rE   r#   r#   r$   $test_drop_multiindex_other_level_nan*  s    

 z6TestDataFrameDrop.test_drop_multiindex_other_level_nanc             C   s   t ddddgddddgdddd	gdddd
gddddgdddd
gddddgddddgddddgg	ddddgd}|d }|j|dk }|dddg}|j|jdd }||j	|j  }|j|_t
|| d S )Nzx-axr	   g      ?g333333?zz-czr+   g@gffffff@zx-br   gffffff@g@zy-ayzz-bg @var1Zvar2Zvar3Zvar4)r.   r   r   )r   )r   groupbysizerO   rR   r   r   r]   r   isinr(   r)   )rB   r"   Zgrp_sizeZdrop_idxZidfr^   rE   r#   r#   r$   test_drop_nonuniqueB  s$    







z%TestDataFrameDrop.test_drop_nonuniquec             C   sN  t ddddgdddggdddd	d	d
d
dddg
dd	d
dd	d	d
dd	d
g
gddgd}ttjdd|tdddgddd}|jddgdd}|jdd	d
ddg }t	|| |jdgdd}|jdd
ddddg }t	|| |j
jddgd	dd}|jdd	d
ddg j
}t	|| |j
jdgd	dd}|jdd
ddddg j
}t	|| d S )NZfoobarZbazZquxrx   ry   Zthreer   r   r   r   r:   r;   )levelscodesr   r   rG   rH   rI   exp)r?   )r   r.   )r   r   r   r
   	   )r<   r   )r   r   r/   r0   r1   r   r   r3   r(   r)   rf   )rB   r   rl   r^   rE   r#   r#   r$   test_drop_level_  s(    .z!TestDataFrameDrop.test_drop_levelc             C   s   t dddddgdd}tddd	d	d
g}ttdddtd|d}||d< |jddd}t	d	}|j
jdksxt|j|dd}|j|dk }t|| d S )Nr   r   r   r   id)r?   Z201603231400Z201603231500Z201603231600Z201603231700r   ab)r.   r   ZtstampT)appendF)r   )r   r   to_datetimer   r/   ZarangeZreshaperA   rR   r   r   Z	is_uniquer@   r   rO   r(   r)   )rB   idxZidxdtr"   tsr^   rE   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)r-   r   )rZ   r   z2017-10-29 00:15:00)r   r   r2   lenr   r(   Zassert_equal)
rB   r   startendr   rZ   r^   Zexpected_startZexpected_idxrE   r#   r#   r$   'test_drop_tz_aware_timestamp_across_dst  s    
z9TestDataFrameDrop.test_drop_tz_aware_timestamp_across_dstc             C   sd   t jddddddgddddddggddgd}ttjdd|d	}|d
g}|jjdks`t	d S )Nr   r   r   r   rx   ry   )r   r   )r   )r   r   )rx   ry   )
r   r   r   r/   r0   r1   r   r   r   r@   )rB   r   r"   r^   r#   r#   r$   test_drop_preserve_names  s
    *z*TestDataFrameDrop.test_drop_preserve_namesN)__name__
__module____qualname__rF   rT   r_   ra   rZ   r   markparametrizer   rR   rg   rm   rn   rw   r|   r   r   r   r   r   r   r#   r#   r#   r$   r6   >   s,   //'&"$!r6   )rd   numpyr/   r   Zpandas.errorsr   Zpandasr   r   r   r   r   r   Zpandas._testingZ_testingr(   r   r   r%   r*   r5   r6   r#   r#   r#   r$   <module>   s   