o
    5c                     @  s   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dZejdd
dZG dd dZG dd dZdS )    )annotations)datetimeN)	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   ]/var/www/html/gps/gps/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$ejd^g d_d`da Z%dbdc Z&ddde Z'dfdg Z(dhdi Z)djdk Z*dldm Z+dndo Z,ejdpe-dqg dridsdte-dqg duife-dqg driej.dvdsdte-dqg duiej.dvfe-dqg driej/dvdsdte-dqg duiej/dvfe-dwg dxidde-dwg dyife-dzg d{id|dte-dzg d}ife-d~e0e1ddde1ddde1dddgie1ddde1ddde-d~e0e1dddgd	 ife-e1dddgdgddde-e1dddgdgdfe-de1dddsgie1dddse1dddse-de1dddsgife-e2dd	dddtejdgde3ddde3ddde-e3ddde3ddde3dddgdtejdgdfe-dsdgddggdde-ddgddggfe-dsdgddggdsde-ddgddggfe-dsdgddggdde-ddgddggfe-dsdgddggdsde-ddgddggfgdd Z4dd Z5dd Z6dd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHejddtdg dŢdejdgg ddƜfejdg dǢg dȢg ddƜfd@dg dǢdejdgg ddƜfdtdgdg dŢdejdgg ddƜfdsdgdg dˢdejdgg ddƜfddg d͢dejdgg ddƜfdd?gdg dǢdejdgg d΢dƜfgddЄ ZIejddsdsdAd	d	gddggfdsddAd	dsgdd	ggfgddӄ ZJejdg drg dբd֜dddd՜g drg dآd֜fg drg d٢d֜ddddٜg drg dݢd֜fgdd߄ ZKejde3deLdse/dseMdseNdsgdd ZOdd ZPdd ZQejd^g dejdejejgdd ZRejdejdgdd ZSejdeTdeUdtdgdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\ejddsgdgdtgdtgfdsgdsgdtgdtgfdgdgdtgdgfdgdsgdtgdgfgejd e]e^ej_gdd Z`ejddejdgdd ZadS (  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;   r9   lor   
\s*(\.)\s*z(e|f|g)\1\1\1_crapr   r   ..rC   )e_crapf_crapg_crapr;   )r;   rD   r=   r>   er9   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rN   r!   )r   r   r(   r)   r*   )r/   
to_replacevaluesr6   r!   rK   dfr5   r   r   r   test_regex_replace_list_obj6   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 )Nr8   r   r9   r   r   halor   TrN   r   r<   r?   (a|b)r@   rA   a_crapb_craprC   rC   r   r?   r   z(b)r@   r9   rA   r9   rY   rC   rC   rN   r&   )r   r   r   r   r   r(   r)   r*   )	r/   r   dfmixto_replace_resrQ   mix2dfmix2resexpecr   r   r   test_regex_replace_list_mixedn   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 )Nr8   r   r9   Tr!   rN   r   r   r?   rV   r@   rA   rW   rZ   r[   r\   rN   r&   r!   )r   r   r   r'   r(   r)   r*   )r/   r   r^   r_   rQ   rb   r3   rc   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   r8   TrU   re   r   r   r   r?   z\1ty)r   r   .tyrh   r]   rf   .rO   r   r(   r   r   r'   r)   r*   )r/   r   r^   rb   res2r3   rc   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   r8   TrU   re   rO   r   r   r   rj   )	r/   r   r^   rb   rk   res4r3   res3rc   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   ri   TrU   r   r(   r)   r*   )r/   any_string_dtyperu   rR   r6   r5   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Try   ry   rz      )Typetmp)r      r   r   r~   r|   r   r~   )ry   rz   rv   r/   rR   r6   r5   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   r8   za|bTrU   rO   rf   )r   r   arrayr   r(   r'   r)   r*   )r/   r   rR   rc   rb   rk   rn   r3   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 )Nr8   r   TrU   re   rf   r   )r   r   r   r   r   r   )r   r(   r'   r)   r*   r/   r   rR   rb   rk   r3   rn   rc   r   r   r   !test_regex_replace_str_to_numeric?  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 )Nr8   r   r   TrU   rO   rf   r   )r   r   r   r   r   r   )r   r(   r'   r   r   r)   r*   r   r   r   r   (test_regex_replace_regex_list_to_numericN  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   r8   TrU   re   rf   r   r   r   )r   r   r   r   r(   r'   r)   r*   )
r/   r   rR   s1s2rb   rk   r3   rn   rc   r   r   r   $test_regex_replace_series_of_regexes^  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   ru   r   object_)r/   r   rR   rc   rb   r   r   r   /test_regex_replace_numeric_to_object_conversionp  s
   zDTestDataFrameReplace.test_regex_replace_numeric_to_object_conversionrP    )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col3rU   )1000r   r   r   r   r   r(   r   r   r)   r*   )r/   rP   rR   r5   r6   r   r   r   +test_joint_simple_replace_and_regex_replacew  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parenrv   )r/   r   rR   r5   r6   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 )Nrt   TrU   r(   r)   assert_equal)	r/   datarP   r6   frame_or_seriesrw   ru   objr5   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)r/   r0   zero_filledrR   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   rL   rM   r   ri   rG   r9   r   r   rH   r<   rI   rC   rB   )rG   r9   rJ   r;   )r;   rG   r=   r>   )r   r   r   r   r(   r)   r*   )r/   r   dfobjr_   rQ   rb   rc   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||}|}|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)   get_objr(   r   pytestraises
ValueErrorformat)r/   r   serr   r6   r5   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   )r/   rR   r5   r6   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)r/   rR   mreprc   rb   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-   r.   r(   r+   r)   r*   )r/   r1   r4   r5   r6   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   float64rt   r   r~   r   r   r   r   Tr    r   r   r(   r)   r*   )r/   rR   r6   r5   r3   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   rt   r   r~   r   r{   r   r   Cr   r   r   r   r   r   &test_replace_mixed_int_block_splitting5  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   rt   r   r~   r   r   r#   objectr{   r   r   r   r   r   r   test_replace_mixed2I  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   rt   r   r   r   r   r~   )r~   r~   )
r   r   r(   r   to_dictr'   astyper,   r)   r*   )r/   rR   r5   r6   r   r   r   r   test_replace_mixed3d  s    z(TestDataFrameReplace.test_replace_mixed3c                 C  sT   t dddtjgg dd}|d d|d< |dtj}t|d |d  d S )	Nr~   r{   r:   )somestringshereher   r   Int64r   )r   r   r   r   r(   r)   r   r/   rR   rb   r   r   r   1test_replace_nullable_int_with_string_doesnt_castp  s   zFTestDataFrameReplace.test_replace_nullable_int_with_string_doesnt_castru   )booleanr   Float64c                 C  sP   t g d|d}tg d|d}|dd}tg d|d}t|| d S )N)r~   r   r~   rt   )r   r   xr   r   X)r   r   r   r   r   r(   r)   r*   )r/   ru   nullable_serrR   r5   r6   r   r   r   !test_replace_with_nullable_columnx  s
   z6TestDataFrameReplace.test_replace_with_nullable_columnc                 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_dict  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  sN   t ddd giddi}|tjd i}t ddd gitd}t|| d S )Nr&   *   r   rt   )r   r   r(   r   NAr   r)   r*   r/   rR   r5   r6   r   r   r   test_replace_NA_with_None  s   z.TestDataFrameReplace.test_replace_NA_with_Nonec                 C  sB   t tjtjg}|tjd tjd i}t d d g}t|| d S N)r   r   NaTr(   r   NaNr)   r*   r   r   r   r   test_replace_NAT_with_None  s   z/TestDataFrameReplace.test_replace_NAT_with_Nonec                 C  sb   t g ddd}tt g ddd|d}|dd i}tt g dd	d|d}t|| d S )
N)r   r   r   r   categoryrt   )r   r   r:   r{   r   )idr   r:   )      @g      @Nr   r   r   )r/   
cat_seriesrR   r5   r6   r   r   r   (test_replace_with_None_keeps_categorical  s   z=TestDataFrameReplace.test_replace_with_None_keeps_categoricalc                 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   rP   r   )r,   r   r   r(   rz   r)   r*   r'   )r/   r0   
orig_valueorig2r5   r6   r2   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+   )r/   r0   r2   r   r   r5   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:   rt   boolsTFT)TTTcomplex)              ?               @              @r  )y                r  r  
datetime64i  r      r   i     r"   r#   )dtstrr   r  ih  
   i  20130101
US/Easternperiodstzr{   r   20130102r  2013010420130103r   r   r   c                 C  s    t |d||}t|| d S )Nr(   )getattrr)   r*   )r/   framerP   r&   r6   r5   r   r   r   test_replace_dtypes  s   j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_reprQ   r   r   
<dictcomp>U  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(  )rQ   r   r   r.  d  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   )r/   rR   filledr6   r5   ir3   r   r   r,  r   #test_replace_input_formats_listlikeM  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.  }  s   " zJTestDataFrameReplace.test_replace_input_formats_scalar.<locals>.<dictcomp>z.value argument must be scalar, dict, or Seriesr   r   Tr    )r   r   r   r0  r(   r1  r)   r*   r   r   	TypeErrorr'   r   r2  )r/   rR   r3  r6   r   r5   r4  r3   r   r6  r   !test_replace_input_formats_scalaru  s$   z6TestDataFrameReplace.test_replace_input_formats_scalarc                 C  s   d S r   r   )r/   r   r   r   test_replace_limit  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   r/   answerweightsr6   r5   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@  rA  r   r   r   test_replace_series_no_regex  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   rP   r&   r   r   r   r(   r)   r*   )r/   rR   res1rk   rn   r6   r   r   r   6test_replace_dict_tuple_list_ordering_remains_the_same  s   zKTestDataFrameReplace.test_replace_dict_tuple_list_ordering_remains_the_samec                 C  s@   t g dg dg dg dd}|ddi}t|| d S )N)r~   r{   r{   r:   )0vrrJ  rJ  )rJ  rJ  rJ  bt)vorJ  rJ  rJ  )folT_oppT_DirT_Enhz\Dr~   rv   r   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*   r   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*   r/   rR   r5   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{   rt   )	r   r   rV  rW  r(   onesboolr)   r*   r   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%  Trv   r   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testra  )r   r(   r)   r*   r   rX  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   r0  r   r)   r*   )r/   rR   rrG   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*   r   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{   rh  r   )
r   aranger   r  r   r(   ri  rj  r)   r*   )r/   r   astrbstrrR   r5   r6   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)rp  rq  rp  )r   r~   r   r]  rv   )r/   rR   rb   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r  r  r  r~  r  r|  r}  r-   c                      g | ]} d  | qS rt  r   r)  r*  r   r   r   
<listcomp>6      z<TestDataFrameReplace.test_replace_period.<locals>.<listcomp>r   z	Period[M])r   Periodr   setrt  rQ   keysr   r(   r)   r*   r   r   r  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 )Nrt  z2011-08z2011-01z2012-05z2011-04z2012-08z2011-05z2013-09r{  r  r  c                   r  r  r   r  r  r   r   r  U  r  z>TestDataFrameReplace.test_replace_datetime.<locals>.<listcomp>)	r   r   r  rt  rQ   r  r(   r)   r*   r   r   r  r   test_replace_datetime;  s$   	 
z*TestDataFrameReplace.test_replace_datetimec                 C  sL  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< tjtdd |dtjit	ddd}W d    n1 sw   Y  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   rt   r  r  r  r  r   r   zmismatched timezoner   z
US/Pacific)r   r   r   r   r(   r   r)   r*   r+   r   r'   r,   r   r   assert_produces_warningFutureWarningr   r   r   r   test_replace_datetimetzY  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 )Nrt   r   )r   r)   r*   r(   r   r   )r/   r   rR   r   r   r    test_replace_with_empty_dictlike  s
   z5TestDataFrameReplace.test_replace_with_empty_dictlikezto_replace, method, expectedr  )r~   r~   r{   r   r  )r         @r  ffillpad)r   r   r   )r~   r{   )r   r{   r{   )r   r   r   c                 C  sH   t g ddtjdgg dd}|j|d |d}t |}t|| d S )Nr  r   r   r   r   )rP   r&   r  rG  )r/   rP   r  r6   rR   r5   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   r   )r-   ru   r   r:   )
categoriesr   zHAttributes of DataFrame.iloc\[:, 0\] \(column name=\"a\"\) are differentr   Tr    )r   r   r   r   Categoricalr(   r)   r*   r   r   AssertionError)r/   replace_dict
final_datarR   r   ex_catr   r6   r5   r   r3   r   r   r   "test_categorical_replace_with_dict  s    
z7TestDataFrameReplace.test_categorical_replace_with_dictzdf, to_replace, expr   r   rh  )r   r   rh  )r   rh  r   )456r  r  7)r  r  r  c                 C  s*   t |}t |}||}t|| d S r   rv   )r/   rR   rP   expr6   r5   r   r   r   test_replace_commutative  s   
z-TestDataFrameReplace.test_replace_commutativereplacer20170827c                 C  s4   t dg}|||d}t |g}t|| d S )Nr   r   rv   )r/   requestr  rR   r5   r6   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   r   rt   r~   r  )r  r{   r:   r   r   rv   r   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)r   r   r   r   <lambda>:  s    zFTestDataFrameReplace.test_replace_invalid_to_replace.<locals>.<lambda>)r   r   r   r7  r(   )r/   rR   r   r   r   r   test_replace_invalid_to_replace1  s   "z4TestDataFrameReplace.test_replace_invalid_to_replace)floatr   r   r   r   r&   c                 C  s<   t td|d}|jd tj tjg|d}t|| d S )Nr{   rt   rF  )r   r   eyer(   r0  r)   r*   )r/   ru   r&   rR   r5   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   ru  rz  )r   A1r   AABru  rz  r   r   )r   r   r-   r(   r)   r*   )r/   r  r5   r6   r   r   r   #test_replace_with_duplicate_columnsD  s   

z8TestDataFrameReplace.test_replace_with_duplicate_columnsz2020-01c                 C  sB   t d|gd i}t||}| }|dd}t|| d S )NPerr:   r   r   )r   r)   r   r'   r(   r   )r/   r   r&   r   r6   r5   r   r   r   test_replace_ea_ignore_floatS  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   r   )r   r  r   T)orderedr  )r   r   r   z)r  catXr  r  )obj9r  r  r  r   r  r  r  r  r  N)r   r   catreorder_categoriesr(   r)   r*   r/   
input_dictinput_dfexpected_dictr6   r5   r   r   r    test_replace_value_category_type]  sD   



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


z5TestDataFrameReplace.test_replace_value_category_typec                 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  r   r  r  r  )r   r  r  N)r   r   r(   r)   r*   r  r   r   r   test_replace_dict_category_type  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  TrU   )r  r   r   )r   recompiler(   r)   r*   )r/   rR   rN   r5   r6   r   r   r    test_replace_with_compiled_regex  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*   r   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   rZ  r(   r)   r*   )r/   columns_values_mapr   r5   r6   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   )r/   r   r   r6   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   )	r/   r   rP   r&   r6   r  r   r   r5   r   r   r   !test_replace_list_with_mixed_type  s   z6TestDataFrameReplace.test_replace_list_with_mixed_typevalc                 C  sj   t dd|gi}||d }t ddd gitd}t|| t dd|gi}||d i}t|| d S )Nr   r~   rt   )r   r(   r   r)   r*   )r/   r  rR   r5   r6   r   r   r   %test_replace_value_none_dtype_numeric  s   z:TestDataFrameReplace.test_replace_value_none_dtype_numericN)b__name__
__module____qualname__r7   r   markparametrizer   r   rS   rd   rg   rl   ro   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   int32int16r   r   r   r   r!  r5  r8  r9  rD  rE  rI  rR  rT  rY  r\  r`  re  rg  rk  ro  rs  r  r  r  r  r  r  r  int8r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   tupler   r  r  r   r   r   r   r      s
   %)(E


	

"














i(
	
"X	  
 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
ejddd
gdd Zdd Zdd ZdS )TestDataFrameReplaceRegexr   r   rL   r   r   zto_replace,valuer8   )r?   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 )NTre   z...r   ri   )
r   r'   r  r  r(   r   r   locr)   r*   )r/   r   rP   r&   r  r  r!   rR   r6   rN   r5   expected_replace_valr   r   r   test_regex_replace_scalar  s"   

z3TestDataFrameReplaceRegex.test_regex_replace_scalarrN   c                 C  s   t dgdgd}t dgdgd}|jdd|d}t|| t dgdgd}t dgdgd}|jdd|d}t|| d S )NrJ  r   r~   )rP   r&   rN   1rv   )r/   rN   r   expected_df1
result_df1df2expected_df2
result_df2r   r   r   test_replace_regex_dtype_frame  s   z8TestDataFrameReplaceRegex.test_replace_regex_dtype_framec                 C  sV   t g dg dd}|dtjd}t dtjdgtjddgd}t|| d S )Nr  )r~   r   r{   r   r~   r]  r{   r   r   r   r   r   +test_replace_with_value_also_being_replaced   s   zETestDataFrameReplaceRegex.test_replace_with_value_also_being_replacedc                 C  sH   t g dg dddd}| }|jddgdd gd	}t|| d S )
N)r   r  Nthree)r   Nr  r  r   r   rt   ri   def_rF  )r   r'   r(   r)   r*   r   r   r   r   'test_replace_categorical_no_replacement'  s   zATestDataFrameReplaceRegex.test_replace_categorical_no_replacementN)r  r  r  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   r  numpyr   r   pandasr   r   r   r   r   r   pandas._testing_testingr)   fixturer   r   r   r  r   r   r   r   <module>   s2               U