
    dL                        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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     c/var/www/html/t/fyr/venv311/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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,ej                            dM e-dNg dOi          dPdQ e-dNg dRi          f e-dNg dOiej.        S          dPdQ e-dNg dRiej.        S          f e-dNg dOiej/        S          dPdQ e-dNg dRiej/        S          f e-dTg dUi          dd e-dTg dVi          f e-dWg dXi          dYdQ e-dWg dZi          f e-d[ e0 e1d\d]d^           e1d\d_d^           e1d\d]d^          g          i           e1d\d]d^           e1d\d_d^           e-d[ e0 e1d\d_d^          gdz            i          f e- e1d`dadb          gdcgdd          dcde e- e1d`dadb          gdegdd          f e-df e1dgdhdP          gi           e1dgdhdP           e1didhdP           e-df e1didhdP          gi          f e- e2djddkl          dQej        dmgdn           e3dodkp           e3dqdkp           e- e3djdkp           e3dqdkp           e3drdkp          gdQej        dmgdn          f e-dPdsgdmdtgg          dsd] e-d]dugdmdtgg          f e-dPdsgdmdtgg          dPd] e-d]dugdmdtgg          f e-dPdsgdmdtgg          dsdu e-d]dugdmdtgg          f e-dPdsgdmdtgg          dPdu e-d]dugdmdtgg          fg          dv             Z4dw Z5dx Z6dy Z7dz Z8d{ Z9d| Z:d} Z;d~ Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHej                            ddQdg dd]ej        d_gg ddfej        dg dg dg ddfd1dg dd]ej        d_gg ddfdQdmgdg dd]ej        d_gg ddfdPdmgdg dd]ej        d_gg ddfddg dd]ej        d_gg ddfdd0gdg dd]ej        d_gg ddfg          d             ZIej                            ddPdPd2ddgdmdmggfdPdmd2ddPgdmdggfg          d             ZJej                            dg dOg ddd]dd_dg dOg ddfg dOg ddddddg dOg ddfg          d             ZKej                            d e3d           ejL        dP           ej/        dP           ejM        dP           ejN        dP          g          d             ZOd ZPd ZQej                            dCg d          ej                            dej        ej        g          d                         ZRej                            dej        d]g          d             ZSej                            d ejT        d           ejU        dQd]          g          d             ZVd ZWd ZXd ZYd ZZd Z[d Z\ej                            ddPgdsgdQgdQgfdPgdPgdQgdQgfdsgdsgdQgdgfdsgdPgdQgdgfg          ej                            de]e^ej_        g          d                         Z`ej                            ddmej        dtg          d             ZadS )TestDataFrameReplacec                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rC   rA   lor   
\s*(\.)\s*z(e|f|g)\1\1\1_crapr   r   ..rK   )e_crapf_crapg_craprC   )rC   rL   rE   rF   erA   fgrC   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   )r,   regexr'   TrW   r'   )r   r   r0   r1   r2   )r7   
to_replacevaluesr>   r'   rS   dfr=   s           r   test_regex_replace_list_objz0TestDataFrameReplace.test_regex_replace_list_obj6   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 )Nr@   r   rA   r   r   halor   TrW   r   rD   rG   (a|b)rH   rI   a_crapb_craprK   rK   r   rG   r   z(b)rH   rA   rI   rA   rc   rK   rK   rW   r,   )r   r   r   r   r   r0   r1   r2   )	r7   r   dfmixto_replace_resrZ   mix2dfmix2resexpecs	            r   test_regex_replace_list_mixedz2TestDataFrameReplace.test_regex_replace_list_mixedn   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 )Nr@   r   rA   Tr'   rW   r   r   rG   r`   rH   rI   ra   rd   re   rf   rW   r,   r'   )r   r   r   r/   r0   r1   r2   )r7   r   rh   ri   rZ   rl   r;   rm   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   r@   Tr_   rp   r   r   r   rG   z\1ty)r   r   .tyrt   rg   rq   .rX   r   r0   r   r   r/   r1   r2   )r7   r   rh   rl   res2r;   rm   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   r@   Tr_   rp   rX   r   r   r   rv   )	r7   r   rh   rl   rw   res4r;   res3rm   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|          }t          dg di|          }|                    ddid          }t          j        ||           d S )	Nfirst)abcbcacabdtype)z.bczbc.zc.br   ru   Tr_   r   r0   r1   r2   )r7   any_string_dtyper   r[   r>   r=   s         r   2test_regex_replace_dict_nested_non_first_characterzGTestDataFrameReplace.test_regex_replace_dict_nested_non_first_character  su     !6!6!67uEEEg'<'<'<=UKKKS#Jd33
fh/////r   c                    t          g ddd          }t          g ddd          }|                    ddddi          }t          j        ||           d S )	N)QTr   r   r      )Typetmp)r      r   r   r   r   r   r   )r   r   r   r7   r[   r>   r=   s       r   %test_regex_replace_dict_nested_gh4115z:TestDataFrameReplace.test_regex_replace_dict_nested_gh4115!  sn     9 9 9!DDEEoooa@@AAV11%5%5677
fh/////r   c                   t          |          }t          |d         t          j        t          j        gdz            t          j        t          j        t          j        dgd          }|                    ddgt          j        d          }|                                }|                                }|                    ddgt          j        dd	          }|J |                    ddgt          j        d
          }|J t          j        ||           t          j        ||           t          j        ||           d S )Nr   r   r   r   r@   za|bTr_   rX   rq   )r   r   arrayr   r0   r/   r1   r2   )r7   r   r[   rm   rl   rw   r{   r;   s           r   !test_regex_replace_list_to_scalarz6TestDataFrameReplace.test_regex_replace_list_to_scalar'  s9   wS\Xrvhl++fbfbfc2 
 
 jj+u-rvTjBBwwyywwyy||% "&d $ 
 
 ###||&bfd $ 
 
 ###
c5)))
dE***
dE*****r   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 )Nr@   r   Tr_   rp   rq   r   )r   r   r   r   r   r   )r   r0   r/   r1   r2   r7   r   r[   rl   rw   r;   r{   rm   s           r   !test_regex_replace_str_to_numericz6TestDataFrameReplace.test_regex_replace_str_to_numeric?  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 )Nr@   r   r   Tr_   rX   rq   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_numericN  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   r@   Tr_   rp   rq   r   r   r   )r   r   r   r   r0   r/   r1   r2   )
r7   r   r[   s1s2rl   rw   r;   r{   rm   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   rB   r   r   r   r   r   )r   r0   r1   r2   r   r   r   object_)r7   r   r[   rm   rl   s        r   /test_regex_replace_numeric_to_object_conversionzDTestDataFrameReplace.test_regex_replace_numeric_to_object_conversionp  sv    wWS\PSUUVVjjC  
c5)))u{bj((((((r   rY    )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   )r7   rY   r[   r=   r>   s        r   +test_joint_simple_replace_and_regex_replacez@TestDataFrameReplace.test_joint_simple_replace_and_regex_replacew  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   )r7   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   z^\s*$c                    |} |||          }|                     |d          } |||          }t          j        ||           d S )Nr   Tr_   r0   r1   assert_equal)	r7   datarY   r>   frame_or_seriesr   r   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)r7   r8   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   rU   rV   r   ru   rO   rA   r   r   rP   rD   rQ   rK   rJ   )rO   rA   rR   rC   )rC   rO   rE   rF   )r   r   r   r   r0   r1   r2   )r7   r   dfobjri   rZ   rl   rm   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)r7   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   )r7   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}|                    |          }t          t          j        gdz            }|j        }t          j        ||           d S )N)r)   barbah)r   r)   r   r   r   rB   )r   r0   r   r   int64dtypesr1   assert_series_equal)r7   r[   mreprm   rl   s         r   test_replace_convertz)TestDataFrameReplace.test_replace_convert  su    ---/D/D/DEFFa**jjmmzA~&&j
uc*****r   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   r4   r5   r6   r0   r3   r1   r2   )r7   r9   r<   r=   r>   s        r   test_replace_mixedz'TestDataFrameReplace.test_replace_mixed  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   r0   r1   r2   )r7   r[   r>   r=   r;   s        r   &test_replace_mixed_int_block_upcastingz;TestDataFrameReplace.test_replace_mixed_int_block_upcasting  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   s       r   &test_replace_mixed_int_block_splittingz;TestDataFrameReplace.test_replace_mixed_int_block_splitting4  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)   objectr   r   r   r   s       r   test_replace_mixed2z(TestDataFrameReplace.test_replace_mixed2G  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          }|                                }|d         |j        d<   |d         |j        d	<   t          j	        ||           d S )
NrB   r   r   r   r   r   r   r   r   )r   r   )
r   r   r0   r   to_dictr/   astyper4   r1   r2   )r7   r[   r=   r>   r   s        r   test_replace_mixed3z(TestDataFrameReplace.test_replace_mixed3a  s    !Qw///faV76S6S6STT
 
 Arwwyy0022337799##I..GGIIddd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   rB   )somestringshereher   r   Int64r   )r   r   r   r   r0   r1   r   r7   r[   rl   s      r   1test_replace_nullable_int_with_string_doesnt_castzFTestDataFrameReplace.test_replace_nullable_int_with_string_doesnt_castm  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   r0   r1   r2   )r7   r   nullable_serr[   r=   r>   s         r   !test_replace_with_nullable_columnz6TestDataFrameReplace.test_replace_with_nullable_columnu  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   rB   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d gi                              ddi          }|                    t          j        d i          }t          ddd git
                    }t          j        ||           d S )Nr,   *   r  r   )r   r   r0   r   NAr   r1   r2   r7   r[   r=   r>   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   NaTr0   r   NaNr1   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   rB   r   r   )idr   rB   )      @g      @Nr   r   r  )r7   
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                *   |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   rY   r   )r4   r   r   r0   r   r1   r2   r/   )r7   r8   
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                f   |                                                     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<   d|j        |j        d d         df<   |d         }t          j        ||dk    <   ||d<   |
                    d          }t          j	        ||
                    d                     d S )Nr#   r$   r%   r   r   bfill)method)r/   r   r   float32r   r-   r.   r0   r1   r2   r3   )r7   r8   r:   r   r   r=   s         r   test_replace_for_new_dtypesz0TestDataFrameReplace.test_replace_for_new_dtypes  sk    %%''..rz::.0fGM"1"%s*+/1vGM"##&+,oobfd33
k7>>$+?+?@@@
k11$??III.0fGM"1"%s*+/1vGM"##&+,.2GM"1"%s*+CLv!t)w//
fgnnGn&D&DEEEEEr   z"frame, to_replace, value, expectedintsr   r   rB   r   r   )r   r   rB   r   boolsTFT)TTTcomplex)              ?               @              @r6  )y                r7  r8  
datetime64i  r#      r   i     r(   r)   )dtstrr   r<  ih  
   i  20130101
US/Easternperiodstzr   r   20130102rC  2013010420130103r   r   r#  c                \    |                     ||          }t          j        ||           d S r  )r0   r1   r2   )r7   framerY   r,   r>   r=   s         r   test_replace_dtypesz(TestDataFrameReplace.test_replace_dtypes  s1    T 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          }|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   ).0kvto_reprZ   s      r   
<dictcomp>zLTestDataFrameReplace.test_replace_input_formats_listlike.<locals>.<dictcomp>Q  s5    NNN41aAqyyF1I66NNNr   )r#   r   r   r#   c                d    i | ],\  }}||                     t          j        |                   -S r   )r0   r   r   )rS  rT  rU  rZ   s      r   rW  zLTestDataFrameReplace.test_replace_input_formats_listlike.<locals>.<dictcomp>`  s3    KKK1Aqyy33KKKr   )r  rL  Tr&   z:Replacement lists must match in length\. Expecting 3 got 2r   r   )r   r   r   infr0   itemsr1   r2   r/   zipr   r   r   )r7   r[   filledr>   r=   r   r,   r;   r   rV  rZ   s            @@r   #test_replace_input_formats_listlikez8TestDataFrameReplace.test_replace_input_formats_listlikeI  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   rM  rN  r   r   c                P    i | ]"\  }}||                     |         d           #S )r   rR  )rS  rT  rU  rV  s      r   rW  zJTestDataFrameReplace.test_replace_input_formats_scalar.<locals>.<dictcomp>y  s1    FFF41aAqyyA..FFFr   z.value argument must be scalar, dict, or Seriesr   r  Tr&   )r   r   r   rZ  r0   r[  r1   r2   r   r   	TypeErrorr/   )	r7   r[   r]  r>   r   r=   r   r;   rV  s	           @r   !test_replace_input_formats_scalarz6TestDataFrameReplace.test_replace_input_formats_scalarq  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   )r7   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          j        ||           d S NStrongly AgreeAgreeNeutralDisagreeStrongly Disagree)r   r   r   rB   r   r   r   rB   r#   r   )rh  rj  ri  rg  rk  r   r0   r1   r   r7   answerweightsr>   r=   s        r   test_replace_dict_no_regexz/TestDataFrameReplace.test_replace_dict_no_regex  s    #& 
 
 !"
 
 aA!a8899((
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          j        ||           d S rf  rl  rm  s        r   test_replace_series_no_regexz1TestDataFrameReplace.test_replace_series_no_regex  s    #& 
 
 "#%& 
 
 aA!a8899((
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   r(  rY   r,   r   r   r   r0   r1   r2   )r7   r[   res1rw   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   rB   )0vrry  ry  )ry  ry  ry  bt)vory  ry  ry  )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   rO  fdsa)r   r   randomrandr0   r1   r2   r7   r[   r=   s      r   (test_replace_pure_bool_with_string_no_opz=TestDataFrameReplace.test_replace_pure_bool_with_string_no_op  sP    ry~~a++c122FF++
b&)))))r   c                   t          t          j                            dd          dk              }|                    dd          }t          t          j        dt                              }t          j        ||           d S )Nr   r   FT)r   r   r   )	r   r   r  r  r0   onesboolr1   r2   r  s       r   test_replace_bool_with_boolz0TestDataFrameReplace.test_replace_bool_with_bool  sl    ry~~a++c122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)rO  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   rB   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   rZ  r   r1   r2   )r7   r[   rrO   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   dictr\  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   aranger   r=  r   r0   r  r\  r1   r2   )r7   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                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   r4  YN)TF)r  r  r  )r   r   r   r  r   )r7   r[   rl   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                   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        d         dk    sJ |                              }t          j
        ||           d S )Nfnamei     M)year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  r5   c                ,    g | ]}d          |         S r  r   rS  rT  r   s     r   
<listcomp>z<TestDataFrameReplace.test_replace_period.<locals>.<listcomp>2  !    'O'O'O!'
1'O'O'Or   r   z	Period[M])r   Periodr   setr  rZ   keysr   r0   r1   r2   r7   r[   r>   r=   r   s       @r   test_replace_periodz(TestDataFrameReplace.test_replace_period  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q![0000A
fh/////r   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          }|                              }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>Q  r  r   )	r   r   r  r  rZ   r  r0   r1   r2   r  s       @r   test_replace_datetimez*TestDataFrameReplace.test_replace_datetime7  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A
fh/////r   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          }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          }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 )Nr?  rB   r@  rA  r   r   r   r   r   r   r   r   r   rD  rE  rF  rG  r'  r$   z
US/Pacific)r   r	   r   r   r0   r   r1   r2   r3   r   r/   r4   r   r  
tz_convertr  s       r   test_replace_datetimetzz,TestDataFrameReplace.test_replace_datetimetzU  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\:::
 ^ 	
 	
 	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\:::
 ^ 	
 	
 	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   r   )r7   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  )r#        @r  ffillpad)r   r   r   )r   r   )r   r   r   )r   r   r   c                    t          g ddt          j        dgg dd          }|                    |d |          }t          |          }t	          j        ||           d S )Nr  r#   r   r   r   )rY   r,   r.  ru  )r7   rY   r.  r>   r[   r=   s         r   test_replace_methodz(TestDataFrameReplace.test_replace_method  si    D YYYa^///RRSSzfMMX&&
fh/////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	          }|d         dk    rddgnddg}t          j        |d d df         |	          }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          }
|
J t          j        ||           d S )Nr   r   r   r   r!  )r5   r   r   rB   )
categoriesr   zHAttributes of DataFrame.iloc\[:, 0\] \(column name=\"a\"\) are differentr   Tr&   )r   r   r   r   Categoricalr0   r1   r2   r   r   AssertionError)r7   replace_dict
final_datar[   r   ex_catr   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???',11!Q1vN:aaad+???11--..L!,,
fh/// 	 ]>555 	0 	0!"h///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 zz,4z@@###
b(+++++s   DDD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   )r7   r[   rY   expr>   r=   s         r   test_replace_commutativez-TestDataFrameReplace.test_replace_commutative  sD    ( r]]S>>J''
fh/////r   replacer20170827c                    t          dg          }|                    ||d          }t          |g          }t          j        ||           d S )Nr   r   r   )r7   requestr  r[   r=   r>   s         r   test_replace_replacer_dtypez0TestDataFrameReplace.test_replace_replacer_dtype  sT     u(::;;hZ((
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   rB   r   r#   r  r   r   r>  )r>  r   rB   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>0  s     r   )r   r   r   ra  r0   )r7   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   rt  )r   r   eyer0   rZ  r1   r2   )r7   r   r,   r[   r=   s        r   "test_replace_no_replacement_dtypesz7TestDataFrameReplace.test_replace_no_replacement_dtypes2  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 )
Nr2  r  )r   r  r  )r$   A1r   AABr  r  r   r   )r   r   r5   r0   r1   r2   )r7   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PerrB   r   r   )r   r1   r   r/   r0   r   )r7   r   r,   r   r>   r=   s         r   test_replace_ea_ignore_floatz1TestDataFrameReplace.test_replace_ea_ignore_floatI  se     !,--jo..88::S#&&
&)))))r   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          }t          j        ||           dS )zt
        Test for #23305: to ensure category dtypes are maintained
        after replace with direct values
        )r   r   rB   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  r   r  r  r  r  r  N)r   r   catreorder_categoriesr0   r1   r2   r7   
input_dictinput_dfexpected_dictr>   r=   s         r    test_replace_value_category_typez5TestDataFrameReplace.test_replace_value_category_typeS  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 
 

 ##C--##FF33!!&&11
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dd	d
          }t          j        ||           dS )zf
        Test to ensure category dtypes are maintained
        after replace with dict values
        r   r  r   r   r
  r!  r  r  r  )r   r  r   N)r   r   r0   r1   r2   r  s         r   test_replace_dict_category_typez4TestDataFrameReplace.test_replace_dict_category_type  s      #efXxHH
*---44ZHH
 

 #&6(KK-00077ZHH
 

 !!VV"L"LMM
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   )r7   r[   rW   r=   r>   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          }|                    dt          j        dd          dii          }t          dddgi          }t	          j        ||           d S )Nr   r   r   r
  )r   r   Intervalr0   r1   r2   r  s       r   test_replace_intervalsz+TestDataFrameReplace.test_replace_intervals  s    bk!Q//Q1B1BCDEES2;q!#4#4c":;<<cC:.//
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   负面rB   )r   r   r  r0   r1   r2   )r7   columns_values_mapr   r=   r>   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 )NrF   z|S)r   r/   r0   r   r   r1   r   )r7   r   r   r>   s       r   test_replace_bytesz'TestDataFrameReplace.test_replace_bytes  s]    ose$$++D1188::kk4.))
X&&&&&r   z!data, to_replace, value, expectedr   boxc                     ||          } ||          }|                      ||          |          }t          j        ||           d S r  r   )	r7   r   rY   r,   r>   r%  r   r   r=   s	            r   !test_replace_list_with_mixed_typez6TestDataFrameReplace.test_replace_list_with_mixed_type  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   r0   r   r1   r2   )r7   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   N)b__name__
__module____qualname__r?   r   markparametrizer   r   r\   rn   rr   rx   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%  r+  r0  r   int32int16r   r   r	   r   rJ  r^  rb  rd  rp  rr  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  int8r/  r   r  r  r  r  r  r  r  r  r  r  r  r  r"  r$  r   tupler   r'  r*  r   r   r   r!   r!      s       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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(+ + +P P P, , ,*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&* * *(F F F( [,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	 &Ij\BBB%Ij\BBB%Ij\BBB
  ^ 	 	, 	As8aX.//	As8aX.//	 	As8aX.//	As8aX.//	 	As8aX.//	As8aX.//	 	As8aX.//	As8aX.//	e	
h hR0 0Sh hR0&+ &+ &+P0 0 00  1 1 1*1 1 1.	. 	. 	.
' 
' 
'0 0 0* * *
0 0 00 0 01 1 1$ $ $0 0 00 0 0	+ 	+ 	+ 0  0  0D0 0 0<P0 P0 P0d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 , ,	 ,2 [ #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*10 10 10f0 0 04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 	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                            ddd
g          d             Zd Zd ZdS )TestDataFrameReplaceRegexr   r   rU   r   r   zto_replace,valuer@   )rG   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 )NTrp   z...r   ru   )
r   r/   r  r  r0   r   r   r-   r1   r2   )r7   r   rY   r,   r6  r7  r'   r[   r>   rW   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 	>>>FBF??#%6  #( 2FXc]c)3./
fh/////r   rW   c                Z   t          dgdgd          }t          dgdgd          }|                    dd|          }t          j        ||           t          dgdgd          }t          dgdgd          }|                    dd|          }t          j        ||           d S )Nry  r   r   )rY   r,   rW   1r   )r7   rW   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 s!!5!566[[Cq[FF

j,777se3%0011 s#!7!788[[Cq[FF

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  rF  r   r!  r   ru   def_rt  )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   N)r+  r,  r-  r   r.  r/  r   r   r   r   r:  rB  rD  rI  r   r   r   r5  r5    sp       [$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
8 
8 54
80 0 00 0 0 0 0r   r5  )r
   r   )r
   r   )
__future__r   r   r  numpyr   r   pandasr   r   r   r   r   r	   pandas._testing_testingr1   fixturer   r   r!   r5  r   r   r   <module>rP     sb   " " " " " "       				                             4 4 4 4 R R R R}0 }0 }0 }0 }0 }0 }0 }0@.K0 K0 K0 K0 K0 K0 K0 K0 K0 K0r   