3
Ud^                 @   s   d dl m Z  d dlmZ d dlZd dlmZmZmZ d dlZ	d dl
Z
d dlZd dlmZmZmZmZmZ d dljZe
jeeeeeef  f dddZe
jeeeeeef  f dd	d
ZG dd dZdS )    )datetime)StringION)DictListUnion)	DataFrameIndexSeries	Timestamp
date_range)returnc               C   s   t tdt ddS )N   zab..)ab)listrange r   r   [/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/frame/methods/test_replace.pymix_ab   s    r   c               C   s"   t tdt dddtjdgdS )Nr   zab..r   r   d)r   r   c)r   r   npnanr   r   r   r   mix_abc   s    r   c               @   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ejjd!d"d#d$d%d&gd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z ejjd=e!d>d?d@dAgid?dBe!d>dBd@dAgife!d>d?d@dAgie"j#dCd?dBe!d>dBd@dAgie"j#dCfe!d>d?d@dAgie"j$dCd?dBe!d>dBd@dAgie"j$dCfe!dDdEdFdEgidFdEe!dDdEdEdEgife!dGdHdIdJgidHdBe!dGdKdIdJgife!dLe%e&dMdNdOe&dMdPdOe&dMdNdOgie&dMdNdOe&dMdPdOe!dLe%e&dMdPdOgdA ife!e&dQdRdSgdTgdUdTdVe!e&dQdRdSgdVgdUfe!e'dWdAdXdYdBe"j(d@gdZe)d[dXd\e)d]dXd\e!e)dWdXd\e)d]dXd\e)d^dXd\gdBe"j(d@gdZfe!d?d_gd@d`ggd_dNe!dNdagd@d`ggfe!d?d_gd@d`ggd?dNe!dNdagd@d`ggfe!d?d_gd@d`ggd_dae!dNdagd@d`ggfe!d?d_gd@d`ggd?dae!dNdagd@d`ggfgdbdc Z*ddde Z+dfdg Z,dhdi Z-djdk Z.dldm Z/dndo Z0dpdq Z1drds Z2dtdu Z3dvdw Z4dxdy Z5dzd{ Z6d|d} Z7d~d Z8dd Z9dd Z:dd Z;dd Z<dd Z=ejjddBdd?d?d@gdNe"j(dPgdddgdfe"j(ddBd?d@gdaddgdddgdfdddBd?d@gdNe"j(dPgdddgdfdBd@gdd?d?d@gdNe"j(dPgdddgdfd?d@gddBdBdBgdNe"j(dPgdddgdfdddBd@d@gdNe"j(dPgdddgdfddgddBd?d@gdNe"j(dPgdddgdfgdd Z>ejjdd?d?ddAdAgd@d@ggfd?d@ddAd?gd@dAggfgdd Z?ejjdd?d@dAgddNdgddNddPdd?d@dAgdNddPgdfd?d@dAgdddgdddddd?d@dAgdddgdfgdd Z@ejjdeAj)de"jBd?e"j$d?e"jCd?e"jDd?gdd ZEdd ZFdd ZGejjddddddgejjde"j(eAjHgdd ZIejjde"j(dNgdd ZJejjKddEddd ZLdd ZMejjKddEddd ZNddĄ ZOddƄ ZPdS )TestDataFrameReplacec             C   s   t j|d d d< t j|d d
d < |j }|jt jddd}|d ksJttj||jd |}t j|jdd|j	j
df< t j|jdd |j	j
df< |jt jd}|jdd	}tj|| |j }|jt jgdgdd}|d ksttj||jd d S )NA   r   T)inplace   foo
   )valuei)r   r   copyreplaceAssertionErrortmassert_frame_equalfillnailoccolumnsget_loc)selfdatetime_framefloat_string_frametsframereturn_valuemfresultexpectedr   r   r   test_replace_inplace   s     z)TestDataFrameReplace.test_replace_inplacec       	      C   s0  t dt dd}t|}t|}|jdtjdd}tj||jd |jdtjdd}tj||jd |jdd	dd}|j }d
dddg|d
< t|}tj|| |jdd	dd}|j }d
dddg|d< t|}tj|| |jt	j
dtjdd}tj||jd |jt	j
dtjdd}tj||jd |jt	j
dd	}|j }d
dddg|d
< t|}tj|| |jt	j
dd	}|j }d
dddg|d< t|}tj|| |jt	j
dd	d}|j }d
dddg|d< t|}tj|| |jdd	d}|j }d
dddg|d< t|}tj|| d S )Nzab..efgh)r   r   z\s*\.\s*T)regex.z
\s*(\.)\s*z\1\1\1r   r   z...)r6   r!   )r   r   r$   r   r   r&   r'   r(   r#   recompile)	r,   r   objdfobjdfmixresobjcexpecmixcr   r   r   test_regex_replace_scalar0   sR    z.TestDataFrameReplace.test_regex_replace_scalarc       
      C   s  t dt dd}t|}t|}|j }|jdtjddd}|d ksJttj||j	d |j }|jdtjddd}|d ksttj||j	d |j }|jdd	ddd}|d kst|j }d
dddg|d
< t|}tj|| |j }|jdd	ddd}|d kst|j }	d
dddg|	d< t|	}tj|| |j }|jt
jdtjddd}|d kslttj||j	d |j }|jt
jdtjddd}|d ksttj||j	d |j }|jt
jdd	ddd}|d kst|j }d
dddg|d
< t|}tj|| |j }|jt
jdd	ddd}|d ksHt|j }	d
dddg|	d< t|	}tj|| |j }|jdtjdd}|d ksttj||j	d |j }|jdtjdd}|d ksttj||j	d |j }|jdd	dd}|d kst|j }d
dddg|d
< t|}tj|| |j }|jdd	dd}|d ks`t|j }	d
dddg|	d< t|	}tj|| |j }|jt
jdtjdd}|d ksttj||j	d |j }|jt
jdtjdd}|d ksttj||j	d |j }|jt
jdd	dd}|d ks8t|j }d
dddg|d
< t|}tj|| |j }|jt
jdd	dd}|d kst|j }	d
dddg|	d< t|	}tj|| d S )Nzab..r5   )r   r   z\s*\.\s*T)r6   r   r7   z
\s*(\.)\s*z\1\1\1r   r   z...)r6   r!   r   )r   r   r#   r$   r   r   r%   r&   r'   r(   r8   r9   )
r,   r   r:   r;   r<   r=   r0   r>   r?   r@   r   r   r   !test_regex_replace_scalar_inplaceq   s    z6TestDataFrameReplace.test_regex_replace_scalar_inplacec             C   s|  t dt dt dd}t|}ddg}tjdg}|j||dd	}td
dtjtjgdgd dg ddddgd}tj|| ddg}ddg}|j||dd	}td
dddgddddgddddgd}tj|| ddg}ddg}|j||dd	}td
dddgddddgddddgd}tj|| ddg}ddg}|j||d}td
dddgddddgddddgd}tj|| d S )Nzab..r5   helo)r   r   r   z\s*\.\s*ze|f|gcrapT)r6   r   r      hloz
\s*(\.)\s*z(e|f|g)z\1\1z\1_crapz..e_crapf_crapg_crapefg)r!   r6   )r   r   r   r   r$   r&   r'   )r,   r:   r;   to_replace_resvaluesr=   r?   r   r   r   test_regex_replace_list_obj  sD    






z0TestDataFrameReplace.test_regex_replace_list_objc             C   s  t dt dt dd}t|}ddg}tjdg}|j }|j||ddd	}|d ksXttd
dtjtjgdgd dg ddddgd}tj|| ddg}ddg}|j }|j||ddd	}|d ksttd
dddgddddgddddgd}tj|| ddg}ddg}|j }|j||ddd	}|d ks6ttd
dddgddddgddddgd}tj|| ddg}ddg}|j }|j||dd}|d ksttd
dddgddddgddddgd}tj|| d S )Nzab..r5   rC   )r   r   r   z\s*\.\s*ze|f|grD   T)r   r6   r   r   rE   rF   rG   rH   z
\s*(\.)\s*z(e|f|g)z\1\1z\1_crapz..rI   rJ   rK   rL   rM   rN   )r!   r6   r   )	r   r   r   r   r#   r$   r%   r&   r'   )r,   r:   r;   rO   rP   r=   r0   r?   r   r   r   #test_regex_replace_list_obj_inplace<  sT    






z8TestDataFrameReplace.test_regex_replace_list_obj_inplacec       	      C   s^  t |}ddg}tjdg}ttdtdtdd}t |}|j||dd	}t |d dd
tjtjgddddgd}tj|| ddg}ddg}|j||dd	}t |d ddddgd}tj|| dddg}dddg}|j||dd	}t |d ddddgd}tj|| dddg}dddg}|j||d}t |d ddddgd}tj|| d S )Nz\s*\.\s*r   rD   r   zab..Zhalo)r   r   r   T)r6   r   rF   rG   rH   z
\s*(\.)\s*z(a|b)z\1\1z\1_crapa_crapb_crapz..)r   r   z(b))r6   r!   )r   r   r   r   r   r$   r&   r'   )	r,   r   r<   rO   rP   Zmix2Zdfmix2r=   r?   r   r   r   test_regex_replace_list_mixed  s4    




z2TestDataFrameReplace.test_regex_replace_list_mixedc             C   s  t |}ddg}tjdg}|j }|j||ddd}|d ks@tt |d ddtjtjgd}tj|| dd	g}d
dg}|j }|j||ddd}|d kstt |d ddddgd}tj|| dddg}d
ddg}|j }|j||ddd}|d kstt |d ddddgd}tj|| dddg}d
ddg}|j }|j||dd}|d ksbtt |d ddddgd}tj|| d S )Nz\s*\.\s*r   rD   T)r   r6   r   )r   r   z
\s*(\.)\s*z(a|b)z\1\1z\1_craprS   rT   z..z(b))r6   r!   r   )r   r   r   r#   r$   r%   r&   r'   )r,   r   r<   rO   rP   r=   r0   r?   r   r   r   %test_regex_replace_list_mixed_inplace  s:    




z:TestDataFrameReplace.test_regex_replace_list_mixed_inplacec             C   s  t |}|jddidtjidd}|j }|jddidtjiddd}|d ksRtt |d ddtjtjg|d d}tj|| tj|| |jdd	idd
idd}|j }|jdd	idd
iddd}|d kstt |d ddddg|d d}tj|| tj|| |jdd	idd
id}|j }|jdd	idd
idd}|d ksPtt |d ddddg|d d}tj|| tj|| t |d tjdddg|d d}|jddtjidd}|j }|jddtjiddd}|d ksttj|| tj|| |jddtjidd}|j }|jddtjidd}|d ksHtt |d tjdddg|d d}tj|| tj|| d S )Nr   z\s*\.\s*T)r6   )r   r6   r   r   )r   r   r   z
\s*(\.)\s*z\1tyz.ty)r6   r!   )r6   r!   r   r7   )r6   r   )r   r$   r   r   r#   r%   r&   r'   )r,   r   r<   r=   res2r0   r?   r   r   r   test_regex_replace_dict_mixed  sX    "  z2TestDataFrameReplace.test_regex_replace_dict_mixedc       	      C   s   t |}|jddtjiidd}|j }|j }|jddtjiiddd}|d ksVt|jddtjiid}|jddtjiidd}|d kstt |d ddtjtjg|d d	}tj|| tj|| tj|| tj|| d S )
Nr   z\s*\.\s*T)r6   )r   r6   )r6   r   r   r   )r   r   r   )r   r$   r   r   r#   r%   r&   r'   )	r,   r   r<   r=   rW   Zres4r0   res3r?   r   r   r   test_regex_replace_dict_nested  s     "z3TestDataFrameReplace.test_regex_replace_dict_nestedc             C   sJ   t jddddgi}t jddddgi}|jdd	id
d}tj|| d S )NfirstabcZbcaZcabz.bczbc.zc.br   r7   T)r6   )pdr   r$   r&   r'   )r,   dfr3   r2   r   r   r   2test_regex_replace_dict_nested_non_first_character*  s    zGTestDataFrameReplace.test_regex_replace_dict_nested_non_first_characterc             C   sV   t jdddddgdd}tdddddgdd}|jddddi}tj|| d S )	NQT   )Typetmpr      rc   )r`   ra   )r]   r   r$   r&   r'   )r,   r^   r3   r2   r   r   r   %test_regex_replace_dict_nested_gh41151  s    z:TestDataFrameReplace.test_regex_replace_dict_nested_gh4115c             C   s   t |}t |d tjtjgd tjtjtjdgd}|jddgtjdd}|j }|j }|jddgtjddd	}|d kst|jddgtjdd
}|d ksttj|| tj|| tj|| d S )Nr   r   r   )r   r   r   z\s*\.\s*za|bT)r6   )r6   r   )r6   r!   r   )	r   r   arrayr   r$   r#   r%   r&   r'   )r,   r   r^   r?   r=   rW   rY   r0   r   r   r   !test_regex_replace_list_to_scalar7  s"    z6TestDataFrameReplace.test_regex_replace_list_to_scalarc             C   s   t |}|jdddd}|j }|jddddd}|d ks>t|j }|jdddd}|d ksbtt |d ddddg|d	 d
}tj|| tj|| tj|| d S )Nz\s*\.\s*r   T)r6   )r   r6   )r6   r!   r   r   r   r   )r   r   r   )r   r$   r#   r%   r&   r'   )r,   r   r^   r=   rW   r0   rY   r?   r   r   r   !test_regex_replace_str_to_numericO  s     z6TestDataFrameReplace.test_regex_replace_str_to_numericc             C   s   t |}|jddgddd}|j }|jddgdddd}|d ksFt|j }|jddgddd}|d ksntt |d ddddgddtjd	gd
}tj|| tj|| tj|| d S )Nz\s*\.\s*r   r   T)r6   )r6   r   )r6   r!   r   r   r   )r   r   r   )r   r$   r#   r%   r   r   r&   r'   )r,   r   r^   r=   rW   r0   rY   r?   r   r   r   (test_regex_replace_regex_list_to_numeric^  s    $z=TestDataFrameReplace.test_regex_replace_regex_list_to_numericc       
      C   s   t |}tddi}tdtji}|j||dd}|j }|j||ddd}|d ksXt|j }|j||dd}|d ks|tt |d ddtjtjg|d d	}	tj||	 tj||	 tj||	 d S )
Nr   z\s*\.\s*T)r6   )r   r6   )r6   r!   r   r   r   )r   r   r   )	r   r	   r   r   r$   r#   r%   r&   r'   )
r,   r   r^   s1s2r=   rW   r0   rY   r?   r   r   r   $test_regex_replace_series_of_regexesn  s    "z9TestDataFrameReplace.test_regex_replace_series_of_regexesc             C   sV   t |}t ddddg|d |d d}|jdd}tj|| |jjtjksRtd S )	Nr   re   rb   rE   r   r   )r   r   r   r   )	r   r$   r&   r'   r   dtyper   Zobject_r%   )r,   r   r^   r?   r=   r   r   r   /test_regex_replace_numeric_to_object_conversion  s
     zDTestDataFrameReplace.test_regex_replace_numeric_to_object_conversionmetacharz[]z()z\dz\wz\sc             C   sB   t d|dgi}|jd|dii}t dddgi}tj|| d S )Nr   elseZparen)r   r$   r&   r'   )r,   rp   r^   r2   r3   r   r   r   test_replace_regex_metachar  s    z0TestDataFrameReplace.test_replace_regex_metacharc             C   s  t j|d d d< t j|d dd < |jt jd}tj||jd tj|jdt j| t j|d d d< t j|d dd < d|d d d< tddgd}tj||jdd tjd	tjd
fdtjdfg}|jd	t j}tjt jtjd
fdtjdfg}tj|| d S )Nr   r   g    חABr   r   )index   -Z20150101Z20150102r"   g    חg    חg    חr"   g    ח)	r   r   r$   r&   r'   r(   r   r]   to_datetime)r,   r-   zero_filledr^   Zdf1Zexpected_dfr   r   r   test_replace  s      z!TestDataFrameReplace.test_replacec             C   s   t dt dt dd}t|}ddg}tjdg}|j||}tdd	tjtjgdd
ddgddddgd}tj|| dd
g}ddg}|j||}tdd	ddgddddgddddgd}tj|| d S )Nzab..r5   rC   )r   r   r   r7   rL   rD   r   r   rM   rN   rF   rG   rH   z..)r   r   r   r   r$   r&   r'   )r,   r:   r;   rO   rP   r=   r?   r   r   r   test_replace_list  s$    



z&TestDataFrameReplace.test_replace_listc             C   s   t jddgg tjdgg}t jd|i}|}|jg tj}tj|| tj	t
dd |jtjg i W d Q R X tj	t
dd |jtjddgi W d Q R X d S )	Nr   r   re   colzcannot assign mismatch)matchdummyZalt)r]   r	   r   r   r   r$   r&   r'   pytestraises
ValueError)r,   sr^   r3   r2   r   r   r   test_replace_with_empty_list  s    z1TestDataFrameReplace.test_replace_with_empty_listc             C   s   t ddddddd}|jdddd}t ddddddd}tj|| |jd|j }tj|| t ddddddd}tddd}|j|ddd}t ddddddd}tj|| |j||j }tj|| d S )	Ng        re   )r   r   g       @r   )Zzerooneg      ?g      ?)r   r$   r&   r'   meanr	   )r,   r^   r2   r3   r   r   r   r   test_replace_series_dict  s    z-TestDataFrameReplace.test_replace_series_dictc             C   sT   t dddgdddgg}dddd}|j|}ttjgd }|j}tj|| d S )Nr   barbahre   rb   rE   )r   r   r   )r   r$   r	   r   int64Zdtypesr&   assert_series_equal)r,   r^   mrepr?   r=   r   r   r   test_replace_convert  s    
z)TestDataFrameReplace.test_replace_convertc             C   s  |}t j|jdd|jjdf< t j|jdd |jjdf< |jt jd}|jdd}tj|| tj|jdt j| |jt jd}|jdd}tj|| tj|jdt j| t	t
d	d
gddt
ddgddd}t	t
d	d
gddt
ddgddd}|jdd}tj|| |jdddd}|d ks6ttj|| t	t
d	d
gddt
ddgddt
ddgddd}t	t
d	d
gddt
ddgddt
ddgddd}|jdd}tj|| t	t
d	d
gddt
ddgddd}t	t
ddgddt
ddgddd}|jdd}tj|| t	t
ddgddt
ddgddd}|jddgddg}tj|| t	t
ddgddt
ddgddd}|jd|j j }|j jd}|j }|d |jd < |d |jd!< tj|| d S )"Nr   r   r   r    r      )r!   g    חAg      ?g       @float64)rn   r   re   r   )r   rs   g      ?T)r   rb   )r   rs   Cobjectr   rE   iiiig    חg    חg    ח)r   r   )re   re   )r   r   r)   r*   r+   r$   r(   r&   r'   r   r	   r%   r   to_dictr#   astype)r,   r.   r1   r2   r3   r^   r0   r   r   r   r   test_replace_mixed  sj    $z'TestDataFrameReplace.test_replace_mixedc             C   sf   t dtddi}t dddddgi}|jddddi}tj|| |jddd}tj|| d S )	Nr{   re   r   r   rb   rE   r   )re   r   )r   r   r$   r&   r'   )r,   r^   r3   r2   r   r   r   test_replace_simple_nested_dictL  s    z4TestDataFrameReplace.test_replace_simple_nested_dictc             C   sr   t dtddi}t dddddgi}|jd
dddd	di}tj|| |jdddddd	dii}tj|| d S )Nr{   re   r   r   rb   rE   r   rv   r   r   )r   r   r$   r&   r'   )r,   r^   r3   r2   r   r   r   6test_replace_simple_nested_dict_with_nonexistent_valueW  s    zKTestDataFrameReplace.test_replace_simple_nested_dict_with_nonexistent_valuec             C   s   |j d }|j d }tj|j d< d|j d< |jtjdid}|jjtjdidj}tj|| |jtjddd	id}|j }d|j d
< d|j d< |}tj|| ||j d< ||j d< d S )Nr   re   )
to_replaceg    חA)r   r   )re   r   )r   r   )re   r   g    ח)r   r   g    ח)re   r   )r   r   )re   r   )r)   r   r   r$   ra   r&   r'   r#   )r,   r-   Z
orig_valueZorig2r2   r3   r/   r   r   r   test_replace_value_is_nonea  s    





z/TestDataFrameReplace.test_replace_value_is_nonec             C   s   |j  jtj}tj|d d d< tj|d dd < |jtjd}tj||jd	 tj|jd
tj| tj|d d d< tj|d dd < d|d d d< |d }tj||dk< ||d< |jdd}tj||jdd d S )Nr   r   g    חArs   bfill)methodr"   g    חg    חg    חr"   g    חg    ח)	r#   r   r   float32r   r$   r&   r'   r(   )r,   r-   r/   rx   r   r2   r   r   r   test_replace_for_new_dtypesu  s    z0TestDataFrameReplace.test_replace_for_new_dtypesz"frame, to_replace, value, expectedintsre   rb   rE   r   )rn   ZboolsTFcomplexy              ?y               @y              @y                Z
datetime64i  r      ru   i     r   r   )dtstrr   20130101z
US/Eastern)periodstz)r   rs   20130102)r   2013010420130103g      ?g       @g      @c             C   s    t |d||}tj|| d S )Nr$   )getattrr&   r'   )r,   framer   r!   r3   r2   r   r   r   test_replace_dtypes  s    Tz(TestDataFrameReplace.test_replace_dtypesc                s  t jddd ddddtt jdt jgdddgddd	gd}|j } fd
d|j D }tj|t| |jdddgdddg}tt jdt jgdddgddd	gd}tj|| ddddtt jdt jgdddgddd	gd}|jt j}fdd|j D }tj|t| t jddg dddg|j }|j }x<t	t
 D ],}|j | | dd}|d ks\tq\W tj|| d}tjt|d |j dd   W d Q R X d S )Nr    )r   rs   r   re   missingrb   r   asdffdc                s&   i | ]\}}|j  | | |qS r   )r$   ).0kv)to_reprP   r   r   
<dictcomp>  s    zLTestDataFrameReplace.test_replace_input_formats_listlike.<locals>.<dictcomp>c                s$   i | ]\}}|j tj | |qS r   )r$   r   r   )r   r   r   )rP   r   r   r     s    T)r   z:Replacement lists must match in length\. Expecting 3 got 2)r|   r   r   r   )r   r   r   infr$   itemsr&   r'   r#   r   lenr%   r~   r   r   )r,   r^   filledr3   r2   ir0   msgr   )r   rP   r   #test_replace_input_formats_listlike  s8    $$$
z8TestDataFrameReplace.test_replace_input_formats_listlikec                s   t tjdtjgdddgdddgd}tjddd |j d} fdd	|j D }tj|t | d
}tj	t
|d |j tjddg W d Q R X tjddg |j d}|j }x4tt D ]$}|j | ddd}|d kstqW tj|| d S )Nr   rb   r   r   r   r   )r   rs   r   c                s"   i | ]\}}|j  | d |qS )r   )r$   )r   r   r   )r   r   r   r     s    zJTestDataFrameReplace.test_replace_input_formats_scalar.<locals>.<dictcomp>z.value argument must be scalar, dict, or Series)r|   re   T)r   r   r   )r   r   r   r   r$   r   r&   r'   r~   r   	TypeErrorr#   r   r   r%   )r,   r^   r   r3   r   r2   r   r0   r   )r   r   !test_replace_input_formats_scalar	  s     $z6TestDataFrameReplace.test_replace_input_formats_scalarc             C   s   d S )Nr   )r,   r   r   r   test_replace_limit!  s    z'TestDataFrameReplace.test_replace_limitc             C   sR   t dddddd}ddd	d
dd}t d
dd	ddd}|j|}tj|| d S )NzStrongly AgreeAgreeNeutralDisagreezStrongly Disagree)r   re   rb   rE   r   r   rb   rE   r   re   )r   r   r   zStrongly AgreezStrongly Disagree)r	   r$   r&   r   )r,   answerweightsr3   r2   r   r   r   test_replace_dict_no_regex$  s    

z/TestDataFrameReplace.test_replace_dict_no_regexc             C   sV   t dddddd}t ddd	d
dd}t d
dd	ddd}|j|}tj|| d S )NzStrongly Agreer   r   r   zStrongly Disagree)r   re   rb   rE   r   r   rb   rE   r   re   )r   r   r   zStrongly AgreezStrongly Disagree)r	   r$   r&   r   )r,   r   r   r3   r2   r   r   r   test_replace_series_no_regex9  s    


z1TestDataFrameReplace.test_replace_series_no_regexc             C   s   t ttjdgd}|jtjdddid}|jdtjfd	dgd}|jdtjgd
dgd}t dddgi}tj|| tj|| tj|| d S )Nre   )r   r   g    חA)r   )r   r!   r   g    חg    חg    חg    ח)r   dictr   r   r$   r&   r'   )r,   r^   Zres1rW   rY   r3   r   r   r   6test_replace_dict_tuple_list_ordering_remains_the_sameP  s    zKTestDataFrameReplace.test_replace_dict_tuple_list_ordering_remains_the_samec             C   s4   d}t jt|dd}|jddi}tj|| d S )Nzfol T_opp T_Dir T_Enh
        0    1     0     0    vo
        1    2    vr     0     0
        2    2     0     0     0
        3    3     0    bt     0z\s+)sepz\Dre   )r]   Zread_csvr   r$   r&   r'   )r,   rawr^   r=   r   r   r   )test_replace_doesnt_replace_without_regex[  s    z>TestDataFrameReplace.test_replace_doesnt_replace_without_regexc             C   sF   t ddgtdd}|jdd}t ddg|jd}tj|| d S )NTFab)r   r   r   )r   r   r$   r   r&   r'   )r,   r^   r2   r3   r   r   r   test_replace_bool_with_stringe  s    z2TestDataFrameReplace.test_replace_bool_with_stringc             C   s2   t tjjdddk}|jdd}tj|| d S )Nrb   g      ?r   Zfdsa)r   r   randomrandr$   r&   r'   )r,   r^   r2   r   r   r   (test_replace_pure_bool_with_string_no_opk  s    z=TestDataFrameReplace.test_replace_pure_bool_with_string_no_opc             C   sD   t tjjdddk}|jdd}t tjdtd}tj|| d S )Nrb   g      ?FT)rn   )rb   rb   )	r   r   r   r   r$   Zonesboolr&   r'   )r,   r^   r2   r3   r   r   r   test_replace_bool_with_boolp  s    z0TestDataFrameReplace.test_replace_bool_with_boolc             C   sD   t ddgddgd}tjtdd |jddd W d Q R X d S )	NTF)r   re   zCannot compare types .+)r|   Zasdbyes)r   T)r   r~   r   r   r$   )r,   r^   r   r   r   %test_replace_with_dict_with_bool_keysv  s    z:TestDataFrameReplace.test_replace_with_dict_with_bool_keysc             C   s<   t dddgi}|jtjtj gtj}|}tj|| d S )Nr   T)r   r$   r   r   r   r&   r'   )r,   r^   rrL   r   r   r   test_replace_truthy{  s    z(TestDataFrameReplace.test_replace_truthyc             C   sj   t dttddi}|jdtttddtddi}|jtttddtdd}tj|| d S )Nr   re   r   rb      )r   r   r   r$   r   zipr&   r'   )r,   r^   r2   r3   r   r   r   -test_nested_dict_overlapping_keys_replace_int  s    $ zBTestDataFrameReplace.test_nested_dict_overlapping_keys_replace_intc             C   sp   t jdd}|jt}t jddjt}td|i}|jtt||}|jdtt||i}tj	|| d S )Nre   r   rb   r   r   )
r   Zaranger   r   r   r$   r   r   r&   r'   )r,   r   ZastrZbstrr^   r2   r3   r   r   r   -test_nested_dict_overlapping_keys_replace_str  s    
zBTestDataFrameReplace.test_nested_dict_overlapping_keys_replace_strc             C   s   t jddddgi}|jddddi}t jddddgi}tj|| t jddddgi}|jdddd	i}t jddddgi}tj|| d S )
Nr   TFYN)TFr   re   )r   re   )r]   r   r$   r&   r'   )r,   r^   r=   expectr   r   r   test_replace_swapping_bug  s    z.TestDataFrameReplace.test_replace_swapping_bugc                s   dt jddddt jddddt jddddt jdd	ddt jddddt jddddt jd
ddddi t jdddddddgdgd}t|jjt d j ksttd fdd|jjD itd}|j	 }t
j|| d S )Nfnamei     M)yearmonthfreqre   i  r   r   i  	   )zout_augmented_AUG_2011.jsonzout_augmented_JAN_2011.jsonzout_augmented_MAY_2012.jsonzout_augmented_SUBSIDY_WEEK.jsonzout_augmented_AUG_2012.jsonzout_augmented_MAY_2011.jsonzout_augmented_SEP_2013.jsonzout_augmented_AUG_2012.jsonzout_augmented_SEP_2013.jsonzout_augmented_SUBSIDY_WEEK.jsonzout_augmented_MAY_2012.jsonzout_augmented_MAY_2011.jsonzout_augmented_AUG_2011.jsonzout_augmented_JAN_2011.json)r*   c                s   g | ]} d  | qS )r   r   )r   r   )r   r   r   
<listcomp>  s    z<TestDataFrameReplace.test_replace_period.<locals>.<listcomp>)rn   )r]   Periodr   setr   rP   keysr%   r   r$   r&   r'   )r,   r^   r3   r2   r   )r   r   test_replace_period  s.    

  
z(TestDataFrameReplace.test_replace_periodc          	      s   dt jdt jdt jdt jdt jdt jdt jdd	i t jd
ddddddgdgd}t|jjt d j ksttd fdd|jjD i}|j }t	j
|| d S )Nr   z2011-08z2011-01z2012-05z2011-04z2012-08z2011-05z2013-09)zout_augmented_AUG_2011.jsonzout_augmented_JAN_2011.jsonzout_augmented_MAY_2012.jsonzout_augmented_SUBSIDY_WEEK.jsonzout_augmented_AUG_2012.jsonzout_augmented_MAY_2011.jsonzout_augmented_SEP_2013.jsonzout_augmented_AUG_2012.jsonzout_augmented_SEP_2013.jsonzout_augmented_SUBSIDY_WEEK.jsonzout_augmented_MAY_2012.jsonzout_augmented_MAY_2011.jsonzout_augmented_AUG_2011.jsonzout_augmented_JAN_2011.json)r*   c                s   g | ]} d  | qS )r   r   )r   r   )r   r   r   r     s    z>TestDataFrameReplace.test_replace_datetime.<locals>.<listcomp>)r]   r
   r   r   r   rP   r   r%   r$   r&   r'   )r,   r^   r3   r2   r   )r   r   test_replace_datetime  s*    
 
z*TestDataFrameReplace.test_replace_datetimec             C   s   t tdddddtjdgd}|jtjd}t tddddtdddgd	d
d}tj|| |jd}tj|| |jdtj}t tddddtjtjdgd}tj|| |jt	dddt	ddd}t t	dddt	dddt	dddgdtjdgd}tj|| |j
 }tj|jd< |jdtjit	ddd}tj|| |j
 }tj|jd< |jdtjit	ddd}t t	dddt	dddt	dddgdtjdgd}tj|| |j
 }tj|jd< |jdtjit	d}t t	dddt	dt	dddgdtjdgd}tj|| d S )Nr   rE   z
US/Eastern)r   r   r   rb   )r   rs   re   r   )rn   r   )r   r   r   r   z
US/Pacific)re   r   )re   r   )re   r   )r   r   r   r   r$   r	   r&   r'   r(   r
   r#   r)   r]   ZNaT)r,   r^   r2   r3   r   r   r   test_replace_datetimetz  s\    






z,TestDataFrameReplace.test_replace_datetimetzc             C   sh   t |}tj||ji  tj||jtg td tj||jdi i tj||jtdi i d S )N)rn   r   )r   r&   r'   r$   r	   r   )r,   r   r^   r   r   r    test_replace_with_empty_dictlike4  s
    z5TestDataFrameReplace.test_replace_with_empty_dictlikezto_replace, method, expectedr   r   r   r   )r   rs   r   g      @r   Zffillpadc             C   sL   t dddgdtjdgdddgd	}|j|d |d
}t |}tj|| d S )Nr   re   rb   r   ru   r   r   r   )r   rs   r   )r   r!   r   )r   r   r   r$   r&   r'   )r,   r   r   r3   r^   r2   r   r   r   test_replace_method=  s    "$z(TestDataFrameReplace.test_replace_methodzreplace_dict, final_data)r   r   c             C   s   t ddgddggddgdd}tj|}tj|d d df ddgd	}|d dkrZddgnddg}tj|d d df |d	}t ||d
}|j|d}tj|| d}	tj	t
|	d tj|| W d Q R X |j|ddd}
|
d kst
tj|| d S )Nre   rb   r   r   category)r*   rn   r   rE   )
categories)r   r   zHAttributes of DataFrame.iloc\[:, 0\] \(column name=\"a\"\) are different)r|   T)r   )r   r   rg   r]   ZCategoricalr$   r&   r'   r~   r   r%   )r,   Zreplace_dictZ
final_datar^   r   Zexcatr   r3   r2   r   r0   r   r   r   "test_categorical_replace_with_dicte  s    
z7TestDataFrameReplace.test_categorical_replace_with_dictzdf, to_replace, expr   r   )col1col2)r   r   r   4567)r   r   r   c             C   s.   t j|}t j|}|j|}tj|| d S )N)r]   r   r$   r&   r'   )r,   r^   r   expr3   r2   r   r   r   test_replace_commutative  s    


z-TestDataFrameReplace.test_replace_commutativereplacerZ20170827c             C   s8   t jdg}|j||d}t j|g}tj|| d S )Nr   )r   r   )r]   r   r$   r&   r'   )r,   r   r^   r2   r3   r   r   r   test_replace_replacer_dtype  s    z0TestDataFrameReplace.test_replace_replacer_dtypec             C   sT   t jddddddgidd}|jdd	}t jdd	ddddgidd}tj|| d S )
Ngrpre   rb   rE   r   r   Int64)rn   r    )r]   r   r$   r&   r'   )r,   r^   r2   r3   r   r   r   !test_replace_after_convert_dtypes  s    z6TestDataFrameReplace.test_replace_after_convert_dtypesc          
   C   sL   t jdddgdddgd}d}tjt|d	 |jd
d  W d Q R X d S )Nr   zb r   zd ze zf )r   ZtwozZExpecting 'to_replace' to be either a scalar, array-like, dict or None, got invalid type.*)r|   c             S   s   | j  S )N)strip)xr   r   r   <lambda>  s    zFTestDataFrameReplace.test_replace_invalid_to_replace.<locals>.<lambda>)r]   r   r~   r   r   r$   )r,   r^   r   r   r   r   test_replace_invalid_to_replace  s    z4TestDataFrameReplace.test_replace_invalid_to_replacern   floatr   r   r   booleanr!   c             C   s>   t jtjd|d}|jd tj tjg|d}tj|| d S )Nrb   )rn   )r   r!   )r]   r   r   Zeyer$   r   r&   r'   )r,   rn   r!   r^   r2   r   r   r   "test_replace_no_replacement_dtypes  s    z7TestDataFrameReplace.test_replace_no_replacement_dtypesreplacementc             C   s   t jdddgdddgddd	gd
}td|_t jdddgdddg|dd	gd
}td|_|d jd||d< tj|| d S )Nre   rb   rE   r   r   r   ru   r   r   )r   A1rs   ZAABrs   )r]   r   r   r*   r$   r&   r'   )r,   r  r2   r3   r   r   r   #test_replace_with_duplicate_columns  s    $
 
z8TestDataFrameReplace.test_replace_with_duplicate_columnsz:replace() changes dtype from period to object, see GH34871)reasonstrictc             C   sP   t jdt jdgd i}|jdd}t jdt jdgd i}tj|| dS )z
        Regression test for GH#34871: if df.replace(1.0, 0.0) is called on a df
        with a Period column the old, faulty behavior is to raise TypeError.
        ZPerz2020-01rE   g      ?g        N)r]   r   r   r$   r&   r'   )r,   r^   r2   r3   r   r   r    test_replace_period_ignore_float  s    z5TestDataFrameReplace.test_replace_period_ignore_floatc             C   sT  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}t j|djddd}|d jjddddgdd|d< |d jjddddgdd|d< 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}t j|djddd}|d jjddddgdd|d< |d jjddddgdd|d< |jdd}|jdd}|jdd}tj|| d S )!zt
        Test for #23305: to ensure category dtypes are maintained
        after replace with direct values
        re   rb   rE   r   r   r   r   r   g      ?g      @g      @g      @cat1Zcat2Zcat3Zcat4obj1obj2Zobj3Zobj4)r   r   col3col4Zcol5)datar   )r   r  r   T)Zorderedr  zcatXobj9N)r]   r   r   catZreorder_categoriesr$   r&   r'   )r,   
input_dictinput_dfexpected_dictr3   r2   r   r   r    test_replace_value_category_type  s4    











z5TestDataFrameReplace.test_replace_value_category_typezDcategory dtype gets changed to object type after replace, see #35268c             C   sz   dgdgdgd}t j|djdddd}dgdgd	gd}t j|djdddd}|jddd	d
}tj|| dS )zf
        Test to ensure category dtypes are maintained
        after replace with dict values
        r   r  r  )r   r   r  )r  r   r  r  r  )r   r  r  N)r]   r   r   r$   r&   r'   )r,   Zinput_category_dfZexpected_category_dfr  r  r  r3   r2   r   r   r   test_replace_dict_category_type  s    z4TestDataFrameReplace.test_replace_dict_category_typec             C   sL   t jdddg}tjd}|j|didd}t jdddg}tj|| d S )Nr   r   r   z^a$r  T)r6   )r]   r   r8   r9   r$   r&   r'   )r,   r^   r6   r2   r3   r   r   r    test_replace_with_compiled_regex3  s
    
z5TestDataFrameReplace.test_replace_with_compiled_regexc             C   s^   t jdt jddt jddgi}|jdt jdddii}t jdddgi}tj|| d S )Nr   r   re   r  )r]   r   ZIntervalr$   r&   r'   )r,   r^   r2   r3   r   r   r   test_replace_intervals;  s    "z+TestDataFrameReplace.test_replace_intervalsN)re   rb   )Q__name__
__module____qualname__r4   rA   rB   rQ   rR   rU   rV   rX   rZ   r_   rf   rh   ri   rj   rm   ro   r~   markZparametrizerr   ry   rz   r   r   r   r   r   r   r   r   r   r   Zint32Zint16r   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]   Zint8r   r   r   r   r  ZNAr  r	  Zxfailr  r  r  r  r  r   r   r   r   r      s"  A 9C)(E 	Y
&







**8(
	
$S	$$   .>

$
 3r   )r   ior   r8   typingr   r   r   Znumpyr   r~   Zpandasr]   r   r   r	   r
   r   Zpandas._testingZ_testingr&   Zfixturer   intr   r  r   r   r   r   r   r   <module>   s   
$$