U
    fª/eb@  ã                   @   s>   d dl Z d dlZd dlZd dlZd dlmZ G dd„ dƒZ	dS )é    Nc                	   @   sì  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Z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 d'ejd(gd(d)gd*d+gfejd,d(d)gd*d+gfejd-d(d)gd*d+d.gfg¡d/d0„ ƒZd1d2„ Zd3d4„ Zej d5d+d.d6gd.d6d7d8œd.d6d7gfd9d:d;gd:d;d<d=œd:d;d<gfg¡d>d?„ ƒZej d@d+d.d6gd+dAd6gfdBd.d6gdBdAd6gfg¡dCdD„ ƒZdEdF„ Z ej dGdHdAg¡dIdJ„ ƒZ!ej dGdHdAg¡dKdL„ ƒZ"dMdN„ Z#dOdP„ Z$dQdR„ Z%dSS )TÚTestSeriesReplacec              
   C   sÖ  d}t  tj |¡¡}tj|dd…< d|dd…< |jtjgddd}|d ksPt‚| d¡}t	 
||¡ | d	tj¡}tj||d	k< t	 
||¡ t jt tj |¡¡t	 |¡td
}tj|d d…< d|dd…< d|dd…< | tjddgd¡}|d d… dk ¡ st‚|dd… dk ¡ s t‚|dd… dk ¡ s:t‚t  |d d… ¡ ¡ sVt‚| tjdddddi¡}|d d… dk ¡ sˆt‚|dd… dk ¡ s¢t‚|dd… dk ¡ s¼t‚t  |d d… ¡ ¡ sØt‚| tjddgdddg¡}t	 
||¡ |jtjddgddd}|d ks$t‚|d d… dk ¡ s>t‚|dd… dk ¡ sXt‚|dd… dk ¡ srt‚t  tjdtjg¡}t	 
| tjd¡| d¡¡ t  tjdddtjd t jg¡}t	 
| tjd¡| d¡¡ | ¡ }d|d< t	 
| tjd¡|¡ t  |j¡}t	 
| tjd¡| d¡¡ d}	tjt|	d | dddgtjdg¡ W 5 Q R X | ddgtjdg¡}
t	 
|
|¡ t  dddddg¡}| dddddgdddddg¡}
t	 
|
t  dddddg¡¡ d S )Néd   r   é   é   é
   éÿÿÿÿT©Úinplaceç        ©Zdtypeé   ÚfooÚbaré   é   éþÿÿÿéýÿÿÿz:Replacement lists must match in length\. Expecting 3 got 2©Úmatché   é   é   )ÚpdÚSeriesÚnpÚrandomÚrandnÚnanÚreplaceÚAssertionErrorZfillnaÚtmÚassert_series_equalÚfabsÚmakeDateIndexÚobjectÚallÚisnaÚinfÚNaTÚcopyÚindexÚpytestÚraisesÚ
ValueError)ÚselfZdatetime_seriesÚNÚserÚreturn_valueÚexpÚrsÚrs2ZfilledÚmsgÚresult© r7   úL/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/series/methods/test_replace.pyÚtest_replace   sb    
$" zTestSeriesReplace.test_replacec                 C   sr   t  dtjdddg¡}| ¡ }| tjg¡}t ||¡ t  dtjdddg¡}| ¡ }| tj¡}t ||¡ d S )Nr   r   r   r   )r   r   r   r   Zffillr   r    r!   ©r.   r0   Úexpectedr6   r7   r7   r8   Útest_replace_gh5319V   s    z%TestSeriesReplace.test_replace_gh5319c                 C   sz   t  t jddd¡}| ¡ }t  d¡|jd< | t  d¡t  d¡i¡}t ||¡ | t  d¡t  d¡¡}t ||¡ d S )NÚ20130101r   ©ÚperiodsZ20120101r   Z20130103)	r   r   Ú
date_ranger)   Ú	TimestampÚlocr   r    r!   r:   r7   r7   r8   Útest_replace_datetime64c   s    z)TestSeriesReplace.test_replace_datetime64c                 C   sf   t jddd}t  t jt jdddg¡}| tjt jgt jj¡}t jt jj|gtd}t	 
||¡ d S )Nz
2015/01/01ÚUTC)Útzr   )r   rA   r   r(   r   r   r   Úminr$   r    r!   )r.   ÚtsÚsr6   r;   r7   r7   r8   Útest_replace_nat_with_tzm   s
    z*TestSeriesReplace.test_replace_nat_with_tzc                 C   sf   t jddd}t  |¡}| |d |d i¡}t  |d |d |d |d |d g¡}t ||¡ d S )Nr   r   r>   r   r   r   r   )r   Ztimedelta_ranger   r   r    r!   )r.   Ztdir0   r6   r;   r7   r7   r8   Útest_replace_timedelta_td64u   s
    
(z-TestSeriesReplace.test_replace_timedelta_td64c              
   C   sÜ   t  dddddg¡}| dddg¡}t |t  dddddg¡¡ | ¡ }|jdddgdd}|d ksht‚t |t  dddddg¡¡ | ¡ }d}tjt	|d	( |jdddgdd
d}|d ksÂt‚W 5 Q R X t ||¡ d S )Nr   r   r   r   r   Tr   zVInvalid fill method\. Expecting pad \(ffill\) or backfill \(bfill\)\. Got crash_cymbalr   Zcrash_cymbal)r	   Úmethod)
r   r   r   r    r!   r)   r   r+   r,   r-   )r.   r0   r6   rH   r1   r5   r7   r7   r8   Útest_replace_with_single_list   s    ÿz/TestSeriesReplace.test_replace_with_single_listc              	      s–  t jt d¡dd‰ ‡ fdd„}t  dddd	d
g¡}dgd	g }}||||ƒ t  dddddg¡}dgdg }}||||ƒ t  dddddg¡}ddgddg }}||||ƒ t  ddddt  d¡g¡}ddgdt  d¡g }}||||ƒ t jdddddgdd}ddgddg }}||||ƒ t  t jdddd¡}| t¡ |d |d |d gdddg¡}t jdddg|dd …  	¡  td}t
 ||¡ d S )Nr   Zint64r   c                    sL   ˆ   ¡ }ˆ  | |¡}|j| |dd}|d ks0t‚t ||¡ t ||¡ d S )NTr   )r)   r   r   r    r!   )Zto_repÚvalr;   ZscÚrr1   ©rH   r7   r8   Úcheck_replace—   s    zATestSeriesReplace.test_replace_mixed_types.<locals>.check_replacer
   g      ð?g       @g      @g      @r   r   r   r   g      @r   Úar=   Tr$   z1/1/2001z	1/10/2001ÚD)Úfreq)r   r   r   ZarangerA   r@   Úastyper$   r   Útolistr    r!   )r.   rP   ÚeÚtrÚvZdrr6   r;   r7   rO   r8   Útest_replace_mixed_types”   s*    	*$z*TestSeriesReplace.test_replace_mixed_typesc                 C   s,   t  dddg¡}| dd¡}t ||¡ d S )NTFZfunz
in-the-sun©r   r   r   r    r!   )r.   rH   r6   r7   r7   r8   Ú#test_replace_bool_with_string_no_op¾   s    z5TestSeriesReplace.test_replace_bool_with_string_no_opc                 C   s<   t  dddg¡}| dd¡}t  dddg¡}t ||¡ d S )NTFZ2urZ   ©r.   rH   r6   r;   r7   r7   r8   Útest_replace_bool_with_stringÃ   s    z/TestSeriesReplace.test_replace_bool_with_stringc                 C   s@   t  dddg¡}| dd¡}t  dgt|ƒ ¡}t ||¡ d S )NTF)r   r   r   Úlenr    r!   r\   r7   r7   r8   Útest_replace_bool_with_boolÊ   s    z-TestSeriesReplace.test_replace_bool_with_boolc                 C   s@   t  dddg¡}| dddœ¡}t  dddg¡}t ||¡ d S )NTFZasdbÚyes)ZasdfTrZ   r\   r7   r7   r8   Ú%test_replace_with_dict_with_bool_keysÐ   s    z7TestSeriesReplace.test_replace_with_dict_with_bool_keysc                 C   s|   t jdd g|d dt j¡}t jt jt jg|d}t ||¡ t jddg|d dt j¡}|jdt jdd t ||¡ d S )Nr   r   r   Tr   )r   r   r   ZNAr    r!   )r.   Zany_nullable_int_dtyper6   r;   r7   r7   r8   Útest_replace_Int_with_naÖ   s    z*TestSeriesReplace.test_replace_Int_with_nac                 C   sâ  d}t jt tj |¡¡t |¡td}tj	|d d…< d|dd…< d|dd	…< | 
tj	ddgd
¡}|d d… d
k ¡ szt‚|dd… d
k ¡ s’t‚|dd	… d
k ¡ sªt‚t  |d d… ¡ ¡ sÄt‚| 
tj	d
ddddi¡}|d d… d
k ¡ sôt‚|dd… dk ¡ st‚|dd	… dk ¡ s(t‚t  |d d… ¡ ¡ sDt‚| 
tj	ddgd
ddg¡}t ||¡ |j
tj	ddgd
dd}|d kst‚|d d… d
k ¡ sªt‚|dd… d
k ¡ sÄt‚|dd	… d
k ¡ sÞt‚d S )Nr   r   r   r   r   r   r   r   r   r   r   r   Tr   )r   r   r   r"   r   r   r    r#   r$   r   r   r%   r   r&   r!   )r.   r/   r0   r3   r4   r1   r7   r7   r8   Útest_replace2ß   s,    $zTestSeriesReplace.test_replace2c                 C   sH   t jddtjg|d}t  ddtjg¡}| dddœ¡}t ||¡ d S )NÚoneÚtwor   Ú1Ú2)rd   re   )r   r   r   r   r   r    r!   )r.   Znullable_string_dtyperH   r;   r6   r7   r7   r8   Ú+test_replace_with_dictlike_and_string_dtype  s    z=TestSeriesReplace.test_replace_with_dictlike_and_string_dtypec              	   C   sV   t  tdƒ¡}t || i ¡¡ t t¡ t  g ¡}W 5 Q R X t || |¡¡ d S )NZabcd)r   r   Úlistr    r!   r   Zassert_produces_warningÚDeprecationWarning)r.   rH   Zempty_seriesr7   r7   r8   Ú test_replace_with_empty_dictlike  s
    z2TestSeriesReplace.test_replace_with_empty_dictlikec                 C   s>   t  dddg¡}| dtj¡}t  dddg¡}t ||¡ d S ©Nr   r   r   rg   ©r   r   r   r   r   r    r!   r\   r7   r7   r8   Útest_replace_string_with_number  s    z1TestSeriesReplace.test_replace_string_with_numberc                 C   s<   t  ddg¡}t  ddg¡}| dddœ¡}t ||¡ d S )NrQ   Úb)rQ   ro   rZ   )r.   rH   r;   r6   r7   r7   r8   Ú(test_replace_replacer_equals_replacement  s    z:TestSeriesReplace.test_replace_replacer_equals_replacementc                 C   s>   t  dddg¡}| dtj¡}t  dddg¡}t ||¡ d S rl   rm   r\   r7   r7   r8   Ú test_replace_unicode_with_number   s    z2TestSeriesReplace.test_replace_unicode_with_numberc                 C   sR   t  ddddddg¡}| ddgtj¡}t  dtjdtjddg¡}t ||¡ d S )Nr   r   r   Ú4r   r   rm   r\   r7   r7   r8   Ú$test_replace_mixed_types_with_string'  s    z6TestSeriesReplace.test_replace_mixed_types_with_stringzcategorical, numericÚAÚB)Ú
categoriesr   )rt   ©rt   ru   r   c                 C   s4   t  |¡}| dddœ¡}t  |¡}t ||¡ d S )Nr   r   rw   rZ   )r.   ZcategoricalÚnumericrH   r6   r;   r7   r7   r8   Útest_replace_categorical.  s    

z*TestSeriesReplace.test_replace_categoricalc                 C   s  t jdddd}t  |¡}| d¡}| ¡ }|j d¡}d|d< |j ¡ }|d dksZt‚| 	|d d¡}t
 ||¡ |d dks†t‚|j	|d ddd	}|d ks¦t‚t
 ||¡ |d
 }|j	|d |d
 dd	}|d ksÞt‚|d
 |d   krü|ksn t‚d S )Nz
2016-01-01r   z
US/Pacific)r?   rE   Úcategoryr   r   Tr   r   r   )r   r@   r   rT   r)   ÚcatZadd_categoriesZremove_unused_categoriesr   r   r    r!   )r.   ZdtirH   Úcr;   r6   r1   Zfirst_valuer7   r7   r8   Útest_replace_categorical_single?  s$    


z1TestSeriesReplace.test_replace_categorical_singlec                 C   s„   t  dddddg¡}| dgdg¡}t  dddddg¡}t ||¡ t  dddg¡}| dgdg¡}t  dddg¡}t ||¡ d S )Nr   r   r   r   r   Z100000000000000000000Z100000000000000000001rZ   r\   r7   r7   r8   Ú"test_replace_with_no_overflowerrorX  s    z4TestSeriesReplace.test_replace_with_no_overflowerrorzser, to_replace, expr   r   )r   r   r   rf   rg   Ú3rr   )rf   rg   r   c                 C   s.   t  |¡}t  |¡}| |¡}t ||¡ d S ©NrZ   )r.   r0   Ú
to_replacer2   Úseriesr;   r6   r7   r7   r8   Útest_replace_commutativee  s    


z*TestSeriesReplace.test_replace_commutativezser, expTÚxc                 C   s0   t  |¡}| dd¡}t  |¡}t ||¡ d S )Nr   TrZ   )r.   r0   r2   r‚   r6   r;   r7   r7   r8   Útest_replace_no_castw  s    

z&TestSeriesReplace.test_replace_no_castc              	   C   s@   t  dddg¡}d}tjt|d | dd„ ¡ W 5 Q R X d S )NrQ   ro   úc zZExpecting 'to_replace' to be either a scalar, array-like, dict or None, got invalid type.*r   c                 S   s   |   ¡ S r€   )Ústrip)r„   r7   r7   r8   Ú<lambda>  ó    zCTestSeriesReplace.test_replace_invalid_to_replace.<locals>.<lambda>)r   r   r+   r,   Ú	TypeErrorr   )r.   r‚   r5   r7   r7   r8   Útest_replace_invalid_to_replace„  s
    ÿz1TestSeriesReplace.test_replace_invalid_to_replaceÚframeFc              	   C   sN   t  dddg¡}|r| ¡ }d}tjt|d |jdgdd W 5 Q R X d S )NrQ   ro   r†   z4'to_replace' must be 'None' if 'regex' is not a boolr   r   )r   Úregex)r   r   Úto_framer+   r,   r-   r   )r.   rŒ   Úobjr5   r7   r7   r8   Útest_replace_nonbool_regex  s    z,TestSeriesReplace.test_replace_nonbool_regexc                 C   sd   t jg tjd}|r| ¡ }|jdddd}|d ks8t‚|jdddd}t ||¡ ||k	s`t‚d S )Nr   r   r   Tr   F)	r   r   r   Zfloat64rŽ   r   r   r    Úassert_equal)r.   rŒ   r   Úresr7   r7   r8   Útest_replace_empty_copy™  s    z)TestSeriesReplace.test_replace_empty_copyc              	   C   sŽ   t  dddt j ¡ dg¡}dddœ}d}d}tjt|d | ||¡ W 5 Q R X d}dd	dœ}d
}tjt|d | ||¡ W 5 Q R X d S )Nr   r   rt   T)r   r   r   zASeries.replace cannot use dict-like to_replace and non-None valuer   r   z<Series.replace cannot use dict-value and non-None to_replace)r   r   rA   Únowr+   r,   r-   r   )r.   r0   r   Úvaluer5   r7   r7   r8   Ú"test_replace_only_one_dictlike_arg¦  s    

z4TestSeriesReplace.test_replace_only_one_dictlike_argc                 C   s4   |t jdddgddƒ}| dd¡}t ||¡ d S )Nr   r   r   ZInt64r   Ú )r   Úarrayr   r    r‘   )r.   Zframe_or_seriesr   r6   r7   r7   r8   Útest_replace_extension_other¶  s    z.TestSeriesReplace.test_replace_extension_otherc                 C   sL   t  dddg¡}t d¡}|j|didd}t  dddg¡}t ||¡ d S )NrQ   ro   r|   z^a$ÚzT)r   )r   r   ÚreÚcompiler   r    r!   )r.   rH   r   r6   r;   r7   r7   r8   Ú test_replace_with_compiled_regex½  s
    
z2TestSeriesReplace.test_replace_with_compiled_regexN)&Ú__name__Ú
__module__Ú__qualname__r9   r<   rC   rI   rJ   rL   rY   r[   r]   r_   ra   rb   rc   rh   rk   rn   rp   rq   rs   r+   ÚmarkZparametrizer   ZCategoricalry   r}   r~   rƒ   r…   r‹   r   r“   r–   r™   r   r7   r7   r7   r8   r   
   sb   K

*	"	ýþ
	þþ
 &ÿ


	
r   )
r›   Znumpyr   r+   Zpandasr   Zpandas._testingZ_testingr    r   r7   r7   r7   r8   Ú<module>   s
   