
    OwgN                        d dl mZ d dlmZ d dlZd dlZd dlZd dlmZ d dl	Z
d dl	mZmZmZmZmZ d dlmZ ej&                  dd       Zej&                  dd       Z G d d	      Z G d
 d      Zy)    )annotations)datetimeN)using_pyarrow_string_dtype)	DataFrameIndexSeries	Timestamp
date_rangec                 B    t        t        d            t        d      dS )N   ab..ab)listrange     ^/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/frame/methods/test_replace.pymix_abr      s    eAhd6l33r   c                 h    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(    eAhd6l#sBFFC9PQQr   c                  $   e Zd Zej                  j                   e       d      d        Zej                  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                  j                  dddg      ej                  j                  dddg      d                      Zd Zd Zd Zd Zd  Zej                  j                   e       d      d!        Zej                  j                   e       d      d"        Zej                  j                   e       d      d#        Zej                  j                   e       d      d$        Zd% Zd& Zej                  j                  d'e	j                  d(d)d(e	j                  d*g      d+        Zej                  j                  d,g d-      d.        Zej                  j                  d/d0d1gd2d3d4d5d6gfg d7d8ej4                  id3ej4                  ej4                  gfg      d9        Zd: Zd; Zd< Zd= Zej                  j                   e       d      d>        Z ej                  j                   e       d      d?        Z!d@ Z"dA Z#dB Z$dC Z%dD Z&ej                  j                  dEg dF      dG        Z'dH Z(dI Z)dJ Z*dK Z+dL Z,dM Z-dN Z.ej                  j                  dO e/dPg dQi      dRdS e/dPg dTi      f e/dPg dQie	j`                  U      dRdS e/dPg dTie	j`                  U      f e/dPg dQie	jb                  U      dRdS e/dPg dTie	jb                  U      f e/dVg dWi      dd e/dVg dXi      f e/dYg dZi      d[dS e/dYg d\i      f e/d] e2 e3d^d_d`       e3d^dad`       e3d^d_d`      g      i       e3d^d_d`       e3d^dad`       e/d] e2 e3d^dad`      gd
z        i      f e/ e3dbdcdd      gdegdf      dedg e/ e3dbdcdd      gdggdf      f e/dh e3didjdR      gi       e3didjdR       e3dkdjdR       e/dh e3dkdjdR      gi      f e/ e4dld
dmn      dSe	j                  dogdp       e5dqdmr       e5dsdmr       e/ ejl                   e5dldmr       e5dsdmr       e5dtdmr      g      jo                  du      dSe	j                  dogdp      f e/dRdvgdodwgg      dvd_ e/d_dxgdodwgg      f e/dRdvgdodwgg      dRd_ e/d_dxgdodwgg      f e/dRdvgdodwgg      dvdx e/d_dxgdodwgg      f e/dRdvgdodwgg      dRdx e/d_dxgdodwgg      fg      dy        Z8dz Z9ej                  j                   e       d      d{        Z:d| Z;ej                  j                   e       d      d}        Z<ej                  j                   e       d      d~        Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGej                  j                   e       d      d        ZHej                  j                   e       d      d        ZIej                  j                   e       d      d        ZJd ZKd ZLej                  j                  ddSdg dd_e	j                  dagg ddfe	j                  dg dg dg ddfd3dg dd_e	j                  dagg ddfdSdogdg dd_e	j                  dagg ddfdRdogdg dd_e	j                  dagg ddfddg dd_e	j                  dagg ddfd	d2gdg dd_e	j                  dagg ddfg      d        ZMej                  j                  ddRdRd4d
d
gdodoggfdRdod4d
dRgdod
ggfg      d        ZNej                  j                  dg dQg ddd_ddadg dQg ddfg dQg ddddddg dQg ddfg      d        ZOej                  j                   e       d      ej                  j                  d e5d       e	j                  dR       e	jb                  dR       e	j                  dR       e	j                  dR      g      d               ZSd ZTd ZUej                  j                  dEg d      ej                  j                  de	j                  ej4                  g      d               ZVej                  j                  de	j                  d_g      d        ZWej                  j                  d ej                  d       ej                  dSd_      g      d        ZZd Z[d Z\d Z]d Z^d Z_d Z`ej                  j                  ddRgdvgdSgdSgfdRgdRgdSgdSgfdvgdvgdSgdgfdvgdRgdSgdgfg      ej                  j                  deaebe	j                  g      d               Zdej                  j                  ddoe	j                  dwg      d        Zed Zfy)TestDataFrameReplacecan't set float into stringreasonc                   t         j                  |j                  |j                  d d df<   t         j                  |j                  |j                  dd  df<   |j	                         }|j                  t         j                  dd      }|J t        j                  ||j                  d             |}t         j                  |j                  dd|j                  j                  d      f<   t         j                  |j                  d	d |j                  j                  d      f<   |j                  t         j                  d      }|j                  d
      }t        j                  ||       |j	                         }|j                  t         j                  gdgd      }|J t        j                  ||j                  d             y )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    =?FF>//3S89=?VV>//4c9: %%'rvvq$?###
g~'<'<Q'?@  3566"bjj((//013bjj((--.#++BFFA6%,,1,5
fh/ %%'x!dC###
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|j                  |||      }n|j                  ||d|      }|r|J |}t        |      }t        j                  ||       y )Nr   efghhelor   )r-   regexr(   TrX   r(   )r   r   r1   r2   r3   )r8   
to_replacevaluesr?   r(   rT   dfr>   s           r   test_regex_replace_list_objz0TestDataFrameReplace.test_regex_replace_list_obj;   s{    T T&\V4<PQZZfJZPFZZ
F$ZPF>!>FX&
fh/r   c                   t        |      }ddg}t        j                  dg}t        t	        d            t        d      t        d      d}t        |      }|j                  ||d	      }t        |d   dd
t        j                  t        j                  gg dd      }t        j                  ||       ddg}ddg}|j                  ||d	      }t        |d   g dd      }t        j                  ||       g d}g d}|j                  ||d	      }t        |d   g dd      }t        j                  ||       g d}g d}|j                  ||      }t        |d   g dd      }t        j                  ||       y )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   r1   r2   r3   )	r8   r   dfmixto_replace_resr[   mix2dfmix2resexpecs	            r   test_regex_replace_list_mixedz2TestDataFrameReplace.test_regex_replace_list_mixeds   sp   &! &t,&&&!%(^$v,T&\J4nn^V4n@#Yc2662662,
 	c5) (2:&mmNF$m?s2RST
c5) 7/mmNF$m?s2PQR
c5)6/mm.m?s2PQR
c5)r   c                @   t        |      }ddg}t        j                  dg}|j                         }|j	                  ||dd      }|J t        |d   ddt        j                  t        j                  gd      }t        j                  ||       dd	g}d
dg}|j                         }|j	                  ||dd      }|J t        |d   g dd      }t        j                  ||       g d}g d}|j                         }|j	                  ||dd      }|J t        |d   g dd      }t        j                  ||       g d}g d}|j                         }|j	                  ||d      }|J t        |d   g dd      }t        j                  ||       y )NrA   r   rB   Tr(   rX   r   r   rH   ra   rI   rJ   rb   re   rf   rg   rX   r-   r(   )r   r   r   r0   r1   r2   r3   )r8   r   ri   rj   r[   rm   r<   rn   s           r   %test_regex_replace_list_mixed_inplacez:TestDataFrameReplace.test_regex_replace_list_mixed_inplace   s   &! &t,&&&!jjl{{>64t{T###s632OPQ
c5) (2:&jjl{{>64t{T###s2RST
c5) 7/jjl{{>64t{T###s2PQR
c5)6/jjl{{vt{T###s2PQR
c5)r   c                x   t        |      }|j                  ddidt        j                  id      }|j	                         }|j                  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                  ||       |j                  dd	idd
id      }|j	                         }|j                  dd	idd
idd      }|J t        |d   g d|d   d      }t        j                  ||       t        j                  ||       |j                  dd	idd
i      }|j	                         }|j                  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      }|j                  ddt        j                  id      }|j	                         }|j                  ddt        j                  idd      }|J t        j                  ||       t        j                  ||       |j                  ddt        j                  id      }|j	                         }|j                  ddt        j                  id      }|J t        |d   t        j                  dddg|d   d      }t        j                  ||       t        j                  ||       y )Nr   rA   Tr`   rq   r   r   r   rH   z\1ty)r   r   .tyru   rh   rr   .rY   r   r1   r   r   r0   r2   r3   )r8   r   ri   rm   res2r<   rn   s          r   test_regex_replace_dict_mixedz2TestDataFrameReplace.test_regex_replace_dict_mixed   s*   '" mmS+.bffTmJzz|||+bfft4 $ 
 ####,c3%?gclS
 	c5)
dE* mmS-03.mMzz|||- 3.$d $ 
 ####,%=GCLQ
 	c5)
dE*mm3"6sGnmMzz|||&sGnd $ 
 ####,%=GCLQ
 	c5)
dE* #,bffc3%<73<P
 mmC#rvvdm;zz|||C#rvvdD|Q###
c5)
dE*mmC#rvvdm;zz|||#c266]D|Q####,bffc3%<73<P
 	c5)
dE*r   c                   t        |      }|j                  ddt        j                  iid      }|j	                         }|j	                         }|j                  ddt        j                  iidd      }|J |j                  ddt        j                  ii      }|j                  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                  ||       y )
Nr   rA   Tr`   rq   rY   r   r   r   rw   )	r8   r   ri   rm   rx   res4r<   res3rn   s	            r   test_regex_replace_dict_nestedz3TestDataFrameReplace.test_regex_replace_dict_nested	  s2   '"mmS;"78mEzz|zz|||;'($d $ 
 ###}}C+rvv)>#?}@||3bff0E*FPT|U####,c3%?gclS
 	c5)
dE*
dE*
dE*r   c                Z   |}t        dg di|      }|rN|dk(  rIt        j                  t        d      5  |j	                  ddid	
      }d d d        t        dg di      }n&|j	                  ddid	
      }t        dg di|      }t        j
                  |       y # 1 sw Y   VxY w)Nfirst)abcbcacabdtypeobjectDowncastingmatchr   rv   Tr`   )z.bczbc.zc.br   r2   assert_produces_warningFutureWarningr1   r3   )r8   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  s     !!67uE"2h">++MO <S#Jd;< '+@!ABH ZZc
$Z7F '+@!AOH
fh/< <s   B!!B*c                    t        g ddd      }t        g ddd      }d}t        j                  t        |      5  |j	                  ddd	d
i      }d d d        t        j
                  |       y # 1 sw Y    xY w)N)QTr   r   r      )Typetmp)r      r   r   r   !Downcasting behavior in `replace`r   r   r   r   )r   r   r   )r8   r\   r?   msgr>   s        r   %test_regex_replace_dict_nested_gh4115z:TestDataFrameReplace.test_regex_replace_dict_nested_gh4115.  su      9!DEoa@A1''SA 	<ZZqq)9 :;F	<
fh/	< 	<s   A44A=c                   t        |      }t        |d   t        j                  t        j                  gdz        t        j                  t        j                  t        j                  dgd      }d}t	        j
                  t        |      5  |j                  ddgt        j                  d	
      }d d d        |j                         }|j                         }t	        j
                  t        |      5  |j                  ddgt        j                  d	d	      }d d d        J t	        j
                  t        |      5  |j                  ddgt        j                  d	      }d d d        |J t	        j                  |       t	        j                  ||       t	        j                  ||       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ixY w)Nr   r   r   r   r   r   rA   za|bTr`   rY   rr   )
r   r   arrayr   r2   r   r   r1   r0   r3   )	r8   r   r\   rn   r   rm   rx   r|   r<   s	            r   !test_regex_replace_list_to_scalarz6TestDataFrameReplace.test_regex_replace_list_to_scalar9  s    wS\XXrvvhl+ffbffbffc2
 2''SA 	G**k51266*FC	Gwwywwy''SA 	<<e$bffD$ ( L	 ###''SA 	<<"E*"&&$ ( L	 ###
c5)
dE*
dE*!	G 	G	 	
	 	s$   %F76&G%G7GGGc                   t        |      }|j                  ddd      }|j                         }|j                  dddd      }|J |j                         }|j                  ddd      }|J t        |d   g d|d	   d
      }t        j                  ||       t        j                  ||       t        j                  ||       y )NrA   r   Tr`   rq   rr   r   )r   r   r   r   r   r   )r   r1   r0   r2   r3   r8   r   r\   rm   rx   r<   r|   rn   s           r   !test_regex_replace_str_to_numericz6TestDataFrameReplace.test_regex_replace_str_to_numericX  s    
 wjjatj4wwy||KD|M###wwy||+Q|M###3C'RU,WX
c5)
dE*
dE*r   c                   t        |      }|j                  ddgdd      }|j                         }|j                  ddgddd      }|J |j                         }|j                  ddgdd      }|J t        |d   g d	ddt        j                  d
gd      }t        j                  ||       t        j                  ||       t        j                  ||       y )NrA   r   r   Tr`   rY   rr   r   )r   r   r   r   r   r   )r   r1   r0   r   r   r2   r3   r   s           r   (test_regex_replace_regex_list_to_numericz=TestDataFrameReplace.test_regex_replace_regex_list_to_numericj  s     wjj+s+Qdj;wwy||[#$6t|T###wwy||;*<At|T####,^32663:OP
 	c5)
dE*
dE*r   c                "   t        |      }t        ddi      }t        dt        j                  i      }|j	                  ||d      }|j                         }|j	                  ||dd      }|J |j                         }|j	                  ||d      }|J t        |d   ddt        j                  t        j                  g|d   d	      }	t        j                  ||	       t        j                  ||	       t        j                  ||	       y )
Nr   rA   Tr`   rq   rr   r   r   r   )r   r   r   r   r1   r0   r2   r3   )
r8   r   r\   s1s2rm   rx   r<   r|   rn   s
             r   $test_regex_replace_series_of_regexesz9TestDataFrameReplace.test_regex_replace_series_of_regexes}  s    wS+&'S"&&M"jjRtj,wwy||BD|E###wwy||"B|E####,c3%?gclS
 	c5)
dE*
dE*r   c                    t        |      }t        g d|d   |d   d      }|j                  dd      }t        j                  ||       |j                  j
                  t        j                  k(  sJ y )N)r   r   r   rC   r   r   r   r   r   )r   r1   r2   r3   r   r   r   object_)r8   r   r\   rn   rm   s        r   /test_regex_replace_numeric_to_object_conversionzDTestDataFrameReplace.test_regex_replace_numeric_to_object_conversion  s`    wWS\PSUVjjC 
c5)uu{{bjj(((r   rZ    )r   ,)r   r   c                    t        g dg dg dd      }|j                  |      }t        g ddt        j                  dgg dd      }t	        j
                  ||       y )	N)z1,000r   3)r   r   r   r   col1col2col3r`   )1000r   r   r   r   r   r1   r   r   r2   r3   )r8   rZ   r\   r>   r?   s        r   +test_joint_simple_replace_and_regex_replacez@TestDataFrameReplace.test_joint_simple_replace_and_regex_replace  sc    
 +&'
 *-*bffc*'
 	fh/r   metachar)z[]z()z\dz\wz\sc                    t        d|dgi      }|j                  d|dii      }t        dddgi      }t        j                  ||       y )Nr   elseparenr   r1   r2   r3   )r8   r   r\   r>   r?   s        r   test_replace_regex_metacharz0TestDataFrameReplace.test_replace_regex_metachar  sR    h/01S8W"567cGV#456
fh/r   zdata,to_replace,expectedxaxxbxr   r   r   xcxxdx)r   r   r   ^\s*$c                   |} |||      }	|r|dk(  rt        |      dkD  rIt        |	t              r9|j                  j	                  t
        j                  j                  d             t        j                  t        d      5  |	j                  |d	      }
d
}d d d        n|	j                  |d	      }
 |||      }t        j                  
|       y # 1 sw Y   *xY w)Nr   r   r   z=object input array that gets downcasted raises on second passr!   r   r   Tr`   zstring[pyarrow_numpy])len
isinstancer   node
add_markerpytestmarkxfailr2   r   r   r1   assert_equal)r8   datarZ   r?   frame_or_seriesr   r   requestr   objr>   s              r   test_regex_replace_string_typesz4TestDataFrameReplace.test_regex_replace_string_types  s    $ !d%0"2h">:"z#y'A''KK%% & &  ++MO 0Zt</0 0 [[4[8F"859
)0 0s   CC"c                ^   t         j                  |j                  |j                  d d df<   t         j                  |j                  |j                  dd  df<   |j	                  t         j                  d      }t        j                  ||j                  d             t        j                  |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                  ||j	                  dd	             t        d
t        j                  d      fdt        j                  d      fg      }|j	                  d
t         j                        }t        t         j                  t        j                  d      fdt        j                  d      fg      }t        j                  ||       y )Nr$   r%   r&       חBr   r   r/      -2015010120150102)r   r   r.   r/   r1   r2   r3   r4   r   pdto_datetime)r8   r9   zero_filledr\   df1expected_dfs         r   test_replacez!TestDataFrameReplace.test_replace  s   <>FF>//3S89=?VV>//4c9:$,,RVVT:
k>+@+@+FG
k11$?P<>FF>//3S89=?VV>//4c9:<@>//3S89 c3Z(
b"**Q"23 2>>*-.bnnZ6P0QR
 jjbff%ffbnnZ01C
9S3TU
 	c;/r   c                   t        d      t        d      t        d      d}t        |      }ddg}t        j                  dg}|j	                  ||      }t        dd	t        j                  t        j                  gg d
g dd      }t        j                  ||       ddg}ddg}|j	                  ||      }t        g dg dg dd      }t        j                  ||       y )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   r1   r2   r3   )r8   r   dfobjrj   r[   rm   rn   s          r   test_replace_listz&TestDataFrameReplace.test_replace_list  s    LtF|$v,G# &&&!mmNF33/,,
 	c5) !mmNF3+,)
 	c5)r   c                   t        ddgg t        j                  dgg      }t        d|i      }t	        j
                  ||      }|}|j                  g t        j                        }t	        j                  ||       d}t        j                  t        |j                  d            5  |j                  t        j                  g i       d d d        t        j                  t        |j                  d	            5  |j                  t        j                  d
dgi       d d d        y # 1 sw Y   axY w# 1 sw Y   y xY w)Nr   r   r   colzwNumPy boolean array indexing assignment cannot assign {size} input values to the 1 output values where the mask is truer   )sizer   r   dummyalt)r   r   r   r   r2   get_objr1   r   r   raises
ValueErrorformat)r8   r   serr   r?   r>   r   s          r   test_replace_with_empty_listz1TestDataFrameReplace.test_replace_with_empty_list  s    sCj"bffqc23%jjo.R(
)I 	 ]]:SZZQZ-?@ 	&KK%	&]]:SZZQZ-?@ 	4KK'5!123	4 	4	& 	&	4 	4s   )"D+>$D7+D47E c                D   t        ddddddd      }|j                  dddd      }t        ddddddd      }t        j                  ||       |j                  d|j	                               }t        j                  ||       t        ddddddd      }t        ddd      }|j                  |ddd      }t        ddddddd      }t        j                  ||       |j                  ||j	                               }t        j                  ||       y )	N        r   r          @r   )zeroone      ?      ?)r   r1   r2   r3   meanr   )r8   r\   r>   r?   ss        r   test_replace_series_dictz-TestDataFrameReplace.test_replace_series_dict%  s   c 21;MNOAC89Ca&8sQTAUVW
fh/Arwwy)
fh/ c 21;MNOC,-AC89Ca&8sQTAUVW
fh/Arwwy)
fh/r   c                6   t        g dg dg      }dddd}d}t        j                  t        |      5  |j	                  |      }d d d        t        t        j                  gdz        }j                  }t        j                  ||       y # 1 sw Y   IxY w)N)r*   barbah)r   r*   r   r   r   rC   "Downcasting behavior in `replace` r   )
r   r2   r   r   r1   r   r   int64dtypesassert_series_equal)r8   r\   mr   reprn   rm   s          r   test_replace_convertz)TestDataFrameReplace.test_replace_convert9  s    
 -/DEFa*2''SA 	 **Q-C	 zA~&jj
uc*		  	 s   BBc                   |}t         j                  |j                  dd|j                  j	                  d      f<   t         j                  |j                  dd |j                  j	                  d      f<   |j                  t         j                  d      }|j                  d      }t        j                  ||       t        j                  |j                  dt         j                        |       |j                  t         j                  d      }|j                  d      }t        j                  ||       t        j                  |j                  dt         j                        |       y )	Nr$   r)   r*   r+   r%   ir,   r   )	r   r   r5   r6   r7   r1   r4   r2   r3   )r8   r:   r=   r>   r?   s        r   test_replace_mixedz'TestDataFrameReplace.test_replace_mixedG  s     3566"bjj((//013bjj((--.#++BFFC8%,,3,7
fh/
fnnS"&&9;MN#++BFFD9%,,4,8
fh/
fnnT266:<NOr   c                P   t        t        ddgd      t        ddgd      d      }t        t        ddgd      t        d	dgd      d      }|j                  dd	      }t        j                  ||       |j                  dd	d
      }|J t        j                  ||       y )Nr   r   float64r   r   r   r   r%   r   r   Tr'   r   r   r1   r2   r3   )r8   r\   r?   r>   r<   s        r   &test_replace_mixed_int_block_upcastingz;TestDataFrameReplace.test_replace_mixed_int_block_upcastingY  s    S#Ji8QF'2
 S#Ji8S!HI6
 As#
fh/zz!S$z7###
b(+r   c                ,   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	      }|j                  dd
      }t        j                  ||       y )Nr   r   r   r   r   r   r   r   r%   r   Cr   r  r8   r\   r?   r>   s       r   &test_replace_mixed_int_block_splittingz;TestDataFrameReplace.test_replace_mixed_int_block_splittingn  s    S#Ji8QF'2QF'2
 S#Ji8S!HI6QF'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      }|j                  dd	      }t        j                  ||       t        t        d	dg      t        dd	gd
      d      }|r;t        j
                  t        d      5  |j                  ddgd	dg      }d d d        n|j                  ddgd	dg      }t        j                  ||       y # 1 sw Y    xY w)Nr   r   r   r   r   r   r   r   r*   r   r   r   r   r   )r   r   r1   r2   r3   r   r   )r8   r   r\   r?   r>   s        r   test_replace_mixed2z(TestDataFrameReplace.test_replace_mixed2  s   S#Ji8QF'2
 QJh7QF'2
 Au%
fh/UEN+QJh7
 ++MO <QFUEN;< < ZZA7F
fh/	< <s   <D		Dc                   t        t        ddgd      t        ddgd      d      }|j                  d|j                         j	                               }|j                         j                  d      }|j                         }|j                  d   |j                  d<   |j                  d   |j                  d	<   t        j                  ||       y )
NrC   r   r   r   r   r   r   r   r   )r   r   )
r   r   r1   r   to_dictr0   astyper5   r2   r3   )r8   r\   r>   r?   r   s        r   test_replace_mixed3z(TestDataFrameReplace.test_replace_mixed3  s    !Qw/faV76ST
 Arwwy0023779##I.GGIffQidffQid
fh/r   c                    t        dddt        j                  gg dd      }|d   j                  d      |d<   |j	                  dt        j                        }t        j                  |d   |d          y )	Nr   r   rC   )somestringshereher   r   Int64r   )r   r   r   r  r1   r2   r   r8   r\   rm   s      r   1test_replace_nullable_int_with_string_doesnt_castzFTestDataFrameReplace.test_replace_nullable_int_with_string_doesnt_cast  sa    aArvv.5VWXS'..)3jjRVV$
s3xC1r   r   )booleanr  Float64c                    t        g d|      }t        g d|d      }|j                  dd      }t        g d|d      }t        j                  ||       y )N)r   r   r   r   )r%   r   xr   r  X)r%   r   r  r   r   r1   r2   r3   )r8   r   nullable_serr\   r>   r?   s         r   !test_replace_with_nullable_columnz6TestDataFrameReplace.test_replace_with_nullable_column  sN     iu5_<@AC%?FG
fh/r   c                    t        dt        dd      i      }t        dg di      }|j                  ddddi      }t        j                  ||       |j                  ddd      }t        j                  ||       y )Nr   r   r$   r   r   rC   r   r   r   )r   r   r   r   r1   r2   r3   r  s       r   test_replace_simple_nested_dictz4TestDataFrameReplace.test_replace_simple_nested_dict  st    uQ{+,e%567U$456
h/ ,-
h/r   c                    t        dt        dd      i      }t        dg di      }|j                  dddd      }t        j                  ||       |j                  dddddi      }t        j                  ||       y )	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  sv    uQ{+,e%56756
h/U$=>?
h/r   c                    t        ddd gi      j                  ddi      }|j                  t        j                  d i      }t        ddd git
              }t        j                  ||       y )Nr-   *   r  r   )r   r  r1   r   NAr   r2   r3   r8   r\   r>   r?   s       r   test_replace_NA_with_Nonez.TestDataFrameReplace.test_replace_NA_with_None  s`    "d,-44gw5GHRUUDM*gDz2&A
fh/r   c                    t        t        j                  t        j                  g      }|j                  t        j                  d t        j
                  d i      }t        d d g      }t        j                  ||       y N)r   r   NaTr1   r   r   r2   r3   r)  s       r   test_replace_NAT_with_Nonez/TestDataFrameReplace.test_replace_NAT_with_None  sV    '(RVVT266489dD\*
fh/r   c                    t        g dd      }t        t        g dd      |d      }|j                  dd i      }t        t        g dd	      |d      }t        j                  ||       y )
N)r   r   r   r   categoryr   )r$   r   rC   r   r   )idr   rC   )      @g      @Nr   r   r  )r8   
cat_seriesr\   r>   r?   s        r   (test_replace_with_None_keeps_categoricalz=TestDataFrameReplace.test_replace_with_None_keeps_categorical  sn    0
C
\;!
 QI&2(C!
 	fh/r   c                   |j                   d   }|j                   d   }t        j                  |j                   d<   d|j                   d<   |j                  t        j                  di      }|j                  j                  t        j                  di      j                  }t        j                  ||       |j                  t        j                  dddi      }|j                         }d|j                   d<   d|j                   d<   |}t        j                  ||       ||j                   d<   ||j                   d<   y )Nr  r   r   r   r   rZ   r   )r5   r   r   r1   r   r2   r3   r0   )r8   r9   
orig_valueorig2r>   r?   r;   s          r   test_replace_value_is_nonez/TestDataFrameReplace.test_replace_value_is_none  s   #((.
##D)$&FFD!$%D!''BFFA;'?!##++{+CEE
fh/''BFFAq$3G'H %%'T!T
h/$.D!$)D!r   c                   |j                         j                  t        j                        }t        j                  |j
                  |j                  d d df<   t        j                  |j
                  |j                  dd  df<   |j                  t        j                  d      }t        j                  ||j                  d             t        j                  |j                  dt        j                        |       t        j                  |j
                  |j                  d d df<   t        j                  |j
                  |j                  dd  df<   t        j                  |j
                  |j                  d d df<   d}t        j                  t        |      5  |j                  d	      }t        j                  ||j                  d	             d d d        y # 1 sw Y   y xY w)
Nr$   r%   r&   r   r   z,DataFrame.fillna with 'method' is deprecatedr   bfill)method)r0   r  r   float32r   r.   r/   r1   r2   r3   r4   r   r   )r8   r9   r;   r   r   r>   s         r   test_replace_for_new_dtypesz0TestDataFrameReplace.test_replace_for_new_dtypes  sp    %%'..rzz:.0ffGMM"1%s*+/1vvGMM"#&+,oobffd3
k7>>$+?@
k11$?I.0ffGMM"1%s*+/1vvGMM"#&+,.0ffGMM"1%s*+<''SA 	J^^7^3F!!&'...*HI	J 	J 	Js    9G""G+z"frame, to_replace, value, expectedintsr   r   rC   r   r   )r   r   rC   r   boolsTFT)TTTcomplex)              ?               @              @rE  )y                rF  rG  
datetime64i  r$      r   i     r)   r*   )dtstrr   rK  h  
   i  20130101
US/Easternperiodstzr   r   20130102rS  2013010420130103nsr   r   r2  c                    d }t        |t              r|j                  dk(  rt        }d}t	        j
                  ||      5  |j                  ||      }d d d        t	        j                  |       y # 1 sw Y    xY w)NrM  r   r   )r   r   yearr   r2   r   r1   r3   )r8   framerZ   r-   r?   warnr   r>   s           r   test_replace_dtypesz(TestDataFrameReplace.test_replace_dtypes  sn    X j(+
40G D2''C8 	6]]:u5F	6
fh/	6 	6s   A33A<c           
     >   t         j                  ddd}dddd}t        t         j                  dt         j                  gg dg dd      }|j	                  ||      }|j                         D ci c]  \  }}||j	                  ||   ||           }}}t        j                  |t        |             |j	                  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      }|j	                  t         j                  |      }|j                         D ci c])  \  }}||j	                  t         j                  ||         + }}}t        j                  |t        |             t         j                  ddg}g d
}|j	                  ||      }|j                         }t        ||      D ]  \  }	}
|j	                  |	|
d      }|J  t        j                  ||       d}t        j                  t        |      5  |j	                  ||dd         d d d        y c c}}w c c}}w # 1 sw Y   y xY w)Nr   r   r  r$  missingr   r   r$   r   asdffd)r$   r   r   r$   )r$  r_  Tr'   z:Replacement lists must match in length\. Expecting 3 got 2r   r   )r   r   r   infr1   itemsr2   r3   r0   zipr   r   r   )r8   to_repr[   r\   filledkvr?   r>   r   r-   r<   r   s                r   #test_replace_input_formats_listlikez8TestDataFrameReplace.test_replace_input_formats_listlike  sC   vvAB/r	2661bff%I<NO
 FF+CE88:N41aAqyyF1I66NN
fi&9:Iy1661bff%I<NO
 	fh/ r	2661bff%I<NO
 BFFF+@B
K1Aqyy33KK
fi&9: &&!R$FF+779ff- 	(JC#++C+EL'''	( 	fh/K]]:S1 	+JJvvabz*	+ 	+; O L	+ 	+s   2#J .J(JJc           	        t        t        j                  dt        j                  gg dg dd      }t        j                  ddd}|j	                  |d      }|j                         D ci c]  \  }}||j	                  ||   d       }}}t        j                  |t        |             d}t        j                  t        |      5  |j	                  |t        j                  ddg       d d d        t        j                  ddg}|j	                  |d      }|j                         }|D ]  }	|j	                  |	dd	
      }
|
J  t        j                  ||       y c c}}w # 1 sw Y   zxY w)Nr   r`  ra  r  r   z.value argument must be scalar, dict, or Seriesr   r$  Tr'   )r   r   r   re  r1   rf  r2   r3   r   r   	TypeErrorr0   )r8   r\   rh  ri  rj  rk  r?   r   r>   r   r<   s              r   !test_replace_input_formats_scalarz6TestDataFrameReplace.test_replace_input_formats_scalar  sF    661bff%I<NO

 vvAB/FA&;=88:F41aAqyyA..FF
fi&9:>]]9C0 	0JJv2/	0 &&!RFB'779 	(C#++CT+BL'''	( 	fh/ G	0 	0s   , E"$E((E1c                     y r,  r   )r8   s    r   test_replace_limitz'TestDataFrameReplace.test_replace_limit  s    r   c                
   t        dddddd      }ddd	d
dd}t        d
dd	ddd      }d}t        j                  t        |      5  |j	                  |      }d d d        t        j
                  |       y # 1 sw Y    xY wNStrongly AgreeAgreeNeutralDisagreeStrongly Disagree)r   r   r   rC   r   r   r   rC   r$   r   )ru  rw  rv  rt  rx  r   r   r   r2   r   r   r1   r   r8   answerweightsr?   r   r>   s         r   test_replace_dict_no_regexz/TestDataFrameReplace.test_replace_dict_no_regex  s     #&
 !"
 aA!a892''SA 	-^^G,F	-
vx0	- 	-s   A99Bc                   t        dddddd      }t        ddd	d
dd      }t        d
dd	ddd      }d}t        j                  t        |      5  |j	                  |      }d d d        t        j
                  |       y # 1 sw Y    xY wrs  ry  rz  s         r   test_replace_series_no_regexz1TestDataFrameReplace.test_replace_series_no_regex  s     #&
 "#%&
 aA!a892''SA 	-^^G,F	-
vx0	- 	-s   BBc                   t        dt        j                  dgi      }|j                  t        j                  dddi      }|j                  dt        j                  fddg      }|j                  dt        j                  gddg      }t        dddgi      }t	        j
                  ||       t	        j
                  ||       t	        j
                  ||       y )Nr%   r   r   r   r7  rZ   r-   )r   r   r   r1   r2   r3   )r8   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    bffa[)*zzbffaD%9z:zza[q	zBzza[q	zBcAt9-.
dD)
dD)
dH-r   c                    t        g dg dg dg dd      }|j                  ddi      }t        j                  ||       y )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  sA    #...	
 jj%$
b#&r   c                    t        ddgt        d      d      }|j                  dd      }t        ddg|j                  d      }t	        j
                  ||       y )NTFabr   r   )r   r   r1   r   r2   r3   r)  s       r   test_replace_bool_with_stringz2TestDataFrameReplace.test_replace_bool_with_string!  sP    dE]d<=D#&C<bdd;<
fh/r   c                    t        t        j                  j                  d      j                  d      dkD        }|j	                  dd      }t        j                  ||       y )Nr   r   r   r   rb  fdsa)r   r   randomdefault_rngr1   r2   r3   r8   r\   r>   s      r   (test_replace_pure_bool_with_string_no_opz=TestDataFrameReplace.test_replace_pure_bool_with_string_no_op'  sK    ryy,,Q/66v>DEFF+
b&)r   c                   t        t        j                  j                  d      j                  d      dkD        }|j	                  dd      }t        t        j
                  dt                    }t        j                  ||       y )Nr   r  r   FTr   )	r   r   r  r  r1   onesboolr2   r3   r)  s       r   test_replace_bool_with_boolz0TestDataFrameReplace.test_replace_bool_with_bool,  s`    ryy,,Q/66v>DEE4(RWWV489
fh/r   c                    t        ddgddgd      }|j                  ddd      }t        ddgddgd      }t        j                  ||       y )NTFr   r   asdbyes)rb  Tr   r)  s       r   %test_replace_with_dict_with_bool_keysz:TestDataFrameReplace.test_replace_with_dict_with_bool_keys2  sS    D%=eT];<V59:%UENCD
fh/r   c                    t        ddgddgd      }|j                  ddi      }t        j                  ||       |d   j                  ddi      }t        j                  ||d          y )	Nr   r   rC   r   )Y0Y1replace_stringtestr  )r   r1   r2   r3   r   r  s      r   !test_replace_dict_strings_vs_intsz6TestDataFrameReplace.test_replace_dict_strings_vs_ints8  sk    q!fQF34-v67
fb)D!!#3V"<=
vr$x0r   c                    t        dddgi      }|j                  t        j                  t        j                   gt        j                        }|}t        j                  ||       y )Nr   T)r   r1   r   re  r   r2   r3   )r8   r\   rrP   s       r   test_replace_truthyz(TestDataFrameReplace.test_replace_truthyB  sM    dD\*+JJ("&&1
a#r   c                T   t        dt        t        dd            i      }|j                  dt	        t        t        dd      t        dd                  i      }|j                  t	        t        t        dd      t        dd                        }t        j                  ||       y )Nr   r   r$   r      )r   r   r   r1   dictrg  r2   r3   r)  s       r   -test_nested_dict_overlapping_keys_replace_intzBTestDataFrameReplace.test_nested_dict_overlapping_keys_replace_intH  s     T%1+./0S$s5A;a'D"EFG::d3uQ{E!QK#@AB
fh/r   c           	        t        j                  dd      }|j                  t              }t        j                  dd      j                  t              }t	        d|i      }|j                  t        t        ||                  }|j                  dt        t        ||            i      }t        j                  ||       y )Nr   r$   r   r  r   )
r   aranger  rL  r   r1   r  rg  r2   r3   )r8   r   astrbstrr\   r>   r?   s          r   -test_nested_dict_overlapping_keys_replace_strzBTestDataFrameReplace.test_nested_dict_overlapping_keys_replace_strQ  s    IIaOxx}yyA%%c*T{#DT412::sDT4$9:;
fh/r   c                ,   t        dg di      }|j                  ddddi      }t        dg di      }t        j                  ||       t        dg di      }|j                  ddddi      }t        dg di      }t        j                  ||       y )	Nr   rC  YN)TF)r  r  r  )r   r   r   r  r   )r8   r   r\   rm   expects        r   test_replace_swapping_bugz.TestDataFrameReplace.test_replace_swapping_bug[  s     012jj#c#678C12
c6*Y'(jj#33/01C12
c6*r   c                N   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   j                               k(  sJ t        d|j                  j
                  D cg c]
  }|d   |    c}i      }|j                  j                  d   dk(  sJ d}t        j                  t        |      5  |j                  |      }d d d        t        j                  |       y c c}w # 1 sw Y   %xY w)Nfnamei     M)rZ  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  r6   r   z	Period[M]r   r   )r   Periodr   setr  r[   keysr   r5   r2   r   r   r1   r3   r8   r   r\   rj  r?   r   r>   s          r   test_replace_periodz(TestDataFrameReplace.test_replace_periodi  sg   
 /1yyd!RU/V/1yyd!RU/V/1yyd!RU/V3599QS4 02yyd!RU/V/1yyd!RU/V/1yyd!RU/V

  I
 288??#s1W:??+<'====grxx'O!'
1'OPQ##A&+5552''SA 	#ZZ]F	#
fh/ (P	# 	#s   F
%FF$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   j                               k(  sJ t        d|j                  j                  D cg c]
  }|d   |    c}i      }d}t        j                  t        |      5  |j                  |      }d d d        t        j                  |       y c c}w # 1 sw Y   %xY w)Nr  z2011-08z2011-01z2012-05z2011-04z2012-08z2011-05z2013-09r  r  r  r   r   )r	   r   r  r  r[   r  r2   r   r   r1   r3   r  s          r   test_replace_datetimez*TestDataFrameReplace.test_replace_datetime  s   
 /8/C/8/C/8/C3<Y3G/8/C/8/C/8/C

  I
 288??#s1W:??+<'====grxx'O!'
1'OPQ2''SA 	#ZZ]F	#
fh/	 (P	# 	#s   8D
,D""D+c                   t        t        ddd      dt        j                  dgd      }|j	                  t        j                  d      }t        t        ddd      t        g d	d
      d      }t        j                  ||       |j                  d      }t        j                  ||       |j	                  dt        j                        }t        t        ddd      t        j                  t        j                  dgd      }t        j                  ||       |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                  j                  d      |d<   t        j                  ||       |j                         }t        j                  |j                  d<   |j	                  dt        j                  it        dd            }t        j                  ||       |j                         }t        j                  |j                  d<   |j	                  dt        j                  it        dd            }t        t        dd      t        dd      j!                  d      t        dd      gdt        j                  dgd      }|d   j                  j                  d      |d<   t        j                  ||       |j                         }t        j                  |j                  d<   |j	                  dt        j                  it        d            }t        t        dd      t        d      t        dd      gdt        j                  dgd      }t        j                  ||       y )NrO  rC   rP  rQ  r   r   r   r   r   r   r   r   r   rT  rU  rV  rW  r%   rX  r6  z
US/Pacific)r   r
   r   r   r1   r   r2   r3   r4   r	   rK  as_unitr0   r5   r   r-  
tz_convertr)  s       r   test_replace_datetimetzz,TestDataFrameReplace.test_replace_datetimetz  s    
A,G^
 BFFA&
A,GIY7
 	fh/1
fh/Arvv&
A,Gffbffa(
 	fh/j\2j\2
  j\:j\:j\:
 ^	
 !((006
fh/FFDbffy/UV
fh/ FFDbffy/UV j\:j\:EElSj\:
 ^	
 !((006
fh/FFDbffy/DE j\:j)j\:
 ^	
 	fh/r   c           	     z   t        |      }t        j                  ||j                  i              t        j                  ||j                  t	        g t
                           t        j                  ||j                  di i             t        j                  ||j                  t	        di i                   y )Nr   r   )r   r2   r3   r1   r   r   )r8   r   r\   s      r    test_replace_with_empty_dictlikez5TestDataFrameReplace.test_replace_with_empty_dictlike  s    w
b"**R.1
b"**VBf-E"FG
b"**c2Y"78
b"**VS"I->"?@r   zto_replace, method, expectedr<  )r   r   r   r  r  )r2        @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        j                  t
        |      5  |j                  |d |      }d d d        t        |      }t        j                  |       y # 1 sw Y   +xY w)	Nr  r$   r   r   r  z7The 'method' keyword in DataFrame.replace is deprecatedr   )rZ   r-   r=  )r   r   r   r2   r   r   r1   r3   )r8   rZ   r=  r?   r\   r   r>   s          r   test_replace_methodz(TestDataFrameReplace.test_replace_method  s|    D Ya^/RSG''SA 	RZZ:T&ZQF	RX&
fh/	R 	Rs   BB
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                  t        |      5  |j                  |d      }	d d d        t        j                  	|       d}
t        j                  t        |
      5  t        j                  ||       d d d        t        j                  t        |      5  |j                  |dd      }d d d        J t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   <xY w)Nr   r   r   r   r0  )r6   r   r   rC   )
categoriesr   z#with CategoricalDtype is deprecatedr   zHAttributes of DataFrame.iloc\[:, 0\] \(column name=\"a\"\) are differentTr'   )r   r   r   r   Categoricalr2   r   r   r1   r3   r   r   AssertionError)r8   replace_dict
final_datar\   r   ex_catr   r?   msg2r>   r   r<   s               r   "test_categorical_replace_with_dictz7TestDataFrameReplace.test_categorical_replace_with_dict:  su    AA'#s:NXXj)
NN:ad+A?',1!Q1vNN:ad+?11-.4''TB 	1ZZa0F	1
fh/ 	 ]]>5 	0!!"h/	0 ''TB 	E::lAt:DL	E###
b(+	1 	1	0 	0	E 	Es$   %E%3E1-E=%E.1E:=Fzdf, to_replace, expr   r$   r  )r   r   r  )r$   r  r   )456r  r  7)r  r  r  c                ~    t        |      }t        |      }|j                  |      }t        j                  ||       y r,  r   )r8   r\   rZ   expr?   r>   s         r   test_replace_commutativez-TestDataFrameReplace.test_replace_commutativeZ  s4    ( r]S>J'
fh/r   replacer20170827c                    t        dg      }d}t        j                  t        |      5  |j	                  ||d      }d d d        t        |g      }t        j
                  |       y # 1 sw Y   ,xY w)Nr   r   r   r   r   )r8   r  r\   r   r>   r?   s         r   test_replace_replacer_dtypez0TestDataFrameReplace.test_replace_replacer_dtypet  sm     u2''SA 	@ZZhX >?F	@hZ(
fh/	@ 	@s   A**A3c                    t        dg did      }|j                  dd      }t        dg did      }t        j                  ||       y )Ngrp)r   r   rC   r   r$   r  r   r   rN  )rN  r   rC   r   r$   r   r)  s       r   !test_replace_after_convert_dtypesz6TestDataFrameReplace.test_replace_after_convert_dtypes  sE    /w?Ar"e%56gF
fh/r   c                   t        g dg dd      }d}d}t        j                  t        |      5  t	        j
                  t        |      5  |j                  d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N)r   zb r   )zd ze zf )r   twozZExpecting 'to_replace' to be either a scalar, array-like, dict or None, got invalid type.*zSDataFrame.replace without 'value' and with non-dict-like 'to_replace' is deprecatedr   c                "    | j                         S r,  )strip)r  s    r   <lambda>zFTestDataFrameReplace.test_replace_invalid_to_replace.<locals>.<lambda>  s    QWWY r   )r   r   r   rn  r2   r   r   r1   )r8   r\   r   r  s       r   test_replace_invalid_to_replacez4TestDataFrameReplace.test_replace_invalid_to_replace  s     /8JKL0 	
) 	 ]]9C0 	0++MF 0

./0	0 	00 0	0 	0s#   A>A2!A>2A;	7A>>B)floatr   r   r  r  r-   c                    t        t        j                  d      |      }|j                  d t        j                   t        j                  g|      }t        j                  ||       y )Nr   r   r  )r   r   eyer1   re  r2   r3   )r8   r   r-   r\   r>   s        r   "test_replace_no_replacement_dtypesz7TestDataFrameReplace.test_replace_no_replacement_dtypes  sK     rvvay.rvvgrvv'>e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   j                  d	|      |d<   t	        j
                  ||       y )
NrA  r  )r   r  r  )r%   A1r   AABr  r  r   r   )r   r   r6   r1   r2   r3   )r8   r  r>   r?   s       r   #test_replace_with_duplicate_columnsz8TestDataFrameReplace.test_replace_with_duplicate_columns  ss     ))LMe9KA3FG
  ;Sk))![9s
fh/r   z2020-01c                    t        d|gdz  i      }t        j                  ||      }|j                         }|j	                  dd      }t        j
                  ||       y )NPerrC   r   r   )r   r2   r   r0   r1   r   )r8   r   r-   r   r?   r>   s         r   test_replace_ea_ignore_floatz1TestDataFrameReplace.test_replace_ea_ignore_float  sR     !,-jjo.88:S#&
&)r   c                   g dg dg dg dg dd}t        |      j                  ddd	      }|d
   j                  j                  g dd      |d
<   |d   j                  j                  g dd      |d<   g dg dg dg dg dd}t        |      j                  ddd	      }|d
   j                  j                  g dd      |d
<   |d   j                  j                  g dd      |d<   d}t	        j
                  t        |      5  |j                  dd      }|j                  dd      }|j                  dd      }ddd       t	        j                  |       y# 1 sw Y    xY w)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   r0  )r   r  r   T)orderedr  )r   r   r   z)r  catXr	  r
  )obj9r  r  r  OThe behavior of Series\.replace \(and DataFrame.replace\) with CategoricalDtyper   r   r  r  r  r  r  N)	r   r  catreorder_categoriesr2   r   r   r1   r3   r8   
input_dictinput_dfexpected_dictr?   r   r>   s          r    test_replace_value_category_typez5TestDataFrameReplace.test_replace_value_category_type  s    !((44

 *-444
 $F+//BB $ C 
 $F+//BB,d C 
 !((44
 -0774
 $F+//BB $ C 
 $F+//BB,d C 
$ 	 ''SA 	6''S1H''7H%%ff5F	6
 	fh/	6 	6s   7E((E1c                ^   dgdgdgd}t        |      j                  dddd      }dgdgd	gd}t        |      j                  dddd      }d
}t        j                  t        |      5  |j                  ddd	d      }ddd       t        j                  |       y# 1 sw Y    xY w)zf
        Test to ensure category dtypes are maintained
        after replace with dict values
        r   r  r  r   r  r0  r  r  r  r  r   )r   r  r  N)r   r  r2   r   r   r1   r3   r  s          r   test_replace_dict_category_typez4TestDataFrameReplace.test_replace_dict_category_type  s      #efXxH
*-44ZH

 #&6(K-077ZH
$ 	 ''SA 	R%%C&PQF	R 	fh/	R 	Rs   .B##B,c                    t        g d      }t        j                  d      }|j                  |did      }t        g d      }t	        j
                  ||       y )Nr   z^a$r  Tr`   )r  r   r   )r   recompiler1   r2   r3   )r8   r\   rX   r>   r?   s        r    test_replace_with_compiled_regexz5TestDataFrameReplace.test_replace_with_compiled_regex  sJ    '

5!UCL5_-
fh/r   c                z   t        dt        j                  dd      t        j                  dd      gi      }|rt        nd }t	        j
                  |d      5  |j                  dt        j                  dd      dii      }d d d        t        dddgi      }t	        j                  |       y # 1 sw Y   /xY w)Nr   r   r   r   r   r  )r   r   Intervalr   r2   r   r1   r3   )r8   r   r\   warningr>   r?   s         r   test_replace_intervalsz+TestDataFrameReplace.test_replace_intervals!  s    bkk!Q/Q1BCDE#5-4''}E 	AZZr{{1a'8#&> ?@F	AcC:./
fh/	A 	As   *B11B:c                    dddddi}t        dt        j                  d      i      }|j                  |      }t        dt        j                  d      i      }t	        j
                  ||       y )Npositiver   r   )u   正面u   中立u   负面rC   )r   r   r  r1   r2   r3   )r8   columns_values_mapr   r>   r?   s        r   test_replace_unicodez)TestDataFrameReplace.test_replace_unicode*  sa    (Q!q*QRRWWQZ01/0j"''!*56
fh/r   c                     |dg      j                  d      }|j                         }|j                  d t        j                  i      }t        j                  ||       y )NrG   z|S)r  r0   r1   r   r   r2   r   )r8   r   r   r?   s       r   test_replace_bytesz'TestDataFrameReplace.test_replace_bytes2  sH    se$++D188:kk4.)
X&r   z!data, to_replace, value, expectedr   boxc                     ||      } ||      }|j                   ||      |      }t        j                  ||       y r,  )r1   r2   r   )	r8   r   rZ   r-   r?   r.  r   r   r>   s	            r   !test_replace_list_with_mixed_typez6TestDataFrameReplace.test_replace_list_with_mixed_type9  s:     d#"8,S_e4
)r   valc                   t        dd|gi      }|j                  |d       }t        ddd git              }t        j                  ||       t        dd|gi      }|j                  |d i      }t        j                  ||       y )Nr   r   r   )r   r1   r   r2   r3   )r8   r1  r\   r>   r?   s        r   %test_replace_value_none_dtype_numericz:TestDataFrameReplace.test_replace_value_none_dtype_numericL  s     aX'C&cAt9-V<
fh/aX'S$K(
fh/r   c                    t        ddt        j                  gi      }t        ddt        j                  giddg      }|j                  dd      }t	        j
                  ||       y )Nr   nilzanything elser   r   r   )r   r   r(  r1   r2   r3   )r8   r   r?   r>   s       r   test_replace_with_nil_naz-TestDataFrameReplace.test_replace_with_nil_naX  sW    ubeen-.cORUU#;<QFKUO4
h/r   N)g__name__
__module____qualname__r   r   r   r   r@   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.  r4  r:  r?  r   int32int16r   r   r
   r	   DatetimeIndexr  r]  rl  ro  rq  r}  r  r  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   r0  r3  r6  r   r   r   r   r       s   [["$-J  AA. [[$
 h' sBFFBFF3 A-0 
+*%/<2 %'"/001!	
$J [[Yu6[[3dE]C0 D 7K$N0"'*R&*PC+J+*0  [["$-J  00 [["$-J  ++8 [["$-J  ++ [["$-J  ++ +$) [[BFF,BBFF.CD00& [[Z)JK0 L0 [["U^3S1E5>BXruu-RUUBEE/BC	
**<06*>4&0( [["$-J  	+	+ [["$-J  PP,*0&0<
02 [[W&EF0 G0	00000&*(J& [[,	*+Q9fi=P3QR69-RXX>69-RXX>	 69-RXX>69-RXX>	 7$7897$678	 9l349l34	 $e (q" 5 (q" 5 (q" 5'
 q"%q"%<q"0E/F/J)KLM$ (4R"8!95'JK(4R"8!95'JK	 4(4Q"7!89:r1%r1%4(4Q"7!89:	 '
A,O^ *6*6-R-- )* F )* F )* F "'$-^	0 As8aX./As8aX./	 As8aX./As8aX./	 As8aX./As8aX./	 As8aX./As8aX./	Cg	
jV0WjV0&+P [["$-J  000 [["$-J  11. [["$-J  112	.
'0*
001$00 [["$-J  	+	+ [["$-J  "0"0H [["$-J  00@R0hA [[&y2661~OTUoOL
 '!RVVQoVWAq"&&!n?K Aq"&&!n?K q"&&!n?K c
q"&&!n?K/	
@0A@0 [["
aVaV,	-aa0@Aq6Aq6BR/ST,	,8 [[ #I6!""I6 #O<#."O<	
	0	0 [["$-J   [[j!BGGAJBHHQKBJJqMBJJqM	
	0	000  [[W&WX[[Wrvvruuo6* 7 Y* [[]RVVQK80 90 [[Wyryy';[R[[A=N&OP* Q*60p0>000' [[+S3%!qc"S1#sQC USEA3&UQC!se$		
 [[UT5"(($;<* =* [[UQ$45	0 6	00r   r   c            
      `   e Zd Zej                  j                  d ed       ed      d ed       e ed            dg      ej                  j                  ddej                  fdg      ej                  j                  d	d
dg      ej                  j                  dd
dg      ej                  j                  dd
dg      d                                    Z
ej                  j                   e       d      ej                  j                  ddd
g      d               Zd Zd Zd Zy)TestDataFrameReplaceRegexr   r   rV   r   r   zto_replace,valuerA   )rH   z\1\1\1compile_regexTFregex_kwargr(   c                X   t        |      }|j                         }|rt        j                  |      }|r|}	d }nd}	|j	                  ||||	      }
|r|
J |}
|t
        j                  u rt
        j                  }nd}||j                  |d   dk(  df<   t        j                  |
|       y )NTrq   z...r   rv   )
r   r0   r!  r"  r1   r   r   r.   r2   r3   )r8   r   rZ   r-   rB  rC  r(   r\   r?   rX   r>   expected_replace_vals               r   test_regex_replace_scalarz3TestDataFrameReplaceRegex.test_regex_replace_scalara  s      t_779J/JEJEJweL>!>FBFF?#%66 #( 2FXc]c)3./
fh/r   r    r!   rX   c                   t        dgdgd      }t        dgdgd      }d}t        j                  t        |      5  |j	                  dd|      }d d d        t        j
                  |       t        dgdgd      }t        dgdgd      }t        j                  t        |      5  |j	                  dd|      }d d d        t        j
                  |       y # 1 sw Y   xY w# 1 sw Y   ,xY w)Nr  r   r   r   r   )rZ   r-   rX   1r   )	r8   rX   r   expected_df1r   
result_df1df2expected_df2
result_df2s	            r   test_replace_regex_dtype_framez8TestDataFrameReplaceRegex.test_replace_regex_dtype_frame  s     se3%01 s!!561''SA 	K1EJJ	K
j,7se3%01 s#!78''SA 	K1EJJ	K
j,7	K 	K	K 	Ks   C ,C, C),C5c                    t        g dg dd      }|j                  dt        j                  d      }t        dt        j                  dgt        j                  ddgd      }t	        j
                  ||       y )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  s[    YY78bff-.Arvvq>AGH
fh/r   c                    t        g dg ddd      }|j                         }|j                  ddgdd g	      }t        j                  ||       y )
N)r   r  Nthree)r   Nr  rR  r   r0  r   rv   def_r  )r   r0   r1   r2   r3   r  s       r   'test_replace_categorical_no_replacementzATestDataFrameReplaceRegex.test_replace_categorical_no_replacement  sS    22 
 779U|C;G
fh/r   c                v   t        dgdd      }|r$t        |j                  j                        dk(  s&J t        |j                  j                        dk(  sJ |j	                  dddd	       |r%t        |j                  j                        dk(  sJ y t        |j                  j                        dk(  sJ y )
Nr   r   r   r   r   r   r   T)rZ   r-   r(   rX   )r   r   _mgrblocksr1   )r8   r   r\   s      r   test_replace_object_splittingz7TestDataFrameReplaceRegex.test_replace_object_splitting  s    cU-.rww~~&!+++rww~~&!+++


hb$d
Krww~~&!+++rww~~&!+++r   N)r7  r8  r9  r   r   r:  r   r   r   r   rF  r   r   rN  rP  rU  rY  r   r   r   rA  rA  `  s4   [[v,T&\2v,T%(^4	
 [[k26624NO [[_tUm<[[]T5M:[[Yu60 7 ; =0: [["$-J   [[Wudm48 5800,r   rA  )returnzdict[str, list[int | str]])rZ  zdict[str, list[float | str]])
__future__r   r   r!  numpyr   r   pandas._configr   pandasr   r   r   r   r	   r
   pandas._testing_testingr2   fixturer   r   r   rA  r   r   r   <module>rb     st    "  	   5    4 4 R R}0 }0@2^, ^,r   