
    Oh#                        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y)    )annotations)datetimeN)	DataFrameIndexSeries	Timestamp
date_rangec                 B    t        t        d            t        d      dS )N   ab..ab)listrange     o/var/www/html/diagnosisapp-backend/venv/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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d Zd  Zd! Z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-d.d/gd0d1d2d3d4gfg d5d6ej0                  id1ej0                  ej0                  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
                  j                  dCg dD      dE        Z%dF Z&dG Z'dH Z(dI Z)dJ Z*dK Z+dL Z,ej
                  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- ejh                   e3djdkp       e3dqdkp       e3drdkp      g      jk                  ds      dQej                  dmgdn      f e-dPdtgdmdugg      dtd] e-d]dvgdmdugg      f e-dPdtgdmdugg      dPd] e-d]dvgdmdugg      f e-dPdtgdmdugg      dtdv e-d]dvgdmdugg      f e-dPdtgdmdugg      dPdv e-d]dvgdmdugg      fg      dw        Z6dx Z7dy Z8dz Z9d{ Z:d| Z;d} Z<d~ Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHd ZId ZJej
                  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        ZKej
                  j                  ddPdPd2ddgdmdmggfdPdmd2ddPgdmdggfg      d        ZLej
                  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        ZMej
                  j                  d e3d       ej                  dP       ej^                  dP       ej                  dP       ej                  dP      g      d        ZQd ZRd ZSej
                  j                  dCg d      ej
                  j                  dej                  ej0                  g      d               ZTej
                  j                  dej                  d]g      d        ZUej
                  j                  d ej                  d       ej                  dQd]      g      d        ZXd ZYd ZZd Z[d Z\d Z]d Z^ej
                  j                  ddPgdtgdQgdQgfdPgdPgdQgdQgfdtgdtgdQgdgfdtgdPgdQgdgfg      ej
                  j                  de_e`ej                  g      d               Zbej
                  j                  ddmej                  dug      d        Zcd Zdy)TestDataFrameReplacec                   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   j                  t              |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astypeobject)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%**,"5/008???+
fh/ %%'x!dC###
g~'<'<Q'?@r   zto_replace,values,expected\s*\.\s*ze|f|gcrapr   r      hrB   r@   lor   
\s*(\.)\s*z(e|f|g)\1\1\1_crapr   r   ..rJ   )e_crapf_crapg_craprB   )rB   rK   rD   rE   er@   fgrB   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rV   r$   )r   r   r-   r.   r/   )r6   
to_replacevaluesr=   r$   rR   dfr<   s           r   test_regex_replace_list_objz0TestDataFrameReplace.test_regex_replace_list_obj8   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 )Nr?   r   r@   r   r   halor   TrV   r   rC   rF   (a|b)rG   rH   a_crapb_craprJ   rJ   r   rF   r   z(b)rG   r@   rH   r@   rb   rJ   rJ   rV   r)   )r   r   r   r   r   r-   r.   r/   )	r6   r   dfmixto_replace_resrY   mix2dfmix2resexpecs	            r   test_regex_replace_list_mixedz2TestDataFrameReplace.test_regex_replace_list_mixedp   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 )Nr?   r   r@   Tr$   rV   r   r   rF   r_   rG   rH   r`   rc   rd   re   rV   r)   r$   )r   r   r   r,   r-   r.   r/   )r6   r   rg   rh   rY   rk   r:   rl   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   r?   Tr^   ro   r   r   r   rF   z\1ty)r   r   .tyrs   rf   rp   .rW   r   r-   r   r   r,   r.   r/   )r6   r   rg   rk   res2r:   rl   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   r?   Tr^   ro   rW   r   r   r   ru   )	r6   r   rg   rk   rv   res4r:   res3rl   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                    |}t        dg di|      }|j                  ddid      }t        dg di|      }t        j                  ||       y )	Nfirst)abcbcacabdtyper   rt   Tr^   )z.bczbc.zc.br   r-   r.   r/   )r6   any_string_dtyper   rZ   r<   r=   s         r   2test_regex_replace_dict_nested_non_first_characterzGTestDataFrameReplace.test_regex_replace_dict_nested_non_first_character  sQ     !67uES#Jd3g'<=UK
fh/r   c                   t        t        g dt              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   r      )Typetmp)r      r   r   r   !Downcasting behavior in `replace`matchr   r   r   )r   r   )r   r   r5   r.   assert_produces_warningFutureWarningr-   r/   )r6   rZ   r=   msgr<   s        r   %test_regex_replace_dict_nested_gh4115z:TestDataFrameReplace.test_regex_replace_dict_nested_gh4115#  s    5VDQO
 oa@A1''SA 	<ZZqq)9 :;F	< 	fh/	< 	<s   BBc                   t        |      }t        |d   t        j                  gdz  t        j                  t        j                  t        j                  dgd      }|r|d   j                  d      |d<   d}|rd nt        }t        j                  ||      5  |j                  d	d
gt        j                  d      }d d d        |j                         }|j                         }	t        j                  ||      5  |j                  d	d
gt        j                  dd      }
d d d        
J t        j                  ||      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   hxY w)Nr   r   r   r   r   strr   r   r?   za|bTr^   rW   rp   )
r   r   r   r4   r   r.   r   r-   r,   r/   )r6   r   using_infer_stringrZ   rl   r   warnrk   rv   rz   r:   s              r   !test_regex_replace_list_to_scalarz6TestDataFrameReplace.test_regex_replace_list_to_scalar.  s   wS\ffX\ffbffbffc2
 s**51E#J1)t}''C8 	G**k51266*FC	Gwwywwy''C8 	<<e$bffD$ ( L	 ###''C8 	<<"E*"&&$ ( L	 ###
c5)
dE*
dE*!	G 	G	 	
	 	s$   %F;>&G%G;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 )Nr?   r   Tr^   ro   rp   r   )r   r   r   r   r   r   )r   r-   r,   r.   r/   r6   r   rZ   rk   rv   r:   rz   rl   s           r   !test_regex_replace_str_to_numericz6TestDataFrameReplace.test_regex_replace_str_to_numericM  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 )Nr?   r   r   Tr^   rW   rp   r   )r   r   r   r   r   r   )r   r-   r,   r   r   r.   r/   r   s           r   (test_regex_replace_regex_list_to_numericz=TestDataFrameReplace.test_regex_replace_regex_list_to_numeric\  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   r?   Tr^   ro   rp   r   r   r   )r   r   r   r   r-   r,   r.   r/   )
r6   r   rZ   s1s2rk   rv   r:   rz   rl   s
             r   $test_regex_replace_series_of_regexesz9TestDataFrameReplace.test_regex_replace_series_of_regexesl  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   rA   r   r   r   r   r   )r   r-   r.   r/   r   r   r   object_)r6   r   rZ   rl   rk   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   rX    )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   r-   r   r   r.   r/   )r6   rX   rZ   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parenr   )r6   r   rZ   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                    |} |||      }|j                  |d      } |||      }t        j                  ||       y )Nr   Tr^   r-   r.   assert_equal)	r6   datarX   r=   frame_or_seriesr   r   objr<   s	            r   test_regex_replace_string_typesz4TestDataFrameReplace.test_regex_replace_string_types  sA     !d%0Zt4"859
)r   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+   r-   r.   r/   r0   r   pdto_datetime)r6   r7   zero_filledrZ   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   rT   rU   r   rt   rN   r@   r   r   rO   rC   rP   rJ   rI   )rN   r@   rQ   rB   )rB   rN   rD   rE   )r   r   r   r   r-   r.   r/   )r6   r   dfobjrh   rY   rk   rl   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   r.   get_objr-   r   pytestraises
ValueErrorformat)r6   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   r-   r.   r/   meanr   )r6   rZ   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   rA   "Downcasting behavior in `replace` r   )
r   r.   r   r   r-   r   r   int64dtypesassert_series_equal)r6   rZ   mr   reprl   rk   s          r   test_replace_convertz)TestDataFrameReplace.test_replace_convert  s    -/DEFa*2''SA 	 **Q-C	 zA~&jj
uc*		  	 s   BBc                8   |}t         j                  |j                  dd|j                  j	                  d      f<   t         j                  |j                  dd |j                  j	                  d      f<   |j                  t         j                  d      }|j                         }|d   j                  t              |d<   |j                  d      }t        j                  ||       |j                         }|d   j                  t              |d<   t        j                  |j                  dt         j                        |       |j                  t         j                  d      }|j                         }|d   j                  t              |d<   |j                  d      }t        j                  ||       |j                         }|d   j                  t              |d<   t        j                  |j                  dt         j                        |       y )	Nr    r%   r&   r'   r!   ir(   r   )r   r   r1   r2   r3   r-   r,   r4   r5   r0   r.   r/   )r6   r8   r;   r<   r=   	expected2s         r   test_replace_mixedz'TestDataFrameReplace.test_replace_mixed   s   3566"bjj((//013bjj((--.#++BFFC8%**,"5/008???-
fh/&++-	$U+226:	%
fnnS"&&99E#++BFFD9%**,"5/008???.
fh/&++-	$U+226:	%
fnnT266:IFr   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   r-   r.   r/   )r6   rZ   r=   r<   r:   s        r   &test_replace_mixed_int_block_upcastingz;TestDataFrameReplace.test_replace_mixed_int_block_upcasting7  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   r6   rZ   r=   r<   s       r   &test_replace_mixed_int_block_splittingz;TestDataFrameReplace.test_replace_mixed_int_block_splittingL  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d
      t        dd	gd
      d      }|j                  ddgd	dg      }t        j                  ||       y )Nr   r   r   r   r   r   r   r   r&   r5   r   r   r   )r6   r   rZ   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
 QFUEN3
fh/r   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 )
NrA   r   r   r   r   r   r   r   r   )r   r   )
r   r   r-   r   to_dictr,   r4   r1   r.   r/   )r6   rZ   r<   r=   r   s        r   test_replace_mixed3z(TestDataFrameReplace.test_replace_mixed3y  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   rA   )somestringshereher   r   Int64r   )r   r   r   r4   r-   r.   r   r6   rZ   rk   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   r-   r.   r/   )r6   r   nullable_serrZ   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   rA   r   r   r   )r   r   r   r   r-   r.   r/   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   r4   r-   r   NAr5   r.   r/   r6   rZ   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   NaTr-   r   r   r.   r/   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   rA   r   r   )idr   rA   )      @g      @Nr   r5   r  )r6   
cat_seriesrZ   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   rX   r   )r1   r   r   r-   r   r.   r/   r,   )r6   r7   
orig_valueorig2r<   r=   r9   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)r,   r4   r   float32r   r*   r+   r-   r.   r/   r0   r   r   )r6   r7   r9   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   rA   r   r   )r   r   rA   r   boolsTFT)TTTcomplex)              ?               @              @r;  )y                r<  r=  
datetime64i  r       r   i     r%   r&   )dtr   r   rA  h  
   i  20130101
US/Easternperiodstzr   r   20130102rH  2013010420130103nsr   r   r(  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)NrB  r   r   )
isinstancer   yearr   r.   r   r-   r/   )r6   framerX   r)   r=   r   r   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  rT  Tr#   z:Replacement lists must match in length\. Expecting 3 got 2r   r   )r   r   r   infr-   itemsr.   r/   r,   zipr   r   r   )r6   to_reprY   rZ   filledkvr=   r<   r   r)   r:   r   s                r   #test_replace_input_formats_listlikez8TestDataFrameReplace.test_replace_input_formats_listlikeg  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   rU  rV  r   r   z.value argument must be scalar, dict, or Seriesr   r  Tr#   )r   r   r   rZ  r-   r[  r.   r/   r   r   	TypeErrorr,   )r6   rZ   r]  r^  r_  r`  r=   r   r<   r   r:   s              r   !test_replace_input_formats_scalarz6TestDataFrameReplace.test_replace_input_formats_scalar  sD   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   )r6   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   rA   r   r   r   r   rA   r    r   )rj  rl  rk  ri  rm  r   r   r   r.   r   r   r-   r   r6   r   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   
A;;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rh  rn  ro  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   r-  rX   r)   )r   r   r   r-   r.   r/   )r6   rZ   res1rv   rz   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   rA   )0vrrz  rz  )rz  rz  rz  bt)vorz  rz  rz  )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   r-   r   r.   r/   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   rW  fdsa)r   r   randomdefault_rngr-   r.   r/   r6   rZ   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  r-   onesboolr.   r/   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)rW  Tr   r  s       r   %test_replace_with_dict_with_bool_keysz:TestDataFrameReplace.test_replace_with_dict_with_bool_keys  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   rA   r   )Y0Y1replace_stringtestr  )r   r-   r.   r/   r   r  s      r   !test_replace_dict_strings_vs_intsz6TestDataFrameReplace.test_replace_dict_strings_vs_ints  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   r-   r   rZ  r   r.   r/   )r6   rZ   rrN   s       r   test_replace_truthyz(TestDataFrameReplace.test_replace_truthy  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   r-   dictr\  r.   r/   r  s       r   -test_nested_dict_overlapping_keys_replace_intzBTestDataFrameReplace.test_nested_dict_overlapping_keys_replace_int  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   aranger4   r   r   r-   r  r\  r.   r/   )r6   r   astrbstrrZ   r<   r=   s          r   -test_nested_dict_overlapping_keys_replace_strzBTestDataFrameReplace.test_nested_dict_overlapping_keys_replace_str$  s    IIaOxx}yyA%%c*T{#DT412::sDT4$9:;
fh/r   c                D   t        dg di      }|j                  ddddi      }t        dg dit              }t        j                  ||       t        dg di      }|j                  dddd	i      }t        dg dit              }t        j                  ||       y )
Nr   r9  YN)TF)r  r  r  r   )r   r   r   r  r   r-   r5   r.   r/   )r6   rZ   rk   expects       r   test_replace_swapping_bugz.TestDataFrameReplace.test_replace_swapping_bug.  s    012jj#c#678C1@
c6*Y'(jj#33/01C1@
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)rP  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  r2   r   z	Period[M]r   r   )r   Periodr   setr  rY   keysr   r1   r.   r   r   r-   r/   r6   r   rZ   r_  r=   r   r<   s          r   test_replace_periodz(TestDataFrameReplace.test_replace_period9  se   /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  rY   r  r.   r   r   r-   r/   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 )NrD  rA   rE  rF  r   r   r   r   r   r   r   r   r   rI  rJ  rK  rL  r!   rM  r,  z
US/Pacific)r   r	   r   r   r-   r   r.   r/   r0   r   rA  as_unitr,   r1   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   r.   r/   r-   r   r5   )r6   r   rZ   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, expectedr2  )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        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   )rX   r)   r3  )r   r   r   r.   r   r   r-   r/   )r6   rX   r3  r=   rZ   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   r&  )r2   r   r   rA   )
categoriesr   z#with CategoricalDtype is deprecatedr   zHAttributes of DataFrame.iloc\[:, 0\] \(column name=\"a\"\) are differentTr#   )r   r   arrayr   Categoricalr.   r   r   r-   r/   r   r   AssertionError)r6   replace_dict
final_datarZ   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   )r6   rZ   rX   expr=   r<   s         r   test_replace_commutativez-TestDataFrameReplace.test_replace_commutative$  s4    ( r]S>J'
fh/r   replacer20170827c                    t        dgt              }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   )r   r5   r.   r   r   r-   r/   )r6   r  rZ   r   r<   r=   s         r   test_replace_replacer_dtypez0TestDataFrameReplace.test_replace_replacer_dtype>  so     uF+2''SA 	@ZZhX >?F	@hZ(
fh/	@ 	@s   A00A9c                    t        dg did      }|j                  dd      }t        dg did      }t        j                  ||       y )Ngrp)r   r   rA   r   r    r
  r   r   rC  )rC  r   rA   r   r    r   r  s       r   !test_replace_after_convert_dtypesz6TestDataFrameReplace.test_replace_after_convert_dtypesQ  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>f  s    QWWY r   )r   r   r   rc  r.   r   r   r-   )r6   rZ   r   r  s       r   test_replace_invalid_to_replacez4TestDataFrameReplace.test_replace_invalid_to_replaceX  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   rv  )r   r   eyer-   rZ  r.   r/   )r6   r   r)   rZ   r<   s        r   "test_replace_no_replacement_dtypesz7TestDataFrameReplace.test_replace_no_replacement_dtypesh  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 )
Nr7  r  )r   r  r  )r!   A1r   AABr  r  r   r   )r   r   r2   r-   r.   r/   )r6   r  r<   r=   s       r   #test_replace_with_duplicate_columnsz8TestDataFrameReplace.test_replace_with_duplicate_columnsp  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PerrA   r   r   )r   r.   r   r,   r-   r   )r6   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       j                  dddd      }t	        j                  ||       y# 1 sw Y   5xY w)zt
        Test for #23305: to ensure category dtypes are maintained
        after replace with direct values
        )r   r   rA   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  OThe behavior of Series\.replace \(and DataFrame.replace\) with CategoricalDtyper   r   r
  r  r  r  r  Nr   r   r   )r   r   r  )	r   r4   catreorder_categoriesr.   r   r   r-   r/   r6   
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
 ERS
fh/	6 	6s   7E==F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  r&  r
  r  r  r  r   )r   r  r  N)r   r4   r.   r   r   r-   r/   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compiler-   r.   r/   )r6   rZ   rV   r<   r=   s        r    test_replace_with_compiled_regexz5TestDataFrameReplace.test_replace_with_compiled_regex  sJ    '

5!UCL5_-
fh/r   c                   t        dt        j                  dd      t        j                  dd      gi      }|j                  dt        j                  dd      dii      }t        dddgit              }t        j                  ||       y )Nr   r   r   r  r   )r   r   Intervalr-   r5   r.   r/   r  s       r   test_replace_intervalsz+TestDataFrameReplace.test_replace_intervals  st    bkk!Q/Q1BCDES2;;q!#4c":;<cC:.f=
fh/r   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   负面rA   )r   r   r  r-   r.   r/   )r6   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 )NrE   z|S)r4   r,   r-   r   r   r.   r   )r6   r   r   r=   s       r   test_replace_bytesz'TestDataFrameReplace.test_replace_bytes  sH    se$++D188:kk4.)
X&r   z!data, to_replace, value, expectedr   boxc                     ||      } ||      }|j                   ||      |      }t        j                  ||       y r"  r   )	r6   r   rX   r)   r=   r$  r   r   r<   s	            r   !test_replace_list_with_mixed_typez6TestDataFrameReplace.test_replace_list_with_mixed_type  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  )r6   r'  rZ   r<   r=   s        r   %test_replace_value_none_dtype_numericz:TestDataFrameReplace.test_replace_value_none_dtype_numeric  s     aX'C&cAt9-V<
fh/aX'S$K(
fh/r   c                    t        ddt        j                  gi      }t        ddt        j                  giddg      }|j                  dd      }t	        j
                  ||       y )Nr   nilzanything elser   r   r   )r   r   r  r-   r.   r/   )r6   r   r=   r<   s       r   test_replace_with_nil_naz-TestDataFrameReplace.test_replace_with_nil_na  sW    ubeen-.cORUU#;<QFKUO4
h/r   N)e__name__
__module____qualname__r>   r   markparametrizer   r   r[   rm   rq   rw   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  r5  r   int32int16r   r   r	   r   DatetimeIndexr  rR  ra  rd  rf  rr  rt  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  int8r4  r   r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r   tupler  r&  r)  r,  r   r   r   r   r      s
   A2 [[$
 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	0+>++ +$) [[BFF,BBFF.CD00& [[Z)JK0 L0 [["U^3S1E5>BXruu-RUUBEE/BC	
	*	*06*>4&0(	+G.,*0&04
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001014	.
'0*
001$00	+"0H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!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*70r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                  ddd
g      d        Zd Zd Zd Zy)TestDataFrameReplaceRegexr   r   rT   r   r   zto_replace,valuer?   )rF   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 )NTro   z...r   rt   )
r   r,   r  r  r-   r   r   r*   r.   r/   )r6   r   rX   r)   r9  r:  r$   rZ   r=   rV   r<   expected_replace_vals               r   test_regex_replace_scalarz3TestDataFrameReplaceRegex.test_regex_replace_scalar'  s      t_779J/JEJEJweL>!>FBFF?#%66 #( 2FXc]c)3./
fh/r   rV   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)Nrz  r   r   r   r   )rX   r)   rV   1)r   r.   r   r   r-   r/   )	r6   rV   r   expected_df1r   
result_df1df2expected_df2
result_df2s	            r   test_replace_regex_dtype_framez8TestDataFrameReplaceRegex.test_replace_regex_dtype_frameQ  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_replaceda  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  rI  r   r&  r   rt   def_rv  )r   r,   r-   r.   r/   r   s       r   'test_replace_categorical_no_replacementzATestDataFrameReplaceRegex.test_replace_categorical_no_replacementh  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)rX   r)   r$   rV   )r   len_mgrblocksr-   )r6   r   rZ   s      r   test_replace_object_splittingz7TestDataFrameReplaceRegex.test_replace_object_splittingv  s    cU-.rww~~&!+++rww~~&!+++


hb$d
Krww~~&!+++rww~~&!+++r   N)r-  r.  r/  r   r0  r1  r   r   r   r   r=  rE  rG  rL  rQ  r   r   r   r8  r8  &  s   [[v,T&\2v,T%(^4	
 [[k26624NO [[_tUm<[[]T5M:[[Yu60 7 ; =0: [[Wudm48 5800,r   r8  )returnzdict[str, list[int | str]])rR  zdict[str, list[float | str]])
__future__r   r   r  numpyr   r   pandasr   r   r   r   r   r	   pandas._testing_testingr.   fixturer   r   r   r8  r   r   r   <module>rY     sq    "  	      4 4 R RE0 E0P0[, [,r   