
    Pig                        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c 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)	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     {/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/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                  x   e Zd Z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d Zd  Zd! Z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-d.d/gd0d1d2d3d4gfg d5d6ej        id1ej        ej        gfg          d7             Zd8 Zd9 Zd: Zd; Zd< Zd= Zd> Z d? Z!d@ Z"dA Z#dB Z$ej                            dCg dD          dE             Z%dF Z&dG Z'dH Z(dI Z)dJ Z*dK Z+dL Z,dM Z-ej                            dN e.dOg dPi          dQdR e.dOg dSi          f e.dOg dPiej/        T          dQdR e.dOg dSiej/        T          f e.dOg dPiej0        T          dQdR e.dOg dSiej0        T          f e.dUg dVi          dd e.dUg dWi          f e.dXg dYi          dZdR e.dXg d[i          f e.d\ e1 e2d]d^d_           e2d]d`d_           e2d]d^d_          g          i           e2d]d^d_           e2d]d`d_           e.d\ e1 e2d]d`d_          gdz            i          f e. e2dadbdc          gddgde          dddf e. e2dadbdc          gdfgde          f e. e3dgddhdij          dRej        dkgdl           e4dmdhn           e4dodhn           e. ej5         e4dgdhn           e4dodhn           e4dpdhn          g          6                    di          dRej        dkgdl          f e.dQdqgdkdrgg          dqd^ e.d^dsgdkdrgg          f e.dQdqgdkdrgg          dQd^ e.d^dsgdkdrgg          f e.dQdqgdkdrgg          dqds e.d^dsgdkdrgg          f e.dQdqgdkdrgg          dQds e.d^dsgdkdrgg          fg          dt             Z7du Z8dv Z9dw Z:dx Z;dy Z<dz Z=d{ Z>d| Z?d} Z@d~ ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHd ZIej                            dg dPg ddd^dd`dg dPg ddfg dPg ddddddg dPg ddfg          d             ZJej                            d e4d           ejK        dQ           ej0        dQ           ejL        dQ           ejM        dQ          g          d             ZNd ZOd ZPej                            dCg d          ej                            dej        ej        g          d                         ZQej                            dej        d^g          d             ZRej                            d ejS        d           ejT        dRd^          g          d             ZUej                            ddQdQd2dkdkgdkdkggfdQdkd2dkdQgdkdkggfg          d             ZVd ZWd ZXd ZYd ZZd Z[d Z\ej                            ddQgdqgdRgdRgfdQgdQgdRgdRgfdqgdqgdRgdgfdqgdQgdRgdgfg          ej                            de]e^ej_        g          d                         Z`ej                            ddkej        drg          d             Zad Zbej                            dCd ejc        d edje        d                    g          d             Zfej                            dCd ejc        d edje        d                    g          d             ZgdS )TestDataFrameReplacec                   t           j        |j        |j        d d         df<   t           j        |j        |j        dd          df<   |                                }|                    t           j        dd          }||u s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                    |d<   |                    d
          }t          j        ||           |                                }|                    t           j        gdgd          }||u s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astypeobject)selfdatetime_framefloat_string_frametsframeresultmfexpecteds          r   test_replace_inplacez)TestDataFrameReplace.test_replace_inplace!   s   <>F>/3S89=?V>/4c9: %%''D99    
g~'<'<Q'?'?@@@  356"bj((///013bj((---.#++BFA66%**,,"5/0088???++
fh/// %%''"&A3==    
g~'<'<Q'?'?@@@@@r   zto_replace,values,expected\s*\.\s*ze|f|gcrapr   r      hrD   rB   lor   
\s*(\.)\s*z(e|f|g)\1\1\1_crapr   r   ..rL   )e_crapf_crapg_craprD   )rD   rM   rF   rG   erB   fgrD   r'   TFuse_value_regex_argsc                :   t          t          d          t          d          t          d          d          }|r|                    |||          }n|                    ||d|          }|r||u sJ t          |          }t          j        ||           d S )Nr   efghhelor   )r,   regexr'   TrX   r'   )r   r   r0   r1   r2   )r9   
to_replacevaluesr?   r'   rT   dfr=   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 	 R<<<<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 )NrA   r   rB   r   r   halor   TrX   r   rE   rH   (a|b)rI   rJ   a_crapb_craprL   rL   r   rH   r   z(b)rI   rB   rJ   rB   rd   rL   rL   rX   r,   )r   r   r   r   r   r0   r1   r2   )	r9   r   dfmixto_replace_resr[   mix2dfmix2resexpecs	            r   test_regex_replace_list_mixedz2TestDataFrameReplace.test_regex_replace_list_mixedq   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          }||u sJ t          |d         ddt          j        t          j        gd          }t          j        ||           dd	g}d
dg}|                                }|                    ||dd          }||u sJ t          |d         g dd          }t          j        ||           g d}g d}|                                }|                    ||dd          }||u sJ t          |d         g dd          }t          j        ||           g d}g d}|                                }|                    ||d          }||u sJ t          |d         g dd          }t          j        ||           d S )NrA   r   rB   Tr'   rX   r   r   rH   ra   rI   rJ   rb   re   rf   rg   rX   r,   r'   )r   r   r   r/   r0   r1   r2   )r9   r   ri   rj   r[   rm   r=   rn   s           r   %test_regex_replace_list_mixed_inplacez:TestDataFrameReplace.test_regex_replace_list_mixed_inplace   s   &!! &t,&&!jjll^VTNN}}}}s632OPPQQ
c5))) (2:&jjll^VTNN}}}}s2R2R2RSSTT
c5))) 766///jjll^VTNN}}}}s2P2P2PQQRR
c5)))666///jjll>NN}}}}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          }||u s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          }||u sJ t          |d         g d|d         d          }t          j        ||           t          j        ||           |                    dd	idd
i          }|                                }|                    dd	idd
id          }||u s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          }||u sJ t          j        ||           t          j        ||           |                    ddt          j        id          }|                                }|                    ddt          j        id          }||u sJ t          |d         t          j        dddg|d         d          }t          j        ||           t          j        ||           d S )Nr   rA   Tr`   rq   r   r   r   rH   z\1ty)r   r   .tyru   rh   rr   .rY   r   r0   r   r   r/   r1   r2   )r9   r   ri   rm   res2r=   rn   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||cC=dKK~~~~
c5)))
dE***mmC#rvdm;;zz||CRV}dKK~~~~#,bfc3%<73<PP
 
 	c5)))
dE*****r   c                   t          |          }|                    ddt          j        iid          }|                                }|                                }|                    ddt          j        iidd          }||u sJ |                    ddt          j        ii          }|                    ddt          j        iid          }||u sJ t          |d         ddt          j        t          j        g|d         d	          }t          j        ||           t          j        ||           t          j        ||           t          j        ||           d S )
Nr   rA   Tr`   rq   rY   r   r   r   rw   )	r9   r   ri   rm   rx   res4r=   res3rn   s	            r   test_regex_replace_dict_nestedz3TestDataFrameReplace.test_regex_replace_dict_nested  sM   '""mmS;"78mEEzz||zz||s["&$9:DPTUU~~~~}}C+rv)>#?}@@S;*?$@$OO~~~~#,c3%?gclSS
 
 	c5)))
dE***
dE***
dE*****r   c                    |}t          dg di|          }|                    ddid          }t          dg di|          }t          j        ||           d S )	Nfirst)abcbcacabdtyper   rv   Tr`   )z.bczbc.zc.br   r0   r1   r2   )r9   any_string_dtypeusing_infer_stringr   r\   r=   r?   s          r   2test_regex_replace_dict_nested_non_first_characterzGTestDataFrameReplace.test_regex_replace_dict_nested_non_first_character  sw     !!6!6!67uEEES#Jd33g'<'<'<=UKKK
fh/////r   c                   t          t          g dt                    dd          }t          t          g dt                    dd          }|                    dddd	i          }t	          j        ||           d S )
N)QTr   r   r   r      )Typetmp)r      r   r   r   r   r   r   )r   r   )r   r   r8   r0   r1   r2   r9   r\   r?   r=   s       r   %test_regex_replace_dict_nested_gh4115z:TestDataFrameReplace.test_regex_replace_dict_nested_gh4115$  s    555VDDDQOO
 
 f___F&K&K&KTUVVWWV11%5%5677
fh/////r   c                   t          |          }t          |d         t          t          j        gdz  d          t          j        t          j        t          j        dgd          }|                    ddgt          j        d	
          }|                                }|                                }|                    ddgt          j        d	d	          }||u sJ |                    ddgt          j        d	          }||u sJ t          j        ||           t          j        ||           t          j        ||           d S )Nr   r   strr   r   r   rA   za|bTr`   rY   rr   r   r   r   r   r0   r/   r1   r2   )r9   r   r\   rn   rm   rx   r|   r=   s           r   !test_regex_replace_list_to_scalarz6TestDataFrameReplace.test_regex_replace_list_to_scalar,  s,   wS\RVHqL666fbfbfc2 
 
 jj+u-rvTjBBwwyywwyy{E2BF$PTUU~~~~[%$8PTUU~~~~
c5)))
dE***
dE*****r   c                $   t          |          }|                    ddd          }|                                }|                    dddd          }||u sJ |                                }|                    ddd          }||u sJ t          |d         g d|d	         d
          }|d	                             t                    |d	<   t          j        ||           t          j        ||           t          j        ||           d S )NrA   r   Tr`   rq   rr   r   )r   r   r   r   r   r   )r   r0   r/   r7   r8   r1   r2   r9   r   r\   rm   rx   r=   r|   rn   s           r   !test_regex_replace_str_to_numericz6TestDataFrameReplace.test_regex_replace_str_to_numericA  s   wjjatj44wwyyk1d$GG~~~~wwyyKq$GG~~~~3C3C3C'RU,WWXX3Z&&v..c

c5)))
dE***
dE*****r   c                   t          |          }|                    ddgdd          }|                                }|                    ddgddd          }||u sJ |                                }|                    ddgdd          }||u sJ t          |d         g d	ddt          j        d
gd          }t          j        ||           t          j        ||           t          j        ||           d S )NrA   r   r   Tr`   rY   rr   r   )r   r   r   r   r   r   )r   r0   r/   r   r   r1   r2   r   s           r   (test_regex_replace_regex_list_to_numericz=TestDataFrameReplace.test_regex_replace_regex_list_to_numericQ  s	   wjj+s+Qdj;;wwyy{C0!4NN~~~~wwyy[#$6aNN~~~~#,^^^3263:OPP
 
 	c5)))
dE***
dE*****r   c                b   t          |          }t          ddi          }t          dt          j        i          }|                    ||d          }|                                }|                    ||dd          }||u sJ |                                }|                    ||d          }||u sJ t          |d         ddt          j        t          j        g|d         d	          }	t          j        ||	           t          j        ||	           t          j        ||	           d S )
Nr   rA   Tr`   rq   rr   r   r   r   r   )
r9   r   r\   s1s2rm   rx   r=   r|   rn   s
             r   $test_regex_replace_series_of_regexesz9TestDataFrameReplace.test_regex_replace_series_of_regexesa  s!   wS+&''S"&M""jjRtj,,wwyyb"d$??~~~~wwyyBb$??~~~~#,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   rC   r   r   r   r   r   )r   r0   r1   r2   r   r   r   object_)r9   r   r\   rn   rm   s        r   /test_regex_replace_numeric_to_object_conversionzDTestDataFrameReplace.test_regex_replace_numeric_to_object_conversions  sv    wWS\PSUUVVjjC  
c5)))u{bj((((((r   rZ    )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col3r`   )1000r   r   r   r   r   r0   r   r   r1   r2   )r9   rZ   r\   r=   r?   s        r   +test_joint_simple_replace_and_regex_replacez@TestDataFrameReplace.test_joint_simple_replace_and_regex_replacez  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parenr   )r9   r   r\   r=   r?   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                    |} |||          }	|	                     |d          }
 |||          }t          j        |
|           d S )Nr   Tr`   r0   r1   assert_equal)r9   datarZ   r?   frame_or_seriesr   r   requestr   objr=   s              r   test_regex_replace_string_typesz4TestDataFrameReplace.test_regex_replace_string_types  s^    $ !od%000Zt44"?85999
)))))r   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   r.      -2015010120150102)r   r   r-   r.   r0   r1   r2   r3   r   pdto_datetime)r9   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   rV   rW   r   rv   rP   rB   r   r   rQ   rE   rR   rL   rK   )rP   rB   rS   rD   )rD   rP   rF   rG   )r   r   r   r   r0   r1   r2   )r9   r   dfobjrj   r[   rm   rn   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   )sizematchr   dummyalt)r   r   r   r   r1   get_objr0   r   pytestraises
ValueErrorformat)r9   r   serr   r?   r=   msgs          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   r0   r1   r2   meanr   )r9   r\   r=   r?   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                    t          g dg dg|          }dddd}|                    |          }|j        t          k                                    sJ d S )N)r)   barbah)r   r)   r   r   r   r   rC   )r   r0   dtypesr8   all)r9   r   r\   mreps        r   test_replace_convertz)TestDataFrameReplace.test_replace_convert  ss    """$9$9$9:BR
 
 
 a**jjmm
f$))+++++++r   c                z   |}t           j        |j        dd|j                            d          f<   t           j        |j        dd |j                            d          f<   |                    t           j        d          }|                                }|d                             t                    |d<   |	                    d          }t          j        ||           |                                }|d                             t                    |d<   t          j        |                    dt           j                  |           |                    t           j        d          }|                                }|d                             t                    |d<   |	                    d          }t          j        ||           |                                }|d                             t                    |d<   t          j        |                    dt           j                  |           d S )	Nr#   r(   r)   r*   r$   ir+   r   )r   r   r4   r5   r6   r0   r/   r7   r8   r3   r1   r2   )r9   r;   r>   r=   r?   	expected2s         r   test_replace_mixedz'TestDataFrameReplace.test_replace_mixed  s   356"bj((///013bj((---.#++BFC88%**,,"5/0088???--
fh///&++--	$U+226::	%
fnnS"&999EEE#++BFD99%**,,"5/0088???..
fh///&++--	$U+226::	%
fnnT26::IFFFFFr   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
          }||u sJ t          j        ||           d S )Nr   r   float64r   r   r   int64r$   r   r   Tr&   r   r   r0   r1   r2   r   s       r   &test_replace_mixed_int_block_upcastingz;TestDataFrameReplace.test_replace_mixed_int_block_upcasting1  s    S#Ji888QF'222 
 
 S#Ji888S!HI666 
 
 As##
fh///AsD11||||
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   s       r   &test_replace_mixed_int_block_splittingz;TestDataFrameReplace.test_replace_mixed_int_block_splittingF  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d
          t          dd	gd
          d          }|                    ddgd	dg          }t          j        ||           d S )Nr   r   r   r   r   r   r   r   r)   r8   r   r   r   r   s       r   test_replace_mixed2z(TestDataFrameReplace.test_replace_mixed2Y  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 
 
 QFUEN33
fh/////r   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 )
NrC   r   r   r   r   r   r   r   r   r   r   )
r   r   r0   r   to_dictr/   r7   r4   r1   r2   )r9   r\   r=   r?   r   s        r   test_replace_mixed3z(TestDataFrameReplace.test_replace_mixed3s  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   rC   )somestringshereher   r   Int64r   )	r   r   NAr7   r0   r   r   r1   assert_series_equalr9   r\   rm   s      r   1test_replace_nullable_int_with_string_doesnt_castzFTestDataFrameReplace.test_replace_nullable_int_with_string_doesnt_cast  sx    aAru-4U4U4UVVWW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   r0   r1   r2   )r9   r   nullable_serr\   r=   r?   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   rC   r   r   r   )r   r   r   r   r0   r1   r2   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t          j        gid          }|                    t          j        d i          }t          ddd git                    }t          j        ||           d S )Nr,   *   r
  r   )r   r   r  r0   r8   r1   r2   r9   r\   r=   r?   s       r   test_replace_NA_with_Nonez.TestDataFrameReplace.test_replace_NA_with_None  sj    "be-W===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   NaTr0   r   r   r1   r2   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   rC   r   r   )idr   rC   )      @g      @Nr   r8   r  )r9   
cat_seriesr\   r=   r?   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                    t          dgd gd          }|                    d |j        D             d          }t          dgd gd          }t          j        ||           d S )Nz#1234#)tickernamec                    i | ]}|d diS )z^#$r   ).0r   s     r   
<dictcomp>z<TestDataFrameReplace.test_replace_all_NA.<locals>.<dictcomp>  s    EEE3S5#,EEEr   Tr`   z$1234#)r   r0   r5   r1   r2   r   s       r   test_replace_all_NAz(TestDataFrameReplace.test_replace_all_NA  ss    8*tf==>>EE"*EEETRR
TFCCDD
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   rZ   r   )r4   r   r   r0   r   r1   r2   r/   )r9   r:   
orig_valueorig2r=   r?   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 S )Nr#   r$   r%   r   r   )r/   r7   r   float32r   r-   r.   r0   r1   r2   r3   )r9   r:   r<   r   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*+++r   z"frame, to_replace, value, expectedintsr   r   rC   r   r   )r   r   rC   r   boolsTFT)TTTcomplex)              ?               @              @rB  )y                rC  rD  
datetime64i  r#      r   i     r(   r)   )dtr   r   20130101
US/Easternnsperiodstzunitr   r   20130102rN  2013010420130103r   r   r)  c                \    |                     ||          }t          j        ||           d S r#  )r0   r1   r2   )r9   framerZ   r,   r?   r=   s         r   test_replace_dtypesz(TestDataFrameReplace.test_replace_dtypes  s1    N z511
fh/////r   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          }||u s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   r0   )r1  kvto_repr[   s      r   r2  zLTestDataFrameReplace.test_replace_input_formats_listlike.<locals>.<dictcomp>a  s5    NNN41aAqyyF1I66NNNr   )r#   r   r   r#   c                d    i | ],\  }}||                     t          j        |                   -S r   )r0   r   r   )r1  r_  r`  r[   s      r   r2  zLTestDataFrameReplace.test_replace_input_formats_listlike.<locals>.<dictcomp>p  s3    KKK1Aqyy33KKKr   )r  rX  Tr&   z:Replacement lists must match in length\. Expecting 3 got 2r   r   )r   r   r   infr0   itemsr1   r2   r/   zipr   r   r   )
r9   r\   filledr?   r=   r   r,   r   ra  r[   s
           @@r   #test_replace_input_formats_listlikez8TestDataFrameReplace.test_replace_input_formats_listlikeY  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%%c5$%??FX%%%%%
fh///K]:S111 	+ 	+JJvvabbz***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   6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
          }||u sJ !t          j        ||           d S )Nr   rY  rZ  r   r   c                P    i | ]"\  }}||                     |         d           #S )r   r^  )r1  r_  r`  ra  s      r   r2  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   rd  r0   re  r1   r2   r   r   	TypeErrorr/   )r9   r\   rg  r?   r   r=   r   ra  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%%c2t%<<FX%%%%%
fh/////s   5$C%%C),C)c                    d S r#  r   )r9   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t                    }|                    |          }t          j        ||           d S NStrongly AgreeAgreeNeutralDisagreeStrongly Disagree)r   r   r   rC   r   r   r   r   rC   r#   r   )rr  rt  rs  rq  ru  r   r8   r0   r1   r  r9   r   answerweightsr?   r=   s         r   test_replace_dict_no_regexz/TestDataFrameReplace.test_replace_dict_no_regex  s    #&  #	
 	
 	
 !"
 
 aA!a88GGG((
vx00000r   c                    t          dddddd|          }t          dd	d
ddd          }t          ddd
d	ddt                    }|                    |          }t          j        ||           d S rp  rv  rw  s         r   test_replace_series_no_regexz1TestDataFrameReplace.test_replace_series_no_regex  s    #&  #	
 	
 	
 "#%& 
 
 aA!a88GGG((
vx00000r   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   r6  rZ   r,   )r   r   r   r0   r1   r2   )r9   r\   res1rx   r|   r?   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   rC   )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   r0   r   r1   r2   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   r[  fdsa)r   r   randomdefault_rngr0   r1   r2   r9   r\   r=   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  r0   onesboolr1   r2   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)r[  Tr   r   s       r   %test_replace_with_dict_with_bool_keysz:TestDataFrameReplace.test_replace_with_dict_with_bool_keys  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   rC   r   )Y0Y1replace_stringtestr  )r   r0   r1   r2   r  r  s      r   !test_replace_dict_strings_vs_intsz6TestDataFrameReplace.test_replace_dict_strings_vs_ints  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   r0   r   rd  r   r1   r2   )r9   r\   rrP   s       r   test_replace_truthyz(TestDataFrameReplace.test_replace_truthy  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   r0   dictrf  r1   r2   r   s       r   -test_nested_dict_overlapping_keys_replace_intzBTestDataFrameReplace.test_nested_dict_overlapping_keys_replace_int	  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   aranger7   r   r   r0   r  rf  r1   r2   )r9   r   astrbstrr\   r=   r?   s          r   -test_nested_dict_overlapping_keys_replace_strzBTestDataFrameReplace.test_nested_dict_overlapping_keys_replace_str  s    IaOOxx}}yA%%c**T{##DT41122::sDT4$9$9:;;
fh/////r   c                v   t          dg di          }|                    ddddi          }t          dg dit                    }t          j        ||           t          dg di          }|                    dddd	i          }t          dg dit                    }t          j        ||           d S )
Nr   r@  YN)TF)r  r  r  r   )r   r   r   r  r   r0   r8   r1   r2   )r9   r\   rm   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@@@
c6***YYY'((jj#33//011C1@@@
c6*****r   c                   t          t          dddd          dt          j        dgd          }|                    t          j        d	          }t          t          dddd          t          g d
d          d          }t          j        ||           |                    d	          }t          j        ||           |                    dt          j                  }t          t          d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 )NrI  rC   rJ  rK  rL  r   r   r   r   r   r   r   r   r   rP  rQ  rR  rS  r$   r5  z
US/Pacific)r   r	   r   r   r0   r   r1   r2   r3   r   rH  as_unitr/   r4   r   r$  
tz_convertr   s       r   test_replace_datetimetzz,TestDataFrameReplace.test_replace_datetimetz'  s    
A,TRRR^ 
 
 BFA&&
A,TRRRIIIY777 
 
 	fh///1
fh///Arv&&
A,TRRR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   r1   r2   r0   r   r8   )r9   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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   )r9   r\   rZ   expr?   r=   s         r   test_replace_commutativez-TestDataFrameReplace.test_replace_commutative  sD    ( r]]S>>J''
fh/////r   replacer20170827c                    t          dgt                    }|                    ||d          }t          |gt                    }t          j        ||           d S )Nr   r   r   )r   r8   r0   r1   r2   )r9   r  r\   r=   r?   s        r   test_replace_replacer_dtypez0TestDataFrameReplace.test_replace_replacer_dtype  s^     uF+++(::;;hZv666
fh/////r   c                    t          dg did          }|                    dd          }t          dg did          }t          j        ||           d S )Ngrp)r   r   rC   r   r#   r
  r   r   
   )r  r   rC   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                    t          g dg dd          }d}t          j        t          |          5  |                    d            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.*r   c                *    |                                  S r#  )stripr  s    r   <lambda>zFTestDataFrameReplace.test_replace_invalid_to_replace.<locals>.<lambda>  s     r   )r   r   r   rk  r0   )r9   r\   r   s      r   test_replace_invalid_to_replacez4TestDataFrameReplace.test_replace_invalid_to_replace  s     ///8J8J8JKKLL0 	 ]9C000 	, 	,JJ**+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   AAA)floatr   r   r
  r  r,   c                    t          t          j        d          |          }|                    d t          j         t          j        g|          }t          j        ||           d S )Nr   r   r~  )r   r   eyer0   rd  r1   r2   )r9   r   r,   r\   r=   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 )
Nr>  r  )r      	   )r$   A1r   AABr  r  r   r   )r   r   r5   r0   r1   r2   )r9   r  r=   r?   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PerrC   r   r   )r   r1   r   r/   r0   r   )r9   r   r,   r   r?   r=   s         r   test_replace_ea_ignore_floatz1TestDataFrameReplace.test_replace_ea_ignore_float  se     !,--jo..88::S#&&
&)))))r   zreplace_dict, final_datac                ^   t          ddgddggddgd          }t          j        |          }t          j        |d d df         ddg          }t          j        |d d df         ddg          }t          ||d	          }|                    |d          }t          j        ||           d
}t          j	        t          |          5  t          j        ||           d d d            n# 1 swxY w Y   |                    |dd          }||u sJ t          j        ||           d S )Nr   r   r   r   r'  )r5   r   r   )
categoriesr   z:DataFrame.iloc\[:, 0\] \(column name=\"a\"\) are differentr   Tr&   )r   r   arrayr   Categoricalr0   r1   r2   r   r   AssertionError)	r9   replace_dict
final_datar\   r   r   r?   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???N:aaad+A???11--..L!,,
fh///N]>555 	0 	0!"h///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 L!T::||||
b(+++++s   C//C36C3c                   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           }|                    d           }|                    d           }|                    dddd          }t          j        ||           dS )zt
        Test for #23305: to ensure category dtypes are maintained
        after replace with direct values
        )r   r   rC   r   )r   r   r   r   )g      ?g      @g      @g      @)cat1cat2cat3cat4)obj1obj2obj3obj4)r   r   r   col4col5r   r'  )r   r  r   T)orderedr  )r   r   r   z)r  catXr  r  )obj9r  r  r  c                `    |                      d          j                            ddi          S )Nr'  r   r  r7   catrename_categoriesr  s    r   r  zGTestDataFrameReplace.test_replace_value_category_type.<locals>.<lambda>(  s'    ahhz**.@@#sLL r   c                `    |                      d          j                            ddi          S )Nr'  r  r  r  r  s    r   r  zGTestDataFrameReplace.test_replace_value_category_type.<locals>.<lambda>+  (    ahhz**.@@&&AQRR r   c                `    |                      d          j                            ddi          S )Nr'  r  r  r  r  s    r   r  zGTestDataFrameReplace.test_replace_value_category_type.<locals>.<lambda>.  r  r   r   r   r   )r   r   r  N)r   r7   r  reorder_categoriesapplyr1   r2   r9   
input_dictinput_dfexpected_dictr?   r=   s         r    test_replace_value_category_typez5TestDataFrameReplace.test_replace_value_category_type  s)    !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 
 

 >>LL
 
 >>RR
 
 RR
 
 ERRSS
fh/////r   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        ||           dS )zf
        Test to ensure category dtypes are maintained
        after replace with dict values
        r   r  r  r   r  r'  r  r  r  c                >    | j                             dddd          S )Nr  r  r  )r   r  r  )r  r  r  s    r   r  zFTestDataFrameReplace.test_replace_dict_category_type.<locals>.<lambda>K  s%    ae--66::  r   N)r   r7   r  r1   r2   r  s         r   test_replace_dict_category_typez4TestDataFrameReplace.test_replace_dict_category_type4  s      #efXxHH
*---44ZHH
 

 #&6(KK-00077ZHH
 

  
 
 	fh/////r   c                    t          g d          }t          j        d          }|                    |did          }t          g d          }t	          j        ||           d S )Nr   z^a$r  Tr`   )r  r   r   )r   recompiler0   r1   r2   )r9   r\   rX   r=   r?   s        r    test_replace_with_compiled_regexz5TestDataFrameReplace.test_replace_with_compiled_regexR  se    ''
5!!UCL55___--
fh/////r   c                .   t          dt          j        dd          t          j        dd          gi          }|                    dt          j        dd          dii          }t          dddgit                    }t          j        ||           d S )Nr   r   r   r  r   )r   r   Intervalr0   r8   r1   r2   r   s       r   test_replace_intervalsz+TestDataFrameReplace.test_replace_intervalsZ  s    bk!Q//Q1B1BCDEES2;q!#4#4c":;<<cC:.f===
fh/////r   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   负面rC   )r   r   r  r0   r1   r2   )r9   columns_values_mapr   r=   r?   s        r   test_replace_unicodez)TestDataFrameReplace.test_replace_unicodea  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 )NrG   z|S)r7   r/   r0   r   r   r1   r   )r9   r   r   r?   s       r   test_replace_bytesz'TestDataFrameReplace.test_replace_bytesi  s]    ose$$++D1188::kk4.))
X&&&&&r   z!data, to_replace, value, expectedr   boxc                     ||          } ||          }|                      ||          |          }t          j        ||           d S r#  r   )	r9   r   rZ   r,   r?   r  r   r   r=   s	            r   !test_replace_list_with_mixed_typez6TestDataFrameReplace.test_replace_list_with_mixed_typep  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  )r9   r  r\   r=   r?   s        r   %test_replace_value_none_dtype_numericz:TestDataFrameReplace.test_replace_value_none_dtype_numeric  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  r0   r1   r2   )r9   r   r?   r=   s       r   test_replace_with_nil_naz-TestDataFrameReplace.test_replace_with_nil_na  sh    uben-..cORU#;<QFKKKUO44
h/////r   r  zfloat64[pyarrow]pyarrow)marksc                   t          dt          j        dgt          dt          j        dg|          d          }|                    t          j        t          j                  }|r|}n\t          dt          j        dgt          dt          j        dg|          d          }t          j        |j        d                   sJ t          j
        ||           d S )Nr   r   r   r  r  )r   r   r   r   r   r  r0   isnanr-   r1   r2   )r9   r   using_nan_is_nar\   r=   r?   s         r   &test_replace_na_to_nan_nullable_floatsz;TestDataFrameReplace.test_replace_na_to_nan_nullable_floats  s     Arvq>fa]%.P.P.PQQRRBE26** 	0HH Nvq"&!nE'J'J'JKK H 8HL./////
fh/////r   r
  zint64[pyarrow]c                    t          g d|          }|                    t          j        d          }|rt          g d|          }n|}t	          j        ||           d S )N)r   r   Nr   r  )r   r   r  )r   r0   r   r   r1   r  )r9   r   r%  r   r=   r?   s         r   test_replace_nan_nullable_intsz3TestDataFrameReplace.test_replace_nan_nullable_ints  sm     \\\///RVR(( 	jjj666HHH
vx00000r   N)h__name__
__module____qualname__r@   r   markparametrizer   r   r]   ro   rs   ry   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%  r+  r3  r9  r<  r   int32int16r   r   r	   r   DatetimeIndexr  rV  rh  rl  rn  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  int8r;  r   r  r  r  r  r  Periodr  r  r  r  r
  r  r  r  r  r   tupler  r  r  r   paramtd
skip_if_nor&  r(  r   r   r   r!   r!       s       A A A2 [$
 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0 0 0+ + +*+ + + + + + + + +$) ) ) [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(, , ,G G G., , ,*0 0 0&0 0 04
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&0 0 0* * *(5 5 5 [,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	 	'Z&l    ^	   	*666	*666	-R- )	* F F F )	* F F F )	* F F F  "'$--^	 	 4 	As8aX.//	As8aX.//	 	As8aX.//	As8aX.//	 	As8aX.//	As8aX.//	 	As8aX.//	As8aX.//	yb	
e eL0 0Me eL0&+ &+ &+P0 0 00  1 1 1,1 1 10	. 	. 	.
' 
' 
'0 0 0* * *
0 0 00 0 01 1 1$ $ $0 0 00 0 0	+ 	+ 	+R0 R0 R0hA A A [ #III66!"""III66 #OOO<<#.."OOO<<	
 	0 	0 	0 [Ij!!BGAJJBHQKKBJqMMBJqMM	
	 	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* ["

aVaV,	-aa0@0@Aq6Aq6BR/ST , ,	 ,(80 80 80t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 [FL+=2=3K3KLLL	
 0 0 0  [FL)y1I1IJJJ	
 1 1 1 1 1r   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                            ddd
g          ej                            dddg          d                         Zd Zd Zd ZdS )TestDataFrameReplaceRegexr   r   rV   r   r   zto_replace,valuerA   )rH   z\1\1\1compile_regexTFregex_kwargr'   c                `   t          |          }|                                }|rt          j        |          }|r|}	d }nd}	|                    ||||	          }
|r|
|u sJ |}
|t
          j        u rt
          j        }nd}||j        |d         dk    df<   t          j	        |
|           d S )NTrq   z...r   rv   )
r   r/   r  r  r0   r   r   r-   r1   r2   )r9   r   rZ   r,   r9  r:  r'   r\   r?   rX   r=   expected_replace_vals               r   test_regex_replace_scalarz3TestDataFrameReplaceRegex.test_regex_replace_scalar  s      t__7799 	0J//J 	EJJEJweLL 	R<<<<FBF??#%6  #( 2FXc]c)3./
fh/////r   rX   r,   r   1c                   t          dgdgd          }|dk    rt          nd }t          |g|gd|          }|                    d||          }t          j        ||           t          dgdgd          }|rt          |gdgd|          }n#t          t          |g|          dgd          }|                    d||          }	t          j        |	|           d S )Nr  r   r   r   )rZ   r,   rX   r>  )r   r8   r0   r1   r2   r   )
r9   rX   r,   r   r   expected_df1
result_df1df2expected_df2
result_df2s
             r   test_replace_regex_dtype_framez8TestDataFrameReplaceRegex.test_replace_regex_dtype_frame  s    se3%0011  1**$ weW!=!=UKKK[[CuE[JJ

j,777se3%0011 	V$E7#%?%?uMMMLL$65'+G+G+Gse%T%TUUL[[CuE[JJ

j,77777r   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  rI  r   r'  r   rv   def_r~  )r   r/   r0   r1   r2   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)rZ   r,   r'   rX   )r   len_mgrblocksr0   )r9   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)r)  r*  r+  r   r,  r-  r   r   r   r   r=  rE  rG  rL  rQ  r   r   r   r8  r8    s       [$v,,TT&\\22$v,,TT%%((^^44	
  [k2624NO  [_tUm<<[]T5M::[Yu660 0 76 ;: =<  0: [Wudm44[Wq#h//8 8 0/ 548&0 0 00 0 0, , , , ,r   r8  )r
   r   )r
   r   )
__future__r   r   r  numpyr   r   pandas.util._test_decoratorsutil_test_decoratorsr5  pandasr   r   r   r   r   r	   pandas._testing_testingr1   fixturer   r   r!   r8  r   r   r   <module>r[     s}   " " " " " "       				      ) ) ) ) ) ) ) ) )                        4 4 4 4 R R R R_1 _1 _1 _1 _1 _1 _1 _1D-`, `, `, `, `, `, `, `, `, `,r   