o
    g                     @  s   d dl mZ 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	d
ZejdddZG dd dZG dd dZdS )    )annotations)datetime)StringION)np_version_under1p20)	DataFrameIndexSeries	Timestamp
date_rangereturndict[str, list[int | str]]c                   C  s   t tdt ddS )N   ab..ab)listrange r   r   e/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/frame/methods/test_replace.pymix_ab   s   r   dict[str, list[float | str]]c                   C  s"   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   r   mix_abc   s   "r   c                   @  s`  e Zd Zdd Zejdddgejdgddejejgdgd	 d
g g ddfddgddgg dg dg ddfddgddgg dg dg ddfgejdddgejdddgdd Z	dd Z
dd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zejd2ejd3d4d3ejd5gd6d7 Zejd8g d9d:d; Zejd<d=d>gd?d@dAdBdCgfg dDdEejid@ejejgfgdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU Z dVdW Z!dXdY Z"dZd[ Z#d\d] Z$d^d_ Z%d`da Z&dbdc Z'ejdde(deg dfidgdhe(deg diife(deg dfiej)djdgdhe(deg diiej)djfe(deg dfiej*djdgdhe(deg diiej*djfe(dkg dlidde(dkg dmife(dng doidpdhe(dng dqife(dre+e,dsdtdue,dsdvdue,dsdtdugie,dsdtdue,dsdvdue(dre+e,dsdvdugd	 ife(e,dwdxdygdzgd{dzd|e(e,dwdxdygd|gd{fe(e-d}d	d~ddhejdgde.dd~de.dd~de(e.d}d~de.dd~de.dd~dgdhejdgdfe(dgdgddggddte(dtdgddggfe(dgdgddggdgdte(dtdgddggfe(dgdgddggdde(dtdgddggfe(dgdgddggdgde(dtdgddggfgdd Z/dd Z0dd Z1dd Z2dd Z3dd Z4dd Z5dd Z6dd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCejddhdg ddtejdvgg ddfejdg dg dg ddfd@dg ddtejdvgg ddfdhdgdg ddtejdvgg ddfdgdgdg ddtejdvgg ddfddg ddtejdvgg ddfdd?gdg ddtejdvgg ddfgdd ZDejddgdgdAd	d	gddggfdgddAd	dggdd	ggfgddÄ ZEejdg dfg dŢdƜdtddvdŜg dfg dȢdƜfg dfg dɢdƜddddɜg dfg d͢dƜfgddτ ZFejde.dуeGdge*dgeHdgeIdggddӄ ZJddՄ ZKddׄ ZLejdg d٢ejdejejgdd܄ ZMejdejdtgdd߄ ZNejdeOdePdhdtgdd ZQdd ZRejjSdddd ZTdd ZUdd ZVdd ZWdd ZXejddggdgdhgdhgfdggdggdhgdhgfdgdgdhgdgfdgdggdhgdgfgejdeYeZej[gdd Z\dS )TestDataFrameReplacec                 C  s   t j|d d d< t j|d dd < | }|jt jddd}|d u s%J t||d |}t j|jdd|j	df< t j|jd	d |j	df< |t jd}|jdd
}t|| | }|jt jgdgdd}|d u stJ t||d d S )NA   r   Tinplace   foovalue)
r   r   copyreplacetmassert_frame_equalfillnailoccolumnsget_loc)selfdatetime_framefloat_string_frametsframereturn_valuemfresultexpectedr   r   r   test_replace_inplace"   s    z)TestDataFrameReplace.test_replace_inplacezto_replace,values,expected\s*\.\s*ze|f|gcrapr   r      hr=   r;   lor   
\s*(\.)\s*z(e|f|g)\1\1\1_crapr   r   ..rE   )e_crapf_crapg_crapr=   )r=   rF   r?   r@   er;   fgr=   r#   TFuse_value_regex_argsc                 C  sp   t tdtdtdd}|r|j|||d}n	|j||d|d}|r,|d u s*J |}t |}t|| d S )Nr   efghhelor   )r(   regexr#   TrP   r#   )r   r   r*   r+   r,   )r1   
to_replacevaluesr8   r#   rM   dfr7   r   r   r   test_regex_replace_list_obj9   s   *z0TestDataFrameReplace.test_regex_replace_list_objc           	      C  sF  t |}ddg}tjdg}ttdtdtdd}t |}|j||dd	}t |d dd
tjtjgg dd}t|| ddg}ddg}|j||dd	}t |d g dd}t|| g d}g d}|j||dd	}t |d g dd}t|| g d}g d}|j||d}t |d g dd}t|| d S )Nr:   r   r;   r   r   halor   TrP   r   r>   rA   (a|b)rB   rC   a_crapb_craprE   rE   r   rA   r   z(b)rB   r;   rC   r;   r[   rE   rE   rP   r(   )r   r   r   r   r   r*   r+   r,   )	r1   r   dfmixto_replace_resrS   mix2dfmix2resexpecr   r   r   test_regex_replace_list_mixedq   s8   
z2TestDataFrameReplace.test_regex_replace_list_mixedc                 C  st  t |}ddg}tjdg}| }|j||ddd}|d u s J t |d ddtjtjgd}t|| dd	g}d
dg}| }|j||ddd}|d u sPJ t |d g dd}t|| g d}g d}| }|j||ddd}|d u s|J t |d g dd}t|| g d}g d}| }|j||dd}|d u sJ t |d g dd}t|| d S )Nr:   r   r;   Tr#   rP   r   r   rA   rX   rB   rC   rY   r\   r]   r^   rP   r(   r#   )r   r   r   r)   r*   r+   r,   )r1   r   r`   ra   rS   rd   r5   re   r   r   r   %test_regex_replace_list_mixed_inplace   s:   
z:TestDataFrameReplace.test_regex_replace_list_mixed_inplacec                 C  sz  t |}|jddidtjidd}| }|jddidtjiddd}|d u s)J t |d ddtjtjg|d d}t|| t|| |jdd	idd
idd}| }|jdd	idd
iddd}|d u sjJ t |d g d|d d}t|| t|| |jdd	idd
id}| }|jdd	idd
idd}|d u sJ t |d g d|d d}t|| t|| t |d tjdddg|d d}|jddtjidd}| }|jddtjiddd}|d u sJ t|| t|| |jddtjidd}| }|jddtjidd}|d u sJ t |d tjdddg|d d}t|| t|| d S )Nr   r:   TrW   rg   r   r   r   rA   z\1ty)r   r   .tyrj   r_   rh   .rQ   r   r*   r   r   r)   r+   r,   )r1   r   r`   rd   res2r5   re   r   r   r   test_regex_replace_dict_mixed   sh   z2TestDataFrameReplace.test_regex_replace_dict_mixedc           	      C  s   t |}|jddtjiidd}| }| }|jddtjiiddd}|d u s+J |jddtjiid}|jddtjiidd}|d u sHJ t |d ddtjtjg|d d	}t|| t|| t|| t|| d S )
Nr   r:   TrW   rg   rQ   r   r   r   rl   )	r1   r   r`   rd   rm   res4r5   res3re   r   r   r   test_regex_replace_dict_nested  s$   z3TestDataFrameReplace.test_regex_replace_dict_nestedc                 C  sN   |}t dg di|d}t dg di|d}|jddidd}t|| d S )	Nfirst)abcbcacabdtype)z.bczbc.zc.br   rk   TrW   r   r*   r+   r,   )r1   any_string_dtyperw   rT   r8   r7   r   r   r   2test_regex_replace_dict_nested_non_first_character  s
   zGTestDataFrameReplace.test_regex_replace_dict_nested_non_first_characterc                 C  sH   t g ddd}t g ddd}|ddddi}t|| d S )	N)QTr{   r{   r|      )Typetmp)r      r   r   r   r~   r   r   )r{   r|   rx   r1   rT   r8   r7   r   r   r   %test_regex_replace_dict_nested_gh4115$  s   z:TestDataFrameReplace.test_regex_replace_dict_nested_gh4115c                 C  s   t |}t |d ttjgd tjtjtjdgd}|jddgtjdd}| }| }|jddgtjddd	}|d u sAJ |jddgtjdd
}|d u sRJ t|| t|| t|| d S )Nr   r   r   r   r:   za|bTrW   rQ   rh   )r   r   arrayr   r*   r)   r+   r,   )r1   r   rT   re   rd   rm   rp   r5   r   r   r   !test_regex_replace_list_to_scalar*  s*   z6TestDataFrameReplace.test_regex_replace_list_to_scalarc                 C  s   t |}|jdddd}| }|jddddd}|d u sJ | }|jdddd}|d u s1J t |d g d|d	 d
}t|| t|| t|| d S )Nr:   r   TrW   rg   rh   r   )r   r   r   r   r   r   )r   r*   r)   r+   r,   r1   r   rT   rd   rm   r5   rp   re   r   r   r   !test_regex_replace_str_to_numericB  s   z6TestDataFrameReplace.test_regex_replace_str_to_numericc                 C  s   t |}|jddgddd}| }|jddgdddd}|d u s#J | }|jddgddd}|d u s7J t |d g d	ddtjd
gd}t|| t|| t|| d S )Nr:   r   r   TrW   rQ   rh   r   )r   r   r   r   r   r   )r   r*   r)   r   r   r+   r,   r   r   r   r   (test_regex_replace_regex_list_to_numericQ  s   z=TestDataFrameReplace.test_regex_replace_regex_list_to_numericc           
      C  s   t |}tddi}tdtji}|j||dd}| }|j||ddd}|d u s,J | }|j||dd}|d u s>J t |d ddtjtjg|d d	}	t||	 t||	 t||	 d S )
Nr   r:   TrW   rg   rh   r   r   r   )r   r   r   r   r*   r)   r+   r,   )
r1   r   rT   s1s2rd   rm   r5   rp   re   r   r   r   $test_regex_replace_series_of_regexesa  s    z9TestDataFrameReplace.test_regex_replace_series_of_regexesc                 C  sR   t |}t g d|d |d d}|dd}t|| |jjtjks'J d S )N)r   r   r}   r<   r   r   r   r   r   )r   r*   r+   r,   r   rw   r   object_)r1   r   rT   re   rd   r   r   r   /test_regex_replace_numeric_to_object_conversions  s
   zDTestDataFrameReplace.test_regex_replace_numeric_to_object_conversionrR    )r   ,)r   r   c                 C  sX   t g dg dg dd}|j|d}t g ddtjdgg dd}t|| d S )	N)z1,000r   3)r   r   r   r   col1col2col3rW   )1000r   r   r   r   )r   r*   r   r   r+   r,   )r1   rR   rT   r7   r8   r   r   r   +test_joint_simple_replace_and_regex_replacez  s   
z@TestDataFrameReplace.test_joint_simple_replace_and_regex_replacemetachar)z[]z()z\dz\wz\sc                 C  sB   t d|dgi}|d|dii}t dddgi}t|| d S )Nr   elseparenrx   )r1   r   rT   r7   r8   r   r   r   test_replace_regex_metachar  s   z0TestDataFrameReplace.test_replace_regex_metacharzdata,to_replace,expectedxaxxbxr   r   r   xcxxdx)r   r   r   z^\s*$c           	      C  s:   |}|||d}|j |dd}|||d}t|| d S )Nrv   TrW   r*   r+   assert_equal)	r1   datarR   r8   frame_or_seriesry   rw   objr7   r   r   r   test_regex_replace_string_types  s
   z4TestDataFrameReplace.test_regex_replace_string_typesc                 C  s  t j|d d d< t j|d dd < |t jd}t||d t|dt j| t j|d d d< t j|d dd < d|d d d< tddgd}t||dd	 td
tdfdtdfg}|d
t j}tt jtdfdtdfg}t|| d S )Nr   r    r!       חBr   r   )index   -2015010120150102)	r   r   r*   r+   r,   r-   r   pdto_datetime)r1   r2   zero_filledrT   df1expected_dfr   r   r   test_replace  s$   z!TestDataFrameReplace.test_replacec                 C  s   t dt dt dd}t|}ddg}tjdg}|||}tdd	tjtjgg d
g dd}t|| ddg}ddg}|||}tg dg dg dd}t|| d S )Nr   rN   rO   r   rk   rI   r;   r   r   rJ   r>   rK   rE   rD   )rI   r;   rL   r=   )r=   rI   r?   r@   )r   r   r   r   r*   r+   r,   )r1   r   dfobjra   rS   rd   re   r   r   r   test_replace_list  s,   
z&TestDataFrameReplace.test_replace_listc                 C  s   t ddgg tjdgg}td|i}|t u r|}|}|g tj}t|| d}tjt	|j
ddd |tjg i W d    n1 sGw   Y  tjt	|j
d	dd |tjd
dgi W d    d S 1 smw   Y  d S )Nr   r   r   colzwNumPy boolean array indexing assignment cannot assign {size} input values to the 1 output values where the mask is truer   )sizematchr}   dummyalt)r   r   r   r   r*   r+   r   pytestraises
ValueErrorformat)r1   r   serr   r8   r7   msgr   r   r   test_replace_with_empty_list  s   "z1TestDataFrameReplace.test_replace_with_empty_listc                 C  s   t ddddddd}|dddd}t ddddddd}t|| |d| }t|| t ddddddd}tddd}||ddd}t ddddddd}t|| ||| }t|| d S )	N        r   r          @r   )zeroone      ?      ?)r   r*   r+   r,   meanr   )r1   rT   r7   r8   sr   r   r   test_replace_series_dict  s   z-TestDataFrameReplace.test_replace_series_dictc                 C  sP   t g dg dg}dddd}||}ttjgd }|j}t|| d S )N)r%   barbah)r   r%   r   r   r}   r<   )r   r*   r   r   int64dtypesr+   assert_series_equal)r1   rT   mrepre   rd   r   r   r   test_replace_convert  s   
z)TestDataFrameReplace.test_replace_convertc                 C  s   |}t j|jdd|jdf< t j|jdd |jdf< |t jd}|jdd}t|| t|dt j| |t jd}|jdd}t|| t|dt j| d S )	Nr    r$   r%   r&   r   ir'   r   )	r   r   r.   r/   r0   r*   r-   r+   r,   )r1   r3   r6   r7   r8   r   r   r   test_replace_mixed  s   z'TestDataFrameReplace.test_replace_mixedc                 C  s   t tddgddtddgddd}t tddgddtd	dgddd}|dd	}t|| |jdd	d
d}|d u s@J t|| d S )Nr   r   float64rv   r   r   r   r   r   r   Tr"   r   r   r*   r+   r,   )r1   rT   r8   r7   r5   r   r   r   &test_replace_mixed_int_block_upcasting#  s   z;TestDataFrameReplace.test_replace_mixed_int_block_upcastingc                 C  s   t tddgddtddgddtddgddd	}t tddgddtd
dgddtddgddd	}|dd
}t|| d S )Nr   r   r   rv   r   r   r   r}   r   r   Cr   r   r   r   r   r   &test_replace_mixed_int_block_splitting9  s   z;TestDataFrameReplace.test_replace_mixed_int_block_splittingc                 C  s   t tddgddtddgddd}t tdd	gd
dtddgddd}|dd	}t|| t td	dgd
dtdd	gd
dd}|ddgd	dg}t|| d S )Nr   r   r   rv   r   r   r   r   r%   objectr}   r   r   r   r   r   r   test_replace_mixed2M  s&   z(TestDataFrameReplace.test_replace_mixed2c                 C  s|   t tddgddtddgddd}|d|  }| d}| }|d |jd< |d |jd	< t	|| d S )
Nr<   r   r   rv   r   r   r   r   r   )r   r   )
r   r   r*   r   to_dictr)   astyper.   r+   r,   )r1   rT   r7   r8   r   r   r   r   test_replace_mixed3h  s    z(TestDataFrameReplace.test_replace_mixed3c                 C  sb   t dtddi}t dg di}|ddddi}t|| |ddd}t|| d S )Nr   r   r    r   r}   r<   r   r   r   )r   r   r   r   r*   r+   r,   r   r   r   r   test_replace_simple_nested_dictt  s   z4TestDataFrameReplace.test_replace_simple_nested_dictc                 C  sf   t dtddi}t dg di}|dddd}t|| |dddddi}t|| d S )	Nr   r   r    r   r   r   r   )r   r   r   r   r   r   r   6test_replace_simple_nested_dict_with_nonexistent_value  s   zKTestDataFrameReplace.test_replace_simple_nested_dict_with_nonexistent_valuec                 C  s   |j d }|j d }tj|j d< d|j d< |jtjdid}|jjtjdidj}t|| |jtjdddid}| }d|j d< d|j d< |}t|| ||j d< ||j d< d S )Nr   r   r   r   r   rR   r   )r.   r   r   r*   r|   r+   r,   r)   )r1   r2   
orig_valueorig2r7   r8   r4   r   r   r   test_replace_value_is_none  s   





z/TestDataFrameReplace.test_replace_value_is_nonec                 C  s   |  tj}tj|d d d< tj|d dd < |tjd}t||d t|dtj| tj|d d d< tj|d dd < d|d d d< |d }tj||dk< ||d< |jdd}t||jdd d S )Nr   r    r!   r   r   bfill)method)	r)   r   r   float32r   r*   r+   r,   r-   )r1   r2   r4   r   r   r7   r   r   r   test_replace_for_new_dtypes  s   z0TestDataFrameReplace.test_replace_for_new_dtypesz"frame, to_replace, value, expectedintsr   r}   r<   r   r   )r   r}   r<   rv   boolsTFT)TTTcomplex)              ?               @              @r   )y                r   r   
datetime64i  r       r   i     r$   r%   )dtstrr   20130101
US/Easternperiodstzr}   r   20130102r   2013010420130103r   r         @c                 C  s    t |d||}t|| d S )Nr*   )getattrr+   r,   )r1   framerR   r(   r8   r7   r   r   r   test_replace_dtypes  s   cz(TestDataFrameReplace.test_replace_dtypesc                   s  t jddd ddddtt jdt jgg dg dd}| } fdd	| D }t|t| |g dg d
}tt jdt jgg d
g dd}t|| ddddtt jdt jgg dg dd}|t j}fdd	| D }t|t| t jddg g d| }| }t	t
 D ]}|j | | dd}|d u sJ qt|| d}tjt|d | dd   W d    d S 1 sw   Y  d S )Nr   r   r   r   missingr   r}   r    r   asdffdc                   s&   i | ]\}}||  | | qS r   r*   .0kvto_reprS   r   r   
<dictcomp>   s   & zLTestDataFrameReplace.test_replace_input_formats_listlike.<locals>.<dictcomp>)r    r}   r   r    c                   s$   i | ]\}}|| tj | qS r   )r*   r   r   r  )rS   r   r   r  /  s   $ )r   r  Tr"   z:Replacement lists must match in length\. Expecting 3 got 2r   r   )r   r   r   infr*   itemsr+   r,   r)   r   lenr   r   r   )r1   rT   filledr8   r7   ir5   r   r   r  r   #test_replace_input_formats_listlike  s@   "z8TestDataFrameReplace.test_replace_input_formats_listlikec                   s
  t tjdtjgg dg dd}tjddd | d} fdd| D }t|t | d}tj	t
|d	 | tjddg W d    n1 sOw   Y  tjddg | d
}| }tt D ]}|j | d
dd}|d u s|J qjt|| d S )Nr   r  r	  r   r   c                   s"   i | ]\}}||  | d qS )r   r  r  r  r   r   r  H  s   " zJTestDataFrameReplace.test_replace_input_formats_scalar.<locals>.<dictcomp>z.value argument must be scalar, dict, or Seriesr   r   Tr"   )r   r   r   r  r*   r  r+   r,   r   r   	TypeErrorr)   r   r  )r1   rT   r  r8   r   r7   r  r5   r   r  r   !test_replace_input_formats_scalar@  s$   z6TestDataFrameReplace.test_replace_input_formats_scalarc                 C  s   d S Nr   )r1   r   r   r   test_replace_limitX  s   z'TestDataFrameReplace.test_replace_limitc                 C  sR   t dddddd}ddd	d
dd}t d
dd	ddd}||}t|| d S NStrongly AgreeAgreeNeutralDisagreeStrongly Disagree)r   r   r}   r<   r   r   r}   r<   r    r   )r"  r$  r#  r!  r%  r   r*   r+   r   r1   answerweightsr8   r7   r   r   r   test_replace_dict_no_regex[  s"   

z/TestDataFrameReplace.test_replace_dict_no_regexc                 C  sV   t dddddd}t ddd	d
dd}t d
dd	ddd}||}t|| d S r   r&  r'  r   r   r   test_replace_series_no_regexp  s&   		
z1TestDataFrameReplace.test_replace_series_no_regexc                 C  s   t dtjdgi}|jtjdddid}|jdtjfddgd}|jdtjgddgd}t dddgi}t|| t|| t|| d S )Nr   r   r   r   r   rR   r(   r   r   r   r*   r+   r,   )r1   rT   res1rm   rp   r8   r   r   r   6test_replace_dict_tuple_list_ordering_remains_the_same  s   zKTestDataFrameReplace.test_replace_dict_tuple_list_ordering_remains_the_samec                 C  s4   d}t jt|dd}|ddi}t|| d S )Nzfol T_opp T_Dir T_Enh
        0    1     0     0    vo
        1    2    vr     0     0
        2    2     0     0     0
        3    3     0    bt     0z\s+)sepz\Dr   )r   read_csvr   r*   r+   r,   )r1   rawrT   rd   r   r   r   )test_replace_doesnt_replace_without_regex  s   z>TestDataFrameReplace.test_replace_doesnt_replace_without_regexc                 C  sF   t ddgtdd}|dd}t ddg|jd}t|| d S )NTFabr   r   )r   r   r*   r   r+   r,   r1   rT   r7   r8   r   r   r   test_replace_bool_with_string  s   z2TestDataFrameReplace.test_replace_bool_with_stringc                 C  s2   t tjdddk}|dd}t|| d S )Nr}   r   r
  fdsa)r   r   randomrandr*   r+   r,   r1   rT   r7   r   r   r   (test_replace_pure_bool_with_string_no_op  s   z=TestDataFrameReplace.test_replace_pure_bool_with_string_no_opc                 C  sD   t tjdddk}|dd}t tjdtd}t|| d S )Nr}   r   FT)r}   r}   rv   )	r   r   r8  r9  r*   onesboolr+   r,   r5  r   r   r   test_replace_bool_with_bool  s   z0TestDataFrameReplace.test_replace_bool_with_boolc                 C  sL   t ddgddgd}|ddd}t ddgddgd}t|| d S )NTFr   r   asdbyes)r
  Trx   r5  r   r   r   %test_replace_with_dict_with_bool_keys  s   z:TestDataFrameReplace.test_replace_with_dict_with_bool_keysc                 C  sV   t ddgddgd}|ddi}t|| |d ddi}t||d  d S )	Nr   r}   r<   r   )Y0Y1replace_stringtestrC  )r   r*   r+   r,   r   r:  r   r   r   !test_replace_dict_strings_vs_ints  s
   z6TestDataFrameReplace.test_replace_dict_strings_vs_intsc                 C  s<   t dddgi}|tjtj gtj}|}t|| d S )Nr   T)r   r*   r   r  r   r+   r,   )r1   rT   rrI   r   r   r   test_replace_truthy  s   z(TestDataFrameReplace.test_replace_truthyc              	   C  sj   t dttddi}|dtttddtddi}|tttddtdd}t|| d S )Nr   r   r    r}      )r   r   r   r*   dictzipr+   r,   r5  r   r   r   -test_nested_dict_overlapping_keys_replace_int  s   $ zBTestDataFrameReplace.test_nested_dict_overlapping_keys_replace_intc                 C  sp   t dd}|t}t ddt}td|i}|tt||}|dtt||i}t	|| d S )Nr   r    r}   rJ  r   )
r   aranger   r   r   r*   rK  rL  r+   r,   )r1   r   astrbstrrT   r7   r8   r   r   r   -test_nested_dict_overlapping_keys_replace_str  s   
zBTestDataFrameReplace.test_nested_dict_overlapping_keys_replace_strc                 C  s   t dg di}|ddddi}t dg di}t|| t dg di}|ddddi}t dg di}t|| d S )	Nr   r   YN)TF)rR  rS  rR  )r   r   r   r?  rx   )r1   rT   rd   expectr   r   r   test_replace_swapping_bug  s   z.TestDataFrameReplace.test_replace_swapping_bugc                   s   dt jddddt jddddt jddddt jdd	ddt jddddt jddddt jd
ddddi tg ddgd}t|jjt d  ksOJ td fdd|jjD i}|jd dksgJ | }t	
|| d S )Nfnamei     M)yearmonthfreqr   i  r    r   i  	   out_augmented_AUG_2011.jsonout_augmented_JAN_2011.jsonout_augmented_MAY_2012.jsonout_augmented_SUBSIDY_WEEK.jsonout_augmented_AUG_2012.jsonout_augmented_MAY_2011.jsonout_augmented_SEP_2013.jsonrb  rd  ra  r`  rc  r^  r_  r/   c                      g | ]} d  | qS rV  r   r  r  r   r   r   
<listcomp>      z<TestDataFrameReplace.test_replace_period.<locals>.<listcomp>r   z	Period[M])r   Periodr   setrV  rS   keysr   r*   r+   r,   r   r   rj  r   test_replace_period  s*   	 
z(TestDataFrameReplace.test_replace_periodc              	     s   dt dt dt dt dt dt dt dd	i tg d
dgd}t|jjt d  ks3J td fdd|jjD i}| }t|| d S )NrV  z2011-08z2011-01z2012-05z2011-04z2012-08z2011-05z2013-09r]  re  rf  c                   rg  rh  r   ri  rj  r   r   rk    rl  z>TestDataFrameReplace.test_replace_datetime.<locals>.<listcomp>)	r	   r   rn  rV  rS   ro  r*   r+   r,   r   r   rj  r   test_replace_datetime  s$   	 
z*TestDataFrameReplace.test_replace_datetimec                 C  s  t tdddddtjdgd}|tjd}t tddddtg d	d
dd}t|| |d}t|| |dtj}t tddddtjtjdgd}t|| |t	dddt	ddd}t t	dddt	dddt	dddgdtjdgd}t|| |
 }tj|jd< |dtjit	ddd}t|| |
 }tj|jd< |dtjit	ddd}t t	dddt	dddt	dddgdtjdgd}t|| |
 }tj|jd< |dtjit	d}t t	dddt	dt	dddgdtjdgd}t|| d S )Nr   r<   r   r   r   r}   r   r   r   r   r}   r   rv   r   r   r  r  r   r   z
US/Pacific)r   r
   r   r   r*   r   r+   r,   r-   r	   r)   r.   r   NaTr5  r   r   r   test_replace_datetimetz!  s|   

















z,TestDataFrameReplace.test_replace_datetimetzc              	   C  sh   t |}t||i  t||tg td t||di i t||tdi i d S )Nrv   r   )r   r+   r,   r*   r   r   )r1   r   rT   r   r   r    test_replace_with_empty_dictliket  s
   z5TestDataFrameReplace.test_replace_with_empty_dictlikezto_replace, method, expectedr   )r   r   r}   r   rr  )r        @rv  ffillpad)r   r   r   )r   r}   )r   r}   r}   )r   r   r   c                 C  sH   t g ddtjdgg dd}|j|d |d}t |}t|| d S )Nrr  r    r   r   r   )rR   r(   r   r-  )r1   rR   r   r8   rT   r7   r   r   r   test_replace_method}  s    "z(TestDataFrameReplace.test_replace_methodzreplace_dict, final_datac                 C  s  t ddgddggddgdd}t|}tj|d d df ddgd	}|d dkr-ddgnddg}tj|d d df |d	}t ||d
}||d}t|| d}	tj	t
|	d t|| W d    n1 skw   Y  |j|ddd}
|
d u s~J t|| d S )Nr   r}   r   r   category)r/   rw   r   r<   )
categoriesr   zHAttributes of DataFrame.iloc\[:, 0\] \(column name=\"a\"\) are differentr   Tr"   )r   r   r   r   Categoricalr*   r+   r,   r   r   AssertionError)r1   replace_dict
final_datarT   r   ex_catr   r8   r7   r   r5   r   r   r   "test_categorical_replace_with_dict  s    
z7TestDataFrameReplace.test_categorical_replace_with_dictzdf, to_replace, expr   r    rJ  )r   r   rJ  )r    rJ  r   )456r  r  7)r  r  r  c                 C  s*   t |}t |}||}t|| d S r  rx   )r1   rT   rR   expr8   r7   r   r   r   test_replace_commutative  s   
z-TestDataFrameReplace.test_replace_commutativereplacer20170827c                 C  sb   t |r|jjdk r|jtjjt	dd t
dg}|||d}t
|g}t|| d S )NrW  znp.putmask doesn't coerce dtypereasonr   r   )r   isscalarrw   itemsizenode
add_markerr   markxfailr   r   r*   r+   r,   )r1   requestr  rT   r7   r8   r   r   r   test_replace_replacer_dtype  s   

z0TestDataFrameReplace.test_replace_replacer_dtypec                 C  sD   t dg didd}|dd}t dg didd}t|| d S )Ngrp)r   r}   r<   r   r    Int64rv   r   
   )r  r}   r<   r   r    rx   r5  r   r   r   !test_replace_after_convert_dtypes  s   z6TestDataFrameReplace.test_replace_after_convert_dtypesc                 C  s\   t g dg dd}d}tjt|d |dd  W d    d S 1 s'w   Y  d S )N)r   zb r   )zd ze zf )r   twozZExpecting 'to_replace' to be either a scalar, array-like, dict or None, got invalid type.*r   c                 S  s   |   S r  )strip)xr   r   r   <lambda>  s    zFTestDataFrameReplace.test_replace_invalid_to_replace.<locals>.<lambda>)r   r   r   r  r*   )r1   rT   r   r   r   r   test_replace_invalid_to_replace  s   "z4TestDataFrameReplace.test_replace_invalid_to_replacerw   )floatr   r   r  booleanr(   c                 C  s<   t td|d}|jd tj tjg|d}t|| d S )Nr}   rv   r,  )r   r   eyer*   r  r+   r,   )r1   rw   r(   rT   r7   r   r   r   "test_replace_no_replacement_dtypes  s   z7TestDataFrameReplace.test_replace_no_replacement_dtypesreplacementc                 C  sr   t g dg dg dd}td|_t g dg d|ddgd}td|_|d d	||d< t|| d S )
Nr   r  )r   rW  r\  )r   A1r   AABrW  r\  r   r   )r   r   r/   r*   r+   r,   )r1   r  r7   r8   r   r   r   #test_replace_with_duplicate_columns  s   

z8TestDataFrameReplace.test_replace_with_duplicate_columnsz2020-01c                 C  sF   t d|gd i}|t ur|d }| }|dd}t|| d S )NPerr<   r   r   )r   r)   r*   r+   r   )r1   r   r(   r   r8   r7   r   r   r   test_replace_ea_ignore_float  s   z1TestDataFrameReplace.test_replace_ea_ignore_floatc                 C  s  g dg dg dg dg dd}t |dddd	}|d
 jjg ddd|d
< |d jjg ddd|d< g dg dg dg dg dd}t |dddd	}|d
 jjg ddd|d
< |d jjg ddd|d< |dd}|dd}|dd}t|| dS )zt
        Test for #23305: to ensure category dtypes are maintained
        after replace with direct values
        )r   r}   r<   r   )r   r   r   r   )g      ?g      @g      @g      @)cat1cat2cat3cat4)obj1obj2obj3obj4)r   r   r   col4col5r   rz  )r   r  r   T)orderedr  )r   r   r   z)r  catXr  r  )obj9r  r  r  r   r  r  r  r  r  N)r   r   catreorder_categoriesr*   r+   r,   )r1   
input_dictinput_dfexpected_dictr8   r7   r   r   r    test_replace_value_category_type'  sD   









z5TestDataFrameReplace.test_replace_value_category_typezDcategory dtype gets changed to object type after replace, see #35268r  c                 C  sv   dgdgdgd}t |ddddd}dgdgd	gd}t |ddddd}|ddd	d
}t|| dS )zf
        Test to ensure category dtypes are maintained
        after replace with dict values
        r   r  r  r   r  rz  r  r  r  )r   r  r  N)r   r   r*   r+   r,   )r1   input_category_dfexpected_category_dfr  r  r  r8   r7   r   r   r   test_replace_dict_category_typeZ  s   




z4TestDataFrameReplace.test_replace_dict_category_typec                 C  sD   t g d}td}|j|didd}t g d}t|| d S )Nr   z^a$r  TrW   )r  r   r   )r   recompiler*   r+   r,   )r1   rT   rP   r7   r8   r   r   r    test_replace_with_compiled_regexv  s
   
z5TestDataFrameReplace.test_replace_with_compiled_regexc                 C  sZ   t dtddtddgi}|dtdddii}t dddgi}t|| d S )Nr   r   r   r  )r   r   Intervalr*   r+   r,   r5  r   r   r   test_replace_intervals~  s    z+TestDataFrameReplace.test_replace_intervalsc                 C  sN   dddddi}t dtdi}||}t dtdi}t|| d S )Npositiver   r   )u   正面u   中立u   负面r<   )r   r   r<  r*   r+   r,   )r1   columns_values_mapr   r7   r8   r   r   r   test_replace_unicode  s
   
z)TestDataFrameReplace.test_replace_unicodec                 C  s8   |dg d}| }|d tji}t|| d S )Nr@   z|S)r   r)   r*   r   r   r+   r   )r1   r   r   r8   r   r   r   test_replace_bytes  s   z'TestDataFrameReplace.test_replace_bytesz!data, to_replace, value, expectedr   boxc           	      C  s0   ||}||}| |||}t|| d S r  r   )	r1   r   rR   r(   r8   r  r   r   r7   r   r   r   !test_replace_list_with_mixed_type  s   z6TestDataFrameReplace.test_replace_list_with_mixed_typeN)]__name__
__module____qualname__r9   r   r  parametrizer   r   rU   rf   ri   rn   rq   rz   r   r   r   r   r   r   r   r   r   NAr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   int32int16r   r   r
   r	   r  r  r  r  r*  r+  r/  r3  r6  r;  r>  rB  rG  rI  rM  rQ  rU  rp  rq  rt  ru  ry  r  r  int8r   r   r  r  r  r  r  rm  r  r  r  r  r  r  r  r  r  r   tupler   r  r   r   r   r   r   !   s   %)(E


	
"












b(

	
"S	  
 2








3
	r   c                	   @  s   e Zd Zejdededdedeeddgejddej	fdgejd	d
dgejdd
dgejdd
dgdd Z
dS )TestDataFrameReplaceRegexr   r   rN   r   r   zto_replace,valuer:   )rA   z\1\1\1compile_regexTFregex_kwargr#   c                 C  s   t |}| }|rt|}|r|}	d }nd}	|j||||	d}
|r+|
d u s)J |}
|tju r4tj}nd}||j|d dkdf< t	|
| d S )NTrg   z...r   rk   )
r   r)   r  r  r*   r   r   locr+   r,   )r1   r   rR   r(   r  r  r#   rT   r8   rP   r7   expected_replace_valr   r   r   test_regex_replace_scalar  s"   

z3TestDataFrameReplaceRegex.test_regex_replace_scalarN)r  r  r  r   r  r  r   r   r   r   r  r   r   r   r   r    s    r  )r   r   )r   r   )
__future__r   r   ior   r  numpyr   r   pandas.compatr   pandasr   r   r   r   r	   r
   pandas._testing_testingr+   fixturer   r   r   r  r   r   r   r   <module>   s6               