
    [6gN                        d dl mZ d dlmZ 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            Zej        dd
            Z G d d          Z G d d          ZdS )    )annotations)datetimeN)using_pyarrow_string_dtype)	DataFrameIndexSeries	Timestamp
date_rangereturndict[str, list[int | str]]c                 Z    t          t          d                    t          d          dS )N   ab..ab)listrange     f/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/pandas/tests/frame/methods/test_replace.pymix_abr      s"    eAhhd6ll333r   dict[str, list[float | str]]c                 x    t          t          d                    t          d          ddt          j        dgdS )Nr   r   r   r   dr   r   c)r   r   npnanr   r   r   mix_abcr       s/    eAhhd6ll#sBFC9PQQQr   c                      e Zd Zej                             e            d          d             Zej                            dddge	j
        dgdd	e	j
        e	j
        gdgd
z  dgz   g ddfddgddgg dg dg ddfddgddgg dg dg ddfg          ej                            dddg          ej                            dddg          d                                     Zd Zd Zd Zd Zd  Zej                             e            d          d!             Zej                             e            d          d"             Zej                             e            d          d#             Zej                             e            d          d$             Zd% Zd& Zej                            d'e	j
        d(d)d(e	j
        d*g          d+             Zej                            d,g d-          d.             Zej                            d/d0d1gd2d3d4d5d6gfg d7d8ej        id3ej        ej        gfg          d9             Zd: Zd; Zd< Zd= Zej                             e            d          d>             Z ej                             e            d          d?             Z!d@ Z"dA Z#dB Z$dC Z%dD Z&ej                            dEg dF          dG             Z'dH Z(dI Z)dJ Z*dK Z+dL Z,dM Z-dN Z.ej                            dO e/dPg dQi          dRdS e/dPg dTi          f e/dPg dQie	j0        U          dRdS e/dPg dTie	j0        U          f e/dPg dQie	j1        U          dRdS e/dPg dTie	j1        U          f e/dVg dWi          dd e/dVg dXi          f e/dYg dZi          d[dS e/dYg d\i          f e/d] e2 e3d^d_d`           e3d^dad`           e3d^d_d`          g          i           e3d^d_d`           e3d^dad`           e/d] e2 e3d^dad`          gd
z            i          f e/ e3dbdcdd          gdegdf          dedg e/ e3dbdcdd          gdggdf          f e/dh e3didjdR          gi           e3didjdR           e3dkdjdR           e/dh e3dkdjdR          gi          f e/ e4dld
dmn          dSe	j
        dogdp           e5dqdmr           e5dsdmr           e/ ej6         e5dldmr           e5dsdmr           e5dtdmr          g          7                    du          dSe	j
        dogdp          f e/dRdvgdodwgg          dvd_ e/d_dxgdodwgg          f e/dRdvgdodwgg          dRd_ e/d_dxgdodwgg          f e/dRdvgdodwgg          dvdx e/d_dxgdodwgg          f e/dRdvgdodwgg          dRdx e/d_dxgdodwgg          fg          dy             Z8dz Z9ej                             e            d          d{             Z:d| Z;ej                             e            d          d}             Z<ej                             e            d          d~             Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGej                             e            d          d             ZHej                             e            d          d             ZIej                             e            d          d             ZJd ZKd ZLej                            ddSdg dd_e	j
        dagg ddfe	j
        dg dg dg ddfd3dg dd_e	j
        dagg ddfdSdogdg dd_e	j
        dagg ddfdRdogdg dd_e	j
        dagg ddfddg dd_e	j
        dagg ddfd	d2gdg dd_e	j
        dagg ddfg          d             ZMej                            ddRdRd4d
d
gdodoggfdRdod4d
dRgdod
ggfg          d             ZNej                            dg dQg ddd_ddadg dQg ddfg dQg ddddddg dQg ddfg          d             ZOej                             e            d          ej                            d e5d           e	jP        dR           e	j1        dR           e	jQ        dR           e	jR        dR          g          d                         ZSd ZTd ZUej                            dEg d          ej                            de	j
        ej        g          d                         ZVej                            de	j
        d_g          d             ZWej                            d ejX        d           ejY        dSd_          g          d             ZZd Z[d Z\d Z]d Z^d Z_d Z`ej                            ddRgdvgdSgdSgfdRgdRgdSgdSgfdvgdvgdSgdgfdvgdRgdSgdgfg          ej                            deaebe	jc        g          d                         Zdej                            ddoe	j
        dwg          d             Zed ZfdS )TestDataFrameReplacecan't set float into stringreasonc                x   t           j        |j        |j        d d         df<   t           j        |j        |j        dd          df<   |                                }|                    t           j        dd          }|J t          j        ||                    d                     |}t           j        |j	        dd|j
                            d          f<   t           j        |j	        d	d |j
                            d          f<   |                    t           j        d          }|                    d
          }t          j        ||           |                                }|                    t           j        gdgd          }|J t          j        ||                    d                     d S )N   Ar   Tinplace   foovalue)r   r   locindexcopyreplacetmassert_frame_equalfillnailoccolumnsget_loc)selfdatetime_framefloat_string_frametsframereturn_valuemfresultexpecteds           r   test_replace_inplacez)TestDataFrameReplace.test_replace_inplace!   s    =?F>/3S89=?V>/4c9: %%''rvq$??###
g~'<'<Q'?'?@@@  356"bj((///013bj((---.#++BFA66%,,1,55
fh/// %%''x!dCC###
g~'<'<Q'?'?@@@@@r   zto_replace,values,expected\s*\.\s*ze|f|gcrapr   r      hrG   rE   lor   
\s*(\.)\s*z(e|f|g)\1\1\1_crapr   r   ..rO   )e_crapf_crapg_craprG   )rG   rP   rI   rJ   erE   fgrG   r+   TFuse_value_regex_argsc                :   t          t          d          t          d          t          d          d          }|r|                    |||          }n|                    ||d|          }|r|J |}t          |          }t          j        ||           d S )Nr   efghhelor   )r0   regexr+   Tr[   r+   )r   r   r4   r5   r6   )r;   
to_replacevaluesrB   r+   rW   dfrA   s           r   test_regex_replace_list_objz0TestDataFrameReplace.test_regex_replace_list_obj;   s    T T&\\V4<<PPQQ 	QZZfJZPPFFZZ
F$ZPPF 	>>>FX&&
fh/////r   c                r   t          |          }ddg}t          j        dg}t          t	          d                    t          d          t          d          d}t          |          }|                    ||d	          }t          |d         dd
t          j        t          j        gg dd          }t          j        ||           ddg}ddg}|                    ||d	          }t          |d         g dd          }t          j        ||           g d}g d}|                    ||d	          }t          |d         g dd          }t          j        ||           g d}g d}|                    ||          }t          |d         g dd          }t          j        ||           d S )NrD   r   rE   r   r   halor   Tr[   r   rH   rK   (a|b)rL   rM   a_crapb_craprO   rO   r   rK   r   z(b)rL   rE   rM   rE   rg   rO   rO   r[   r0   )r   r   r   r   r   r4   r5   r6   )	r;   r   dfmixto_replace_resr^   mix2dfmix2resexpecs	            r   test_regex_replace_list_mixedz2TestDataFrameReplace.test_regex_replace_list_mixeds   s   &!! &t,&&!%((^^$v,,T&\\JJ4nn^V4n@@#Yc26262,,, 
 
 	c5))) (2:&mmNF$m??s2R2R2RSSTT
c5))) 766///mmNF$m??s2P2P2PQQRR
c5)))666///mm.m??s2P2P2PQQRR
c5)))))r   c                   t          |          }ddg}t          j        dg}|                                }|                    ||dd          }|J t          |d         ddt          j        t          j        gd          }t          j        ||           dd	g}d
dg}|                                }|                    ||dd          }|J t          |d         g dd          }t          j        ||           g d}g d}|                                }|                    ||dd          }|J t          |d         g dd          }t          j        ||           g d}g d}|                                }|                    ||d          }|J t          |d         g dd          }t          j        ||           d S )NrD   r   rE   Tr+   r[   r   r   rK   rd   rL   rM   re   rh   ri   rj   r[   r0   r+   )r   r   r   r3   r4   r5   r6   )r;   r   rl   rm   r^   rp   r?   rq   s           r   %test_regex_replace_list_mixed_inplacez:TestDataFrameReplace.test_regex_replace_list_mixed_inplace   s	   &!! &t,&&!jjll{{>64t{TT###s632OPPQQ
c5))) (2:&jjll{{>64t{TT###s2R2R2RSSTT
c5))) 766///jjll{{>64t{TT###s2P2P2PQQRR
c5)))666///jjll{{vt{TT###s2P2P2PQQRR
c5)))))r   c                   t          |          }|                    ddidt          j        id          }|                                }|                    ddidt          j        idd          }|J t          |d         ddt          j        t          j        g|d         d          }t          j        ||           t          j        ||           |                    dd	idd
id          }|                                }|                    dd	idd
idd          }|J t          |d         g d|d         d          }t          j        ||           t          j        ||           |                    dd	idd
i          }|                                }|                    dd	idd
id          }|J t          |d         g d|d         d          }t          j        ||           t          j        ||           t          |d         t          j        dddg|d         d          }|                    ddt          j        id          }|                                }|                    ddt          j        idd          }|J t          j        ||           t          j        ||           |                    ddt          j        id          }|                                }|                    ddt          j        id          }|J t          |d         t          j        dddg|d         d          }t          j        ||           t          j        ||           d S )Nr   rD   Trc   rt   r   r   r   rK   z\1ty)r   r   .tyrx   rk   ru   .r\   r   r4   r   r   r3   r5   r6   )r;   r    rl   rp   res2r?   rq   s          r   test_regex_replace_dict_mixedz2TestDataFrameReplace.test_regex_replace_dict_mixed   s   '"" mmS+.bfTmJJzz||||+bft4 $ 
 
 ####,c3%?gclSS
 
 	c5)))
dE*** mmS-03.mMMzz||||- 3.$d $ 
 
 ####,%=%=%=GCLQQ
 
 	c5)))
dE***mm3"6sGnmMMzz||||&sGnd $ 
 
 ####,%=%=%=GCLQQ
 
 	c5)))
dE*** #,bfc3%<73<PP
 
 mmC#rvdm;;zz||||C#rvdD|QQ###
c5)))
dE***mmC#rvdm;;zz||||#c26]D|QQ####,bfc3%<73<PP
 
 	c5)))
dE*****r   c                   t          |          }|                    ddt          j        iid          }|                                }|                                }|                    ddt          j        iidd          }|J |                    ddt          j        ii          }|                    ddt          j        iid          }|J t          |d         ddt          j        t          j        g|d         d	          }t          j        ||           t          j        ||           t          j        ||           t          j        ||           d S )
Nr   rD   Trc   rt   r\   r   r   r   rz   )	r;   r    rl   rp   r{   res4r?   res3rq   s	            r   test_regex_replace_dict_nestedz3TestDataFrameReplace.test_regex_replace_dict_nested	  sU   '""mmS;"78mEEzz||zz||||;'($d $ 
 
 ###}}C+rv)>#?}@@||3bf0E*FPT|UU####,c3%?gclSS
 
 	c5)))
dE***
dE***
dE*****r   c                   |}t          dg di|          }|rf|dk    r`t          j        t          d          5  |                    ddid	
          }d d d            n# 1 swxY w Y   t          dg di          }n.|                    ddid	
          }t          dg di|          }t          j        ||           d S )Nfirst)abcbcacabdtypeobjectDowncastingmatchr   ry   Trc   )z.bczbc.zc.br   r5   assert_produces_warningFutureWarningr4   r6   )r;   any_string_dtypeusing_infer_stringr   r_   rA   rB   s          r   2test_regex_replace_dict_nested_non_first_characterzGTestDataFrameReplace.test_regex_replace_dict_nested_non_first_character  s,    !!6!6!67uEEE 	P"2h">">+MOOO < <S#Jd;;< < < < < < < < < < < < < < < '+@+@+@!ABBHH ZZc
$Z77F '+@+@+@!AOOOH
fh/////s   A!!A%(A%c                   t          g ddd          }t          g ddd          }d}t          j        t          |          5  |                    ddd	d
i          }d d d            n# 1 swxY w Y   t          j        ||           d S )N)QTr   r   r      )Typetmp)r      r   r   r   !Downcasting behavior in `replace`r   r   r   r   )r   r   r   )r;   r_   rB   msgrA   s        r   %test_regex_replace_dict_nested_gh4115z:TestDataFrameReplace.test_regex_replace_dict_nested_gh4115.  s      9 9 9!DDEEoooa@@AA1'SAAA 	< 	<ZZqq)9)9 :;;F	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<
fh/////s   A--A14A1c                   t          |          }t          |d         t          j        t          j        gdz            t          j        t          j        t          j        dgd          }d}t	          j        t          |          5  |                    ddgt          j        d	
          }d d d            n# 1 swxY w Y   |                                }|                                }t	          j        t          |          5  |                    ddgt          j        d	d	          }d d d            n# 1 swxY w Y   |J t	          j        t          |          5  |                    ddgt          j        d	          }d d d            n# 1 swxY w Y   |J t	          j	        ||           t	          j	        ||           t	          j	        ||           d S )Nr   r   r   r   r   r   rD   za|bTrc   r\   ru   )
r   r   arrayr   r5   r   r   r4   r3   r6   )	r;   r    r_   rq   r   rp   r{   r   r?   s	            r   !test_regex_replace_list_to_scalarz6TestDataFrameReplace.test_regex_replace_list_to_scalar9  s    wS\Xrvhl++fbfbfc2 
 
 2'SAAA 	G 	G**k5126*FFC	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gwwyywwyy'SAAA 	 	<<e$bfD$ (  L	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ###'SAAA 	 	<<"E*"&$ (  L	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ###
c5)))
dE***
dE*****s6   %B99B= B=&D99D= D=#%FFFc                   t          |          }|                    ddd          }|                                }|                    dddd          }|J |                                }|                    ddd          }|J t          |d         g d|d	         d
          }t          j        ||           t          j        ||           t          j        ||           d S )NrD   r   Trc   rt   ru   r   )r   r   r   r   r   r   )r   r4   r3   r5   r6   r;   r    r_   rp   r{   r?   r   rq   s           r   !test_regex_replace_str_to_numericz6TestDataFrameReplace.test_regex_replace_str_to_numericX  s    
 wjjatj44wwyy||KD|MM###wwyy||+Q|MM###3C3C3C'RU,WWXX
c5)))
dE***
dE*****r   c                   t          |          }|                    ddgdd          }|                                }|                    ddgddd          }|J |                                }|                    ddgdd          }|J t          |d         g d	ddt          j        d
gd          }t          j        ||           t          j        ||           t          j        ||           d S )NrD   r   r   Trc   r\   ru   r   )r   r   r   r   r   r   )r   r4   r3   r   r   r5   r6   r   s           r   (test_regex_replace_regex_list_to_numericz=TestDataFrameReplace.test_regex_replace_regex_list_to_numericj  s	    wjj+s+Qdj;;wwyy||[#$6t|TT###wwyy||;*<At|TT####,^^^3263:OPP
 
 	c5)))
dE***
dE*****r   c                Z   t          |          }t          ddi          }t          dt          j        i          }|                    ||d          }|                                }|                    ||dd          }|J |                                }|                    ||d          }|J t          |d         ddt          j        t          j        g|d         d	          }	t          j        ||	           t          j        ||	           t          j        ||	           d S )
Nr   rD   Trc   rt   ru   r   r   r   )r   r   r   r   r4   r3   r5   r6   )
r;   r    r_   s1s2rp   r{   r?   r   rq   s
             r   $test_regex_replace_series_of_regexesz9TestDataFrameReplace.test_regex_replace_series_of_regexes}  s   wS+&''S"&M""jjRtj,,wwyy||BD|EE###wwyy||"B|EE####,c3%?gclSS
 
 	c5)))
dE***
dE*****r   c                    t          |          }t          g d|d         |d         d          }|                    dd          }t          j        ||           |j        j        t          j        k    sJ d S )N)r   r   r   rF   r   r   r   r   r   )r   r4   r5   r6   r   r   r   object_)r;   r    r_   rq   rp   s        r   /test_regex_replace_numeric_to_object_conversionzDTestDataFrameReplace.test_regex_replace_numeric_to_object_conversion  sv    wWS\PSUUVVjjC  
c5)))u{bj((((((r   r]    )r   ,)r   r   c                    t          g dg dg dd          }|                    |          }t          g ddt          j        dgg dd          }t	          j        ||           d S )	N)z1,000r   3)r   r   r   r   col1col2col3rc   )1000r   r   r   r   r   r4   r   r   r5   r6   )r;   r]   r_   rA   rB   s        r   +test_joint_simple_replace_and_regex_replacez@TestDataFrameReplace.test_joint_simple_replace_and_regex_replace  s    
 +++&' 
 
 *--***bfc*' 
 
 	fh/////r   metachar)z[]z()z\dz\wz\sc                    t          d|dgi          }|                    d|dii          }t          dddgi          }t          j        ||           d S )Nr   elseparenr   r4   r5   r6   )r;   r   r_   rA   rB   s        r   test_replace_regex_metacharz0TestDataFrameReplace.test_replace_regex_metachar  sd    h/011S8W"5677cGV#4566
fh/////r   zdata,to_replace,expectedxaxxbxr   r   r   xcxxdx)r   r   r   ^\s*$c                    |} |||          }	|r|dk    rt          |          dk    rMt          |	t                    r8|j                            t
          j                            d                     t          j	        t          d          5  |	                    |d	          }
d
}d d d            n# 1 swxY w Y   n|	                    |d	          }
 |||          }t          j        |
|           d S )Nr   r   r   z=object input array that gets downcasted raises on second passr$   r   r   Trc   zstring[pyarrow_numpy])len
isinstancer   node
add_markerpytestmarkxfailr5   r   r   r4   assert_equal)r;   datar]   rB   frame_or_seriesr   r   requestr   objrA   s              r   test_regex_replace_string_typesz4TestDataFrameReplace.test_regex_replace_string_types  sT   $ !od%000 	9"2h">">:""z#y'A'A"''K%% & &     +MOOO 0 0Zt<</0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [[4[88F"?85999
)))))s   B99B= B=c                   t           j        |j        |j        d d         df<   t           j        |j        |j        dd          df<   |                    t           j        d          }t          j        ||                    d                     t          j        |                    dt           j                  |           t           j        |j        |j        d d         df<   t           j        |j        |j        dd          df<   d|j        |j        d d         df<   t          ddg          }t          j        ||                    dd	                     t          d
t          j
        d          fdt          j
        d          fg          }|                    d
t           j                  }t          t           j        t          j
        d          fdt          j
        d          fg          }t          j        ||           d S )Nr'   r(   r)       חBr   r   r2      -2015010120150102)r   r   r1   r2   r4   r5   r6   r7   r   pdto_datetime)r;   r<   zero_filledr_   df1expected_dfs         r   test_replacez!TestDataFrameReplace.test_replace  s   <>F>/3S89=?V>/4c9:$,,RVT::
k>+@+@+F+FGGG
k11$??PPP<>F>/3S89=?V>/4c9:<@>/3S89 c3Z(((
b"**Q"2"2333 2>*--.bnZ6P6P0QR
 
 jjbf%%fbnZ001C
9S9S3TU
 
 	c;/////r   c                   t          d          t          d          t          d          d}t          |          }ddg}t          j        dg}|                    ||          }t          dd	t          j        t          j        gg d
g dd          }t          j        ||           ddg}ddg}|                    ||          }t          g dg dg dd          }t          j        ||           d S )Nr   rY   rZ   r   ry   rS   rE   r   r   rT   rH   rU   rO   rN   )rS   rE   rV   rG   )rG   rS   rI   rJ   )r   r   r   r   r4   r5   r6   )r;   r   dfobjrm   r^   rp   rq   s          r   test_replace_listz&TestDataFrameReplace.test_replace_list  s   LLtF||$v,,GG# &&!mmNF333/,,,,,, 
 
 	c5))) !mmNF33+++,,,))) 
 
 	c5)))))r   c                   t          ddgg t          j        dgg          }t          d|i          }t	          j        ||          }|}|                    g t          j                  }t	          j        ||           d}t          j	        t          |                    d                    5  |                    t          j        g i           d d d            n# 1 swxY w Y   t          j	        t          |                    d	                    5  |                    t          j        d
dgi           d d d            d S # 1 swxY w Y   d S )Nr   r   r   colzwNumPy boolean array indexing assignment cannot assign {size} input values to the 1 output values where the mask is truer   )sizer   r   dummyalt)r   r   r   r   r5   get_objr4   r   r   raises
ValueErrorformat)r;   r   serr   rB   rA   r   s          r   test_replace_with_empty_listz1TestDataFrameReplace.test_replace_with_empty_list  s   sCj"bfqc233%%jo..R((
)))I 	 ]:SZZQZ-?-?@@@ 	& 	&KK%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&]:SZZQZ-?-?@@@ 	4 	4KK'5!12333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s$   /"CC!$C!$EEEc                   t          ddddddd          }|                    dddd          }t          ddddddd          }t          j        ||           |                    d|                                          }t          j        ||           t          ddddddd          }t          ddd          }|                    |ddd          }t          ddddddd          }t          j        ||           |                    ||                                          }t          j        ||           d S )	N        r   r          @r   )zeroone      ?      ?)r   r4   r5   r6   meanr   )r;   r_   rA   rB   ss        r   test_replace_series_dictz-TestDataFrameReplace.test_replace_series_dict%  sm   c 2 21;M;MNNOOAC8899Ca&8&8sQTAUAUVVWW
fh///Arwwyy))
fh/// c 2 21;M;MNNOOC,,--AC8899Ca&8&8sQTAUAUVVWW
fh///Arwwyy))
fh/////r   c                B   t          g dg dg          }dddd}d}t          j        t          |          5  |                    |          }d d d            n# 1 swxY w Y   t          t          j        gdz            }|j        }t          j	        ||           d S )N)r-   barbah)r   r-   r   r   r   rF   "Downcasting behavior in `replace` r   )
r   r5   r   r   r4   r   r   int64dtypesassert_series_equal)r;   r_   mr   reprq   rp   s          r   test_replace_convertz)TestDataFrameReplace.test_replace_convert9  s    
 ---/D/D/DEFFa**2'SAAA 	  	 **Q--C	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 zA~&&j
uc*****s   AA"Ac                   |}t           j        |j        dd|j                            d          f<   t           j        |j        dd |j                            d          f<   |                    t           j        d          }|                    d          }t          j        ||           t          j        |                    dt           j                  |           |                    t           j        d          }|                    d          }t          j        ||           t          j        |                    dt           j                  |           d S )	Nr'   r,   r-   r.   r(   ir/   r   )	r   r   r8   r9   r:   r4   r7   r5   r6   )r;   r=   r@   rA   rB   s        r   test_replace_mixedz'TestDataFrameReplace.test_replace_mixedG  s%     356"bj((///013bj((---.#++BFC88%,,3,77
fh///
fnnS"&99;MNNN#++BFD99%,,4,88
fh///
fnnT26::<NOOOOOr   c                   t          t          ddgd          t          ddgd          d          }t          t          ddgd          t          d	dgd          d          }|                    dd	          }t          j        ||           |                    dd	d
          }|J t          j        ||           d S )Nr   r   float64r   r   r   r   r(   r   r   Tr*   r   r   r4   r5   r6   )r;   r_   rB   rA   r?   s        r   &test_replace_mixed_int_block_upcastingz;TestDataFrameReplace.test_replace_mixed_int_block_upcastingY  s    S#Ji888QF'222 
 
 S#Ji888S!HI666 
 
 As##
fh///zz!S$z77###
b(+++++r   c                t   t          t          ddgd          t          ddgd          t          ddgd          d	          }t          t          ddgd          t          d
dgd          t          ddgd          d	          }|                    dd
          }t          j        ||           d S )Nr   r   r  r   r   r   r   r   r(   r   Cr   r  r;   r_   rB   rA   s       r   &test_replace_mixed_int_block_splittingz;TestDataFrameReplace.test_replace_mixed_int_block_splittingn  s    S#Ji888QF'222QF'222 
 
 S#Ji888S!HI666QF'222 
 
 As##
fh/////r   c                   t          t          ddgd          t          ddgd          d          }t          t          dd	gd
          t          ddgd          d          }|                    dd	          }t          j        ||           t          t          d	dg          t          dd	gd
          d          }|rNt          j        t          d          5  |                    ddgd	dg          }d d d            n# 1 swxY w Y   n|                    ddgd	dg          }t          j        ||           d S )Nr   r   r  r   r   r   r   r  r-   r   r   r   r   r   )r   r   r4   r5   r6   r   r   )r;   r   r_   rB   rA   s        r   test_replace_mixed2z(TestDataFrameReplace.test_replace_mixed2  s   S#Ji888QF'222 
 
 QJh777QF'222 
 
 Au%%
fh///UEN++QJh777 
 
  	8+MOOO < <QFUEN;;< < < < < < < < < < < < < < < ZZA77F
fh/////s   #D

DDc                   t          t          ddgd          t          ddgd          d          }|                    d|                                                                          }|                                                    d          }|                                }|j        d         |j        d<   |j        d         |j        d	<   t          j	        ||           d S )
NrF   r   r   r   r  r  r   r   r   )r   r   )
r   r   r4   r   to_dictr3   astyper8   r5   r6   )r;   r_   rA   rB   r   s        r   test_replace_mixed3z(TestDataFrameReplace.test_replace_mixed3  s    !Qw///faV76S6S6STT
 
 Arwwyy0022337799##I..GGIIfQidfQid
fh/////r   c                   t          dddt          j        gg dd          }|d                             d          |d<   |                    dt          j                  }t          j        |d         |d                    d S )	Nr   r   rF   )somestringshereher   r   Int64r   )r   r   r   r  r4   r5   r   r;   r_   rp   s      r   1test_replace_nullable_int_with_string_doesnt_castzFTestDataFrameReplace.test_replace_nullable_int_with_string_doesnt_cast  sx    aArv.5V5V5VWWXXS'..))3jjRV$$
s3xC11111r   r   )booleanr  Float64c                    t          g d|          }t          g d|d          }|                    dd          }t          g d|d          }t          j        ||           d S )N)r   r   r   r   )r(   r   xr  r  X)r(   r   r  r   r   r4   r5   r6   )r;   r   nullable_serr_   rA   rB   s         r   !test_replace_with_nullable_columnz6TestDataFrameReplace.test_replace_with_nullable_column  sx     iiiu555___<@@AAC%%???FFGG
fh/////r   c                "   t          dt          dd          i          }t          dg di          }|                    ddddi          }t          j        ||           |                    ddd          }t          j        ||           d S )Nr   r   r'   r   r   rF   r   r   r   )r   r   r   r   r4   r5   r6   r	  s       r   test_replace_simple_nested_dictz4TestDataFrameReplace.test_replace_simple_nested_dict  s    uQ{{+,,e%5%5%5677U$4$4566
h/// ,,--
h/////r   c                &   t          dt          dd          i          }t          dg di          }|                    dddd          }t          j        ||           |                    dddddi          }t          j        ||           d S )	Nr   r   r'   r#  r   r   r   )r   r   r$  r	  s       r   6test_replace_simple_nested_dict_with_nonexistent_valuezKTestDataFrameReplace.test_replace_simple_nested_dict_with_nonexistent_value  s    uQ{{+,,e%5%5%56775566
h///U$=$=>??
h/////r   c                    t          ddd gi                              ddi          }|                    t          j        d i          }t          ddd git
                    }t          j        ||           d S )Nr0   *   r  r   )r   r  r4   r   NAr   r5   r6   r;   r_   rA   rB   s       r   test_replace_NA_with_Nonez.TestDataFrameReplace.test_replace_NA_with_None  sv    "d,--44gw5GHHRUDM**gDz2&AAA
fh/////r   c                    t          t          j        t          j        g          }|                    t          j        d t          j        d i          }t          d d g          }t          j        ||           d S N)r   r   NaTr4   r   r   r5   r6   r,  s       r   test_replace_NAT_with_Nonez/TestDataFrameReplace.test_replace_NAT_with_None  s`    '((RVT264899dD\**
fh/////r   c                   t          g dd          }t          t          g dd          |d          }|                    dd i          }t          t          g dd	          |d          }t          j        ||           d S )
N)r   r   r   r   categoryr   )r'   r   rF   r   r  )idr   rF   )      @g      @Nr   r   r  )r;   
cat_seriesr_   rA   rB   s        r   (test_replace_with_None_keeps_categoricalz=TestDataFrameReplace.test_replace_with_None_keeps_categorical  s    000
CCC
\\\;;;! 
 
 QI&&222(CCC! 
 
 	fh/////r   c                *   |j         d         }|j         d         }t          j        |j         d<   d|j         d<   |                    t          j        di          }|j                            t          j        di          j        }t          j        ||           |                    t          j        dddi          }|                                }d|j         d<   d|j         d<   |}t          j        ||           ||j         d<   ||j         d<   d S )Nr  r   r   r   r   r]   r   )r8   r   r   r4   r   r5   r6   r3   )r;   r<   
orig_valueorig2rA   rB   r>   s          r   test_replace_value_is_nonez/TestDataFrameReplace.test_replace_value_is_none  s   #(.
#D)$&FD!$%D!''BFA;'??!#++{+CCE
fh///''BFAq$3G'HH %%''T!T
h///$.D!$)D!!!r   c                   |                                                     t          j                  }t          j        |j        |j        d d         df<   t          j        |j        |j        dd          df<   |                    t          j        d          }t          j	        ||
                    d                     t          j	        |                    dt          j                  |           t          j        |j        |j        d d         df<   t          j        |j        |j        dd          df<   t          j        |j        |j        d d         df<   d}t          j        t          |          5  |
                    d	          }t          j	        ||
                    d	                     d d d            d S # 1 swxY w Y   d S )
Nr'   r(   r)   r   r   z,DataFrame.fillna with 'method' is deprecatedr   bfill)method)r3   r  r   float32r   r1   r2   r4   r5   r6   r7   r   r   )r;   r<   r>   r   r   rA   s         r   test_replace_for_new_dtypesz0TestDataFrameReplace.test_replace_for_new_dtypes  s    %%''..rz::.0fGM"1"%s*+/1vGM"##&+,oobfd33
k7>>$+?+?@@@
k11$??III.0fGM"1"%s*+/1vGM"##&+,.0fGM"1"%s*+<'SAAA 	J 	J^^7^33F!&'...*H*HIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Js   9A GG
G
z"frame, to_replace, value, expectedintsr   r   rF   r   r   )r   r   rF   r   boolsTFT)TTTcomplex)              ?               @              @rH  )y                rI  rJ  
datetime64i  r'      r   i     r,   r-   )dtstrr   rN  h  
   i  20130101
US/Easternperiodstzr   r  20130102rV  2013010420130103nsr   r   r5  c                   d }t          |t                    r|j        dk    rt          }d}t	          j        ||          5  |                    ||          }d d d            n# 1 swxY w Y   t	          j        ||           d S )NrP  r   r   )r   r   yearr   r5   r   r4   r6   )r;   framer]   r0   rB   warnr   rA   s           r   test_replace_dtypesz(TestDataFrameReplace.test_replace_dtypes  s    X j(++ 	!
40G0G D2'C888 	6 	6]]:u55F	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6
fh/////s   A%%A),A)c                  	
 t           j        ddd	dddd
t          t           j        dt           j        gg dg dd          }|                    	
          }	
fd|                                D             }t          j        |t          |                     |                    g dg d	          }t          t           j        d
t           j        gg d	g dd          }t          j        ||           dddd
t          t           j        dt           j        gg dg dd          }|                    t           j        
          }
fd|                                D             }t          j        |t          |                     t           j        ddg	g d
|                    	
          }|                                }t          	
          D ]!\  }}|                    ||d          }|J "t          j        ||           d}t          j        t          |          5  |                    	
dd                     d d d            d S # 1 swxY w Y   d S )Nr   r   r  r'  missingr   r   r'   r   asdffdc                \    i | ](\  }}||                     |         |                   )S r   r4   ).0kvto_repr^   s      r   
<dictcomp>zLTestDataFrameReplace.test_replace_input_formats_listlike.<locals>.<dictcomp>  s5    NNN41aAqyyF1I66NNNr   )r'   r   r   r'   c                d    i | ],\  }}||                     t          j        |                   -S r   )r4   r   r   )ri  rj  rk  r^   s      r   rm  zLTestDataFrameReplace.test_replace_input_formats_listlike.<locals>.<dictcomp>  s3    KKK1Aqyy33KKKr   )r'  rb  Tr*   z:Replacement lists must match in length\. Expecting 3 got 2r   r   )r   r   r   infr4   itemsr5   r6   r3   zipr   r   r   )r;   r_   filledrB   rA   r   r0   r?   r   rl  r^   s            @@r   #test_replace_input_formats_listlikez8TestDataFrameReplace.test_replace_input_formats_listlike  s   vAB//r	2261bf%III<N<N<NOO
 
 FF++NNNNN288::NNN
fi&9&9:::IIIyyy1161bf%III<N<N<NOO
 
 	fh/// r	2261bf%III<N<N<NOO
 
 BFF++KKKK

KKK
fi&9&9::: &!R$$$FF++7799ff-- 	( 	(JC#++C+EEL''''
fh///K]:S111 	+ 	+JJvvabbz***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   4I  I$'I$c                   t          t          j        dt          j        gg dg dd          }t          j        ddd|                    d          }fd|                                D             }t          j        |t          |                     d}t          j	        t          |          5  |                    t          j        ddg           d d d            n# 1 swxY w Y   t          j        ddg|                    d	          }|                                }D ]}|                    |d	d
          }|J t          j        ||           d S )Nr   rc  rd  r  r   c                P    i | ]"\  }}||                     |         d           #S )r   rh  )ri  rj  rk  rl  s      r   rm  zJTestDataFrameReplace.test_replace_input_formats_scalar.<locals>.<dictcomp>  s1    FFF41aAqyyA..FFFr   z.value argument must be scalar, dict, or Seriesr   r'  Tr*   )r   r   r   rp  r4   rq  r5   r6   r   r   	TypeErrorr3   )	r;   r_   rs  rB   r   rA   r   r?   rl  s	           @r   !test_replace_input_formats_scalarz6TestDataFrameReplace.test_replace_input_formats_scalar  s    61bf%III<N<N<NOO
 

 vAB//FA&&FFFF288::FFF
fi&9&9:::>]9C000 	0 	0JJv2///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 &!RFB''7799 	( 	(C#++CT+BBL''''
fh/////s   5$C%%C),C)c                    d S r/  r   )r;   s    r   test_replace_limitz'TestDataFrameReplace.test_replace_limit  s    r   c                (   t          dddddd          }ddd	d
dd}t          d
dd	ddd          }d}t          j        t          |          5  |                    |          }d d d            n# 1 swxY w Y   t          j        ||           d S NStrongly AgreeAgreeNeutralDisagreeStrongly Disagree)r   r   r   rF   r   r   r   rF   r'   r   )r~  r  r  r}  r  r   r   r   r5   r   r   r4   r   r;   answerweightsrB   r   rA   s         r   test_replace_dict_no_regexz/TestDataFrameReplace.test_replace_dict_no_regex  s     #& 
 
 !"
 
 aA!a88992'SAAA 	- 	-^^G,,F	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-
vx00000s   A22A69A6c                B   t          dddddd          }t          ddd	d
dd          }t          d
dd	ddd          }d}t          j        t          |          5  |                    |          }d d d            n# 1 swxY w Y   t          j        ||           d S r|  r  r  s         r   test_replace_series_no_regexz1TestDataFrameReplace.test_replace_series_no_regex  s    #& 
 
 "#%& 
 
 aA!a88992'SAAA 	- 	-^^G,,F	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-
vx00000s   A??BBc                   t          dt          j        dgi          }|                    t          j        dddi          }|                    dt          j        fddg          }|                    dt          j        gddg          }t          dddgi          }t	          j        ||           t	          j        ||           t	          j        ||           d S )Nr(   r   r   r   r:  r]   r0   )r   r   r   r4   r5   r6   )r;   r_   res1r{   r   rB   s         r   6test_replace_dict_tuple_list_ordering_remains_the_samezKTestDataFrameReplace.test_replace_dict_tuple_list_ordering_remains_the_same
  s    bfa[)**zzbfaD%9z::zza[q	zBBzza[q	zBBcAt9-..
dD)))
dD)))
dH-----r   c                    t          g dg dg dg dd          }|                    ddi          }t          j        ||           d S )N)r   r   r   rF   )0vrr  r  )r  r  r  bt)vor  r  r  )folT_oppT_DirT_Enhz\Dr   r   r  s      r   )test_replace_doesnt_replace_without_regexz>TestDataFrameReplace.test_replace_doesnt_replace_without_regex  sm    #||.........	 
 
 jj%$$
b#&&&&&r   c                    t          ddgt          d          d          }|                    dd          }t          ddg|j        d          }t	          j        ||           d S )NTFabr   r   )r   r   r4   r   r5   r6   r,  s       r   test_replace_bool_with_stringz2TestDataFrameReplace.test_replace_bool_with_string!  sh    dE]d<<==D#&&C<bd;;<<
fh/////r   c                    t          t          j                            d                              d          dk              }|                    dd          }t          j        ||           d S )Nr   r   r   r   re  fdsa)r   r   randomdefault_rngr4   r5   r6   r;   r_   rA   s      r   (test_replace_pure_bool_with_string_no_opz=TestDataFrameReplace.test_replace_pure_bool_with_string_no_op'  s^    ry,,Q//66v>>DEEFF++
b&)))))r   c                2   t          t          j                            d                              d          dk              }|                    dd          }t          t          j        dt                              }t          j        ||           d S )Nr   r  r   FTr   )	r   r   r  r  r4   onesboolr5   r6   r,  s       r   test_replace_bool_with_boolz0TestDataFrameReplace.test_replace_bool_with_bool,  sz    ry,,Q//66v>>DEEE4((RWV488899
fh/////r   c                    t          ddgddgd          }|                    ddd          }t          ddgddgd          }t          j        ||           d S )NTFr   r   asdbyes)re  Tr   r,  s       r   %test_replace_with_dict_with_bool_keysz:TestDataFrameReplace.test_replace_with_dict_with_bool_keys2  sn    D%=eT];;<<V599::%UENCCDD
fh/////r   c                    t          ddgddgd          }|                    ddi          }t          j        ||           |d                             ddi          }t          j        ||d                    d S )	Nr   r   rF   r   )Y0Y1replace_stringtestr  )r   r4   r5   r6   r   r  s      r   !test_replace_dict_strings_vs_intsz6TestDataFrameReplace.test_replace_dict_strings_vs_ints8  s    q!fQF3344-v677
fb)))D!!#3V"<==
vr$x00000r   c                    t          dddgi          }|                    t          j        t          j         gt          j                  }|}t          j        ||           d S )Nr   T)r   r4   r   rp  r   r5   r6   )r;   r_   rrS   s       r   test_replace_truthyz(TestDataFrameReplace.test_replace_truthyB  sV    dD\*++JJ("&11
a#####r   c                   t          dt          t          dd                    i          }|                    dt	          t          t          dd          t          dd                              i          }|                    t	          t          t          dd          t          dd                                        }t          j        ||           d S )Nr   r   r'   r      )r   r   r   r4   dictrr  r5   r6   r,  s       r   -test_nested_dict_overlapping_keys_replace_intzBTestDataFrameReplace.test_nested_dict_overlapping_keys_replace_intH  s     T%1++../00S$s5A;;a'D'D"E"EFGG::d3uQ{{E!QKK#@#@AABB
fh/////r   c           	        t          j        dd          }|                    t                    }t          j        dd                              t                    }t	          d|i          }|                    t          t          ||                              }|                    dt          t          ||                    i          }t          j	        ||           d S )Nr   r'   r   r  r   )
r   aranger  rO  r   r4   r  rr  r5   r6   )r;   r   astrbstrr_   rA   rB   s          r   -test_nested_dict_overlapping_keys_replace_strzBTestDataFrameReplace.test_nested_dict_overlapping_keys_replace_strQ  s    IaOOxx}}yA%%c**T{##DT41122::sDT4$9$9:;;
fh/////r   c                Z   t          dg di          }|                    ddddi          }t          dg di          }t          j        ||           t          dg di          }|                    ddddi          }t          dg di          }t          j        ||           d S )	Nr   rF  YN)TF)r  r  r  )r   r   r   r  r   )r;   r   r_   rp   expects        r   test_replace_swapping_bugz.TestDataFrameReplace.test_replace_swapping_bug[  s     000122jj#c#66788C122
c6***YYY'((jj#33//011C122
c6*****r   c                2   dt          j        ddd          t          j        ddd          t          j        ddd          t          j        dd	d          t          j        ddd          t          j        ddd          t          j        d
dd          dit          g ddg          }t          |j        j                  t          d                                                   k    sJ t          dfd|j        j        D             i          }|j        j        d         dk    sJ d}t          j
        t          |          5  |                              }d d d            n# 1 swxY w Y   t          j        ||           d S )Nfnamei     M)r]  monthfreqr   i  r'   r   i  	   out_augmented_AUG_2011.jsonout_augmented_JAN_2011.jsonout_augmented_MAY_2012.jsonout_augmented_SUBSIDY_WEEK.jsonout_augmented_AUG_2012.jsonout_augmented_MAY_2011.jsonout_augmented_SEP_2013.jsonr  r  r  r  r  r  r  r9   c                ,    g | ]}d          |         S r  r   ri  rj  r   s     r   
<listcomp>z<TestDataFrameReplace.test_replace_period.<locals>.<listcomp>  !    'O'O'O!'
1'O'O'Or   r   z	Period[M]r   r   )r   Periodr   setr  r^   keysr   r8   r5   r   r   r4   r6   r;   r_   rB   r   rA   r   s        @r   test_replace_periodz(TestDataFrameReplace.test_replace_periodi  s   
 /1yd!RU/V/V/V/1yd!RU/V/V/V/1yd!RU/V/V/V359QS4 4 4 02yd!RU/V/V/V/1yd!RU/V/V/V/1yd!RU/V/V/V
 

    I
 
 
 28?##s1W:??+<+<'='=====g'O'O'O'Orx'O'O'OPQQ#A&+55552'SAAA 	# 	#ZZ]]F	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#
fh/////s   E77E;>E;c           
        dt          d          t          d          t          d          t          d          t          d          t          d          t          d          d	it          g d
dg          }t          |j        j                  t          d                                                   k    sJ t          dfd|j        j        D             i          }d}t          j        t          |          5  |	                              }d d d            n# 1 swxY w Y   t          j
        ||           d S )Nr  z2011-08z2011-01z2012-05z2011-04z2012-08z2011-05z2013-09r  r  r  c                ,    g | ]}d          |         S r  r   r  s     r   r  z>TestDataFrameReplace.test_replace_datetime.<locals>.<listcomp>  r  r   r   r   )r	   r   r  r  r^   r  r5   r   r   r4   r6   r  s        @r   test_replace_datetimez*TestDataFrameReplace.test_replace_datetime  s   
 /8/C/C/8/C/C/8/C/C3<Y3G3G/8/C/C/8/C/C/8/C/C 

    I
 
 
 28?##s1W:??+<+<'='=====g'O'O'O'Orx'O'O'OPQQ2'SAAA 	# 	#ZZ]]F	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#
fh/////s   D''D+.D+c                   t          t          ddd          dt          j        dgd          }|                    t          j        d          }t          t          ddd          t          g d	d
          d          }t          j        ||           |                    d          }t          j        ||           |                    dt          j                  }t          t          ddd          t          j        t          j        dgd          }t          j        ||           |                    t          dd          t          dd                    }t          t          dd          t          dd          t          dd          gdt          j        dgd          }|d         j
                            d          |d<   t          j        ||           |                                }t          j        |j        d<   |                    dt          j        it          dd                    }t          j        ||           |                                }t          j        |j        d<   |                    dt          j        it          dd                    }t          t          dd          t          dd                              d          t          dd          gdt          j        dgd          }|d         j
                            d          |d<   t          j        ||           |                                }t          j        |j        d<   |                    dt          j        it          d                    }t          t          dd          t          d          t          dd          gdt          j        dgd          }t          j        ||           d S )NrR  rF   rS  rT  r   r   r  r   r   r   r   r  r   rW  rX  rY  rZ  r(   r[  r9  z
US/Pacific)r   r
   r   r   r4   r   r5   r6   r7   r	   rN  as_unitr3   r8   r   r0  
tz_convertr,  s       r   test_replace_datetimetzz,TestDataFrameReplace.test_replace_datetimetz  s    
A,GGG^ 
 
 BFA&&
A,GGGIIIY777 
 
 	fh///1
fh///Arv&&
A,GGGfbfa( 
 
 	fh///j\222j\222
 
  j\:::j\:::j\:::
 ^ 	
 	
 !(0066
fh///FDbfy/U/U/UVV
fh/// FDbfy/U/U/UVV j\:::j\:::EElSSj\:::
 ^ 	
 	
 !(0066
fh///FDbfy/D/DEE j\:::j))j\:::
 ^ 	
 	
 	fh/////r   c           	        t          |          }t          j        ||                    i                      t          j        ||                    t	          g t
                                         t          j        ||                    di i                     t          j        ||                    t	          di i                               d S )Nr   r   )r   r5   r6   r4   r   r   )r;   r    r_   s      r    test_replace_with_empty_dictlikez5TestDataFrameReplace.test_replace_with_empty_dictlike  s    w
b"**R..111
b"**VBf-E-E-E"F"FGGG
b"**c2Y"7"7888
b"**VS"I->->"?"?@@@@@r   zto_replace, method, expectedr?  )r   r   r   r  r  )r5        @r  ffillpad)r   r   r   )r   r   )r   r   r   )r   r   r   c                0   t          g ddt          j        dgg dd          }d}t          j        t
          |          5  |                    |d |          }d d d            n# 1 swxY w Y   t          |          }t          j        ||           d S )	Nr  r'   r   r   r  z7The 'method' keyword in DataFrame.replace is deprecatedr   )r]   r0   r@  )r   r   r   r5   r   r   r4   r6   )r;   r]   r@  rB   r_   r   rA   s          r   test_replace_methodz(TestDataFrameReplace.test_replace_method  s    D YYYa^///RRSSG'SAAA 	R 	RZZ:T&ZQQF	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	RX&&
fh/////s   A''A+.A+zreplace_dict, final_datac                N   t          ddgddggddgd          }t          j        |          }t          j        |d d df         ddg	          }|d         dk    rddgnddg}t          j        |d d df         |	          }t          ||d
          }d}t          j        t          |          5  |                    |d          }	d d d            n# 1 swxY w Y   t          j	        |	|           d}
t          j        t          |
          5  t          j	        ||           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    |dd          }d d d            n# 1 swxY w Y   |J t          j	        ||           d S )Nr   r   r   r   r3  )r9   r   r   rF   )
categoriesr   z#with CategoricalDtype is deprecatedr   zHAttributes of DataFrame.iloc\[:, 0\] \(column name=\"a\"\) are differentTr*   )r   r   r   r   Categoricalr5   r   r   r4   r6   r   r   AssertionError)r;   replace_dict
final_datar_   r   ex_catr   rB   msg2rA   r   r?   s               r   "test_categorical_replace_with_dictz7TestDataFrameReplace.test_categorical_replace_with_dict:  s    AA'#s:NNNXj))
N:aaad+A???',11!Q1vN:aaad+???11--..4'TBBB 	1 	1ZZa00F	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1
fh/// 	 ]>555 	0 	0!"h///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 'TBBB 	E 	E::lAt:DDL	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E###
b(+++++s6   4CCCD66D:=D:FFFzdf, to_replace, expr   r'   r  )r   r   r  )r'   r  r   )456r  r  7)r  r  r  c                    t          |          }t          |          }|                    |          }t          j        ||           d S r/  r   )r;   r_   r]   exprB   rA   s         r   test_replace_commutativez-TestDataFrameReplace.test_replace_commutativeZ  sD    ( r]]S>>J''
fh/////r   replacer20170827c                
   t          dg          }d}t          j        t          |          5  |                    ||d          }d d d            n# 1 swxY w Y   t          |g          }t          j        ||           d S )Nr   r   r   r   r   )r;   r  r_   r   rA   rB   s         r   test_replace_replacer_dtypez0TestDataFrameReplace.test_replace_replacer_dtypet  s     u2'SAAA 	@ 	@ZZhX > >??F	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@hZ((
fh/////s   AAAc                    t          dg did          }|                    dd          }t          dg did          }t          j        ||           d S )Ngrp)r   r   rF   r   r'   r  r   r   rQ  )rQ  r   rF   r   r'   r   r,  s       r   !test_replace_after_convert_dtypesz6TestDataFrameReplace.test_replace_after_convert_dtypes  sg    /w???Ar""e%5%5%56gFFF
fh/////r   c                4   t          g dg dd          }d}d}t          j        t          |          5  t	          j        t          |          5  |                    d            d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N)r   zb r   )zd ze zf )r   twozZExpecting 'to_replace' to be either a scalar, array-like, dict or None, got invalid type.*zSDataFrame.replace without 'value' and with non-dict-like 'to_replace' is deprecatedr   c                *    |                                  S r/  )strip)r  s    r   <lambda>zFTestDataFrameReplace.test_replace_invalid_to_replace.<locals>.<lambda>  s    QWWYY r   )r   r   r   rw  r5   r   r   r4   )r;   r_   r   r  s       r   test_replace_invalid_to_replacez4TestDataFrameReplace.test_replace_invalid_to_replace  s7    ///8J8J8JKKLL0 	
) 	 ]9C000 	0 	0+MFFF 0 0

..///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s5   BA5)B5A9	9B<A9	=BBB)floatr  r   r  r  r0   c                    t          t          j        d          |          }|                    d t          j         t          j        g|          }t          j        ||           d S )Nr   r   r  )r   r   eyer4   rp  r5   r6   )r;   r   r0   r_   rA   s        r   "test_replace_no_replacement_dtypesz7TestDataFrameReplace.test_replace_no_replacement_dtypes  sY     rvayy...rvgrv'>eLL
fb)))))r   replacementc                $   t          g dg dg dd          }t          d          |_        t          g dg d|ddgd          }t          d          |_        |d                             d	|          |d<   t	          j        ||           d S )
NrD  r  )r   r  r  )r(   A1r   AABr  r  r   r   )r   r   r9   r4   r5   r6   )r;   r  rA   rB   s       r   #test_replace_with_duplicate_columnsz8TestDataFrameReplace.test_replace_with_duplicate_columns  s     ))))))LLMMe))999KA3FGG
 
  ;;Sk))![99s
fh/////r   z2020-01c                    t          d|gdz  i          }t          j        ||          }|                                }|                    dd          }t          j        ||           d S )NPerrF   r   r   )r   r5   r   r3   r4   r   )r;   r   r0   r   rB   rA   s         r   test_replace_ea_ignore_floatz1TestDataFrameReplace.test_replace_ea_ignore_float  se     !,--jo..88::S#&&
&)))))r   c                6   g dg dg dg dg dd}t          |                              ddd	          }|d
         j                            g dd          |d
<   |d         j                            g dd          |d<   g dg dg dg dg dd}t          |                              ddd	          }|d
         j                            g dd          |d
<   |d         j                            g dd          |d<   d}t	          j        t          |          5  |                    dd          }|                    dd          }|                    dd          }ddd           n# 1 swxY w Y   t	          j        ||           dS )zt
        Test for #23305: to ensure category dtypes are maintained
        after replace with direct values
        )r   r   rF   r   )r   r   r   r   )g      ?g      @g      @g      @)cat1cat2cat3cat4)obj1obj2obj3obj4)r   r   r   col4col5r   r3  )r   r  r   T)orderedr  )r   r   r   z)r  catXr  r  )obj9r  r  r  OThe behavior of Series\.replace \(and DataFrame.replace\) with CategoricalDtyper   r   r"  r  r$  r  r#  N)	r   r  catreorder_categoriesr5   r   r   r4   r6   r;   
input_dictinput_dfexpected_dictrB   r   rA   s          r    test_replace_value_category_typez5TestDataFrameReplace.test_replace_value_category_type  ss    !LL((((((444444
 

 *---4444
 
 $F+/BB   $ C 
 
 $F+/BB,,,d C 
 
 !LL((((((444444
 
 -0007744
 
 $F+/BB   $ C 
 
 $F+/BB,,,d C 
 
$ 	 'SAAA 	6 	6''S11H''77H%%ff55F	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6
 	fh/////s   *AE99E= E=c                   dgdgdgd}t          |                              dddd          }dgdgd	gd}t          |                              dddd          }d
}t          j        t          |          5  |                    ddd	d          }ddd           n# 1 swxY w Y   t          j        ||           dS )zf
        Test to ensure category dtypes are maintained
        after replace with dict values
        r   r  r  r   r   r3  r"  r$  r#  r%  r   )r   r  r  N)r   r  r5   r   r   r4   r6   r(  s          r   test_replace_dict_category_typez4TestDataFrameReplace.test_replace_dict_category_type  sJ     #efXxHH
*---44ZHH
 

 #&6(KK-00077ZHH
 
$ 	 'SAAA 	R 	R%%C&P&PQQF	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	fh/////s   >B$$B(+B(c                    t          g d          }t          j        d          }|                    |did          }t          g d          }t	          j        ||           d S )Nr   z^a$r"  Trc   )r"  r   r   )r   recompiler4   r5   r6   )r;   r_   r[   rA   rB   s        r    test_replace_with_compiled_regexz5TestDataFrameReplace.test_replace_with_compiled_regex  se    ''
5!!UCL55___--
fh/////r   c                   t          dt          j        dd          t          j        dd          gi          }|rt          nd }t	          j        |d          5  |                    dt          j        dd          dii          }d d d            n# 1 swxY w Y   t          dddgi          }t	          j        ||           d S )Nr   r   r   r   r   r  )r   r   Intervalr   r5   r   r4   r6   )r;   r   r_   warningrA   rB   s         r   test_replace_intervalsz+TestDataFrameReplace.test_replace_intervals!  s   bk!Q//Q1B1BCDEE#5?--4'}EEE 	A 	AZZr{1a'8'8#&> ?@@F	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	AcC:.//
fh/////s   -BBBc                    dddddi}t          dt          j        d          i          }|                    |          }t          dt          j        d          i          }t	          j        ||           d S )Npositiver   r   )u   正面u   中立u   负面rF   )r   r   r  r4   r5   r6   )r;   columns_values_mapr   rA   rB   s        r   test_replace_unicodez)TestDataFrameReplace.test_replace_unicode*  sv    (Q!q*Q*QRRWQZZ011/00j"'!**566
fh/////r   c                     |dg                               d          }|                                }|                    d t          j        i          }t          j        ||           d S )NrJ   z|S)r  r3   r4   r   r   r5   r   )r;   r   r   rB   s       r   test_replace_bytesz'TestDataFrameReplace.test_replace_bytes2  s]    ose$$++D1188::kk4.))
X&&&&&r   z!data, to_replace, value, expectedr   boxc                     ||          } ||          }|                      ||          |          }t          j        ||           d S r/  )r4   r5   r   )	r;   r   r]   r0   rB   r=  r   r   rA   s	            r   !test_replace_list_with_mixed_typez6TestDataFrameReplace.test_replace_list_with_mixed_type9  sU     od##"?8,,SS__e44
)))))r   valc                4   t          dd|gi          }|                    |d           }t          ddd git                    }t          j        ||           t          dd|gi          }|                    |d i          }t          j        ||           d S )Nr   r   r   )r   r4   r   r5   r6   )r;   r@  r_   rA   rB   s        r   %test_replace_value_none_dtype_numericz:TestDataFrameReplace.test_replace_value_none_dtype_numericL  s     aX''C&&cAt9-V<<<
fh///aX''S$K((
fh/////r   c                    t          ddt          j        gi          }t          ddt          j        giddg          }|                    dd          }t	          j        ||           d S )Nr   nilzanything elser   r   r   )r   r   r+  r4   r5   r6   )r;   r   rB   rA   s       r   test_replace_with_nil_naz-TestDataFrameReplace.test_replace_with_nil_naX  sh    uben-..cORU#;<QFKKKUO44
h/////r   N)g__name__
__module____qualname__r   r   r   r   rC   parametrizer   r   r`   rr   rv   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-  r1  r7  r=  rB  r   int32int16r   r   r
   r	   DatetimeIndexr  r`  rt  rx  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  int8rA  r  r  r  r  r  r  r  r4  r  r,  r.  r2  r6  r:  r<  r   tupler   r?  rB  rE  r   r   r   r"   r"       s       [""$$-J   A A A. [$
 h' sBFBF3 A-000  
+*%///<<<222  %'"///000000 1!	
$ $J [Yu66[3dE]CC0 0 DC 76K$ $N0"'* '* '*R&* &* &*PC+ C+ C+J+ + +*0 0 0  [""$$-J   0 0 0 [""$$-J   + + +8 [""$$-J   + + + [""$$-J   + + + + + +$) ) ) [BF,,BBF.C.CD 0 0 0& [Z)J)J)JKK0 0 LK0 ["U^3S11E5>B]]Xru-RUBE/BC	
 * * *<0 0 06* * *>4 4 4&0 0 0( [""$$-J   	+ 	+ 	+ [""$$-J   P P P, , ,*0 0 0&0 0 0<
0 
0 
02 2 2 [W&E&E&EFF0 0 GF0	0 	0 	00 0 00 0 00 0 00 0 0&* * *(J J J& [,Y			*++Q99fiii=P3Q3QR	6999-RX>>>	6999-RX>>>	 	6999-RX>>>	6999-RX>>>	 	7$7$7$7899	7$6$6$6788	 	9lll344	9lll344	 	$ee (q" 5 5 (q" 5 5 (q" 5 5' '
 
 q"%%q"%%	<q"0E0E/F/J)K)KLMM$ 	((4R"8"8!95'JJKK	((4R"8"8!95'JJKK	 	4((4Q"7"7!89::r1%%r1%%	4((4Q"7"7!89::	 	'Z
A,OOO^   	*666	*666	-R- )	* F F F )	* F F F )	* F F F  "'$--^	 	 0 	As8aX.//	As8aX.//	 	As8aX.//	As8aX.//	 	As8aX.//	As8aX.//	 	As8aX.//	As8aX.//	Cg	
j jV0 0Wj jV0&+ &+ &+P [""$$-J   0 0 00   [""$$-J   1 1 1. [""$$-J   1 1 12	. 	. 	.
' 
' 
'0 0 0* * *
0 0 00 0 01 1 1$ $ $0 0 00 0 0 [""$$-J   	+ 	+ 	+ [""$$-J   "0 "0 "0H [""$$-J   0 0 0@R0 R0 R0hA A A [&yyy261~OOOTTUiioooOOOLL
 '!RVQoooVVWAiiq"&!n???KK Aiiq"&!n???KK iiq"&!n???KK c
iiq"&!n???KK/	
 @0 0A @0 ["

aVaV,	-aa0@0@Aq6Aq6BR/ST , ,	 ,8 [ #III66!"""III66 #OOO<<#.."OOO<<	
 	0 	0 	0 [""$$-J    [Ij!!BGAJJBHQKKBJqMMBJqMM	
	 	0 0	 	 00 0 00 0 0  [W&W&W&WXX[Wrvruo66* * 76 YX* []RVQK880 0 980 [Wyry';';[R[A=N=N&OPP* * QP*60 60 60p0 0 0>0 0 00 0 00 0 0' ' ' [+S3%!qc"S1#sQC USEA3&UQC!se$		
  [UT5"($;<<* * =< * [UQ$455	0 	0 65	00 0 0 0 0r   r"   c            
         e Zd Zej                            d ed           ed          d ed           e ed                    dg          ej                            ddej	        fdg          ej                            d	d
dg          ej                            dd
dg          ej                            dd
dg          d                                                             Z
ej                             e            d          ej                            ddd
g          d                         Zd Zd Zd ZdS )TestDataFrameReplaceRegexr   r   rY   r   r   zto_replace,valuerD   )rK   z\1\1\1compile_regexTFregex_kwargr+   c                \   t          |          }|                                }|rt          j        |          }|r|}	d }nd}	|                    ||||	          }
|r|
J |}
|t
          j        u rt
          j        }nd}||j        |d         dk    df<   t          j	        |
|           d S )NTrt   z...r   ry   )
r   r3   r0  r1  r4   r   r   r1   r5   r6   )r;   r   r]   r0   rQ  rR  r+   r_   rB   r[   rA   expected_replace_vals               r   test_regex_replace_scalarz3TestDataFrameReplaceRegex.test_regex_replace_scalara  s      t__7799 	0J//J 	EJJEJweLL 	>>>FBF??#%6  #( 2FXc]c)3./
fh/////r   r#   r$   r[   c                *   t          dgdgd          }t          dgdgd          }d}t          j        t          |          5  |                    dd|          }d d d            n# 1 swxY w Y   t          j        ||           t          dgdgd          }t          dgdgd          }t          j        t          |          5  |                    dd|          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr  r  r   r   r   )r]   r0   r[   1r   )	r;   r[   r   expected_df1r   
result_df1df2expected_df2
result_df2s	            r   test_replace_regex_dtype_framez8TestDataFrameReplaceRegex.test_replace_regex_dtype_frame  s    se3%0011 s!!5!5661'SAAA 	K 	K1EJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K
j,777se3%0011 s#!7!788'SAAA 	K 	K1EJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K
j,77777s$   A++A/2A/C33C7:C7c                    t          g dg dd          }|                    dt          j        d          }t          dt          j        dgt          j        ddgd          }t	          j        ||           d S )Nr  )r   r   r   r  r   r  r   r   r,  s       r   +test_replace_with_value_also_being_replacedzETestDataFrameReplaceRegex.test_replace_with_value_also_being_replaced  sx    YYYYYY7788bf--..Arvq>AGGHH
fh/////r   c                    t          g dg ddd          }|                                }|                    ddgdd g	          }t          j        ||           d S )
N)r   r  Nthree)r   Nr  ra  r   r3  r   ry   def_r  )r   r3   r4   r5   r6   r	  s       r   'test_replace_categorical_no_replacementzATestDataFrameReplaceRegex.test_replace_categorical_no_replacement  s|    222222  
 
 
 7799U|C;GG
fh/////r   c                d   t          dgdd          }|r t          |j        j                  dk    sJ nt          |j        j                  dk    sJ |                    dddd	           |r!t          |j        j                  dk    sJ d S t          |j        j                  dk    sJ d S )
Nr   r   r   r   r   r   r   T)r]   r0   r+   r[   )r   r   _mgrblocksr4   )r;   r   r_   s      r   test_replace_object_splittingz7TestDataFrameReplaceRegex.test_replace_object_splitting  s    cU--.. 	,rw~&&!+++++rw~&&!++++


hb$d
KKK 	,rw~&&!++++++rw~&&!++++++r   N)rF  rG  rH  r   r   rI  r   r   r   r   rU  r   r   r]  r_  rd  rh  r   r   r   rP  rP  `  s       [$v,,TT&\\22$v,,TT%%((^^44	
  [k2624NO  [_tUm<<[]T5M::[Yu660 0 76 ;: =<  0: [""$$-J    [Wudm448 8 54 80 0 00 0 0, , , , ,r   rP  )r   r   )r   r   )
__future__r   r   r0  numpyr   r   pandas._configr   pandasr   r   r   r   r	   r
   pandas._testing_testingr5   fixturer   r    r"   rP  r   r   r   <module>rp     st   " " " " " "       				      5 5 5 5 5 5                        4 4 4 4 R R R R}0 }0 }0 }0 }0 }0 }0 }0@2^, ^, ^, ^, ^, ^, ^, ^, ^, ^,r   