a
    d                     @  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dZejd	dd
dZG dd dZG dd dZdS )    )annotations)datetimeN)	DataFrameIndexSeries	Timestamp
date_rangezdict[str, list[int | str]])returnc                   C  s   t tdt ddS )N   ab..ab)listrange r   r   p/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/frame/methods/test_replace.pymix_ab   s    r   z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d ZbdS (	  TestDataFrameReplacec                 C  s  t j|j|jd d df< t j|j|jdd  df< | }|jt jddd}|d u sZJ 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 sJ t||d d S )N   Ar   Tinplace   foovalue)r   r   locindexcopyreplacetmassert_frame_equalfillnailoccolumnsget_loc)selfdatetime_framefloat_string_frametsframereturn_valuemfresult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_crapZf_crapZ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}|r2|j|||d}n|j||d|d}|rX|d u sTJ |}t |}t|| d S )Nr   efghhelor   )r$   regexr   TrL   r   )r   r   r(   r)   r*   )r/   
to_replacevaluesr6   r   rI   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   Zhalor   TrL   r   r<   r?   (a|b)r@   rA   Za_crapb_craprC   rC   r   r?   r   z(b)r@   r9   rA   r9   rU   rC   rC   rL   r$   )r   r   r   r   r   r(   r)   r*   )	r/   r   dfmixto_replace_resrO   Zmix2Zdfmix2resexpecr   r   r   test_regex_replace_list_mixedn   s8    
z2TestDataFrameReplace.test_regex_replace_list_mixedc                 C  sv  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 sJ t |d g dd}t|| g d}g d}| }|j||ddd}|d u sJ t |d g dd}t|| g d}g d}| }|j||dd}|d u sPJ t |d g dd}t|| d S )Nr8   r   r9   Tr   rL   r   r   r?   rS   r@   rA   rT   rV   rW   rX   rL   r$   r   )r   r   r   r'   r(   r)   r*   )r/   r   rZ   r[   rO   r\   r3   r]   r   r   r   %test_regex_replace_list_mixed_inplace   s:    
z:TestDataFrameReplace.test_regex_replace_list_mixed_inplacec                 C  s~  t |}|jddidtjidd}| }|jddidtjiddd}|d u sRJ 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 sJ 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 sLJ 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   TrR   r_   r   r   r   r?   z\1ty)r   r   .tyrb   rY   r`   .rM   r   r(   r   r   r'   r)   r*   )r/   r   rZ   r\   res2r3   r]   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 sVJ |jddtjiid}|jddtjiidd}|d u sJ t |d ddtjtjg|d d	}t|| t|| t|| t|| d S )
Nr   r8   TrR   r_   rM   r   r   r   rd   )	r/   r   rZ   r\   re   Zres4r3   res3r]   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)abcZbcaZcabdtype)z.bczbc.zc.br   rc   TrR   r   r(   r)   r*   )r/   any_string_dtyperl   rP   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Trp   rp   rq      )Typetmp)r      r   r   ru   rs   r   ru   )rp   rq   rm   r/   rP   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 sJ |jddgtjdd
}|d u sJ t|| t|| t|| d S )Nr   r
   r   r   r8   za|bTrR   rM   r`   )r   r   arrayr   r(   r'   r)   r*   )r/   r   rP   r]   r\   re   rg   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 sbJ t |d g d|d	 d
}t|| t|| t|| d S )Nr8   r   TrR   r_   r`   r   )r   r   r   r   r   r   )r   r(   r'   r)   r*   r/   r   rP   r\   re   r3   rg   r]   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 sFJ | }|jddgddd}|d u snJ t |d g d	ddtjd
gd}t|| t|| t|| d S )Nr8   r   r   TrR   rM   r`   r   )r   r   r   r   r   r   )r   r(   r'   r   r   r)   r*   rz   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 sXJ | }|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   TrR   r_   r`   r   r   r   )r   r   r   r   r(   r'   r)   r*   )
r/   r   rP   s1s2r\   re   r3   rg   r]   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sNJ d S )N)r   ru   rr   r:   r   r   r   r   r   )r   r(   r)   r*   r   rl   r   Zobject_)r/   r   rP   r]   r\   r   r   r   /test_regex_replace_numeric_to_object_conversionp  s
    zDTestDataFrameReplace.test_regex_replace_numeric_to_object_conversionrN    )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col3rR   )Z1000r   r   r   r   r   r(   r   r   r)   r*   )r/   rN   rP   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   elseZparenrm   )r/   r   rP   r5   r6   r   r   r   test_replace_regex_metachar  s    z0TestDataFrameReplace.test_replace_regex_metacharzdata,to_replace,expectedZxaxZxbxr   r   r   ZxcxZxdx)r   r   r   ^\s*$c           	      C  s:   |}|||d}|j |dd}|||d}t|| d S )Nrk   TrR   r(   r)   assert_equal)	r/   datarN   r6   frame_or_seriesrn   rl   objr5   r   r   r   test_regex_replace_string_types  s
    z4TestDataFrameReplace.test_regex_replace_string_typesc                 C  s8  t j|j|jd d df< t j|j|jdd  df< |t jd}t||d t|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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   r&      -Z20150101Z20150102)r   r   r%   r&   r(   r)   r*   r+   r   pdto_datetime)r/   r0   zero_filledrP   df1Z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   rJ   rK   r   rc   rE   r9   r   r   rF   r<   rG   rC   rB   )rE   r9   rH   r;   )r;   rE   r=   r>   )r   r   r   r   r(   r)   r*   )r/   r   Zdfobjr[   rO   r\   r]   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 s0    Y  tj	t
|jd	dd$ |tjd
dgi W d    n1 s0    Y  d S )Nr   r   ru   colzwNumPy boolean array indexing assignment cannot assign {size} input values to the 1 output values where the mask is truer   )sizematchrr   dummyZ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        ru   r          @r   )Zzeroone      ?      ?)r   r(   r)   r*   meanr   )r/   rP   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   ru   rr   r:   )r   r(   r   r   int64dtypesr)   assert_series_equal)r/   rP   mrepr]   r\   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 sJ t|| d S )Nr   r   float64rk   r   ru   r   r   r   r   Tr   r   r   r(   r)   r*   )r/   rP   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   rk   r   ru   r   rr   r   r   Cr   r   rv   r   r   r   &test_replace_mixed_int_block_splitting4  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   rk   r   ru   r   r   r!   objectrr   r   r   rv   r   r   r   test_replace_mixed2G  s&    z(TestDataFrameReplace.test_replace_mixed2c                 C  s   t tddgddtddgddd}|d|  }| d}| }|jd |jd< |jd |jd	< t	|| d S )
Nr:   r   r   rk   r   r   r   r   ru   )ru   ru   )
r   r   r(   r   to_dictr'   astyper,   r)   r*   )r/   rP   r5   r6   r   r   r   r   test_replace_mixed3a  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 )	Nru   rr   r:   )Zsomestringshereher   r   Int64r   )r   r   r   r   r(   r)   r   r/   rP   r\   r   r   r   1test_replace_nullable_int_with_string_doesnt_castm  s    zFTestDataFrameReplace.test_replace_nullable_int_with_string_doesnt_castrl   )booleanr   ZFloat64c                 C  sP   t g d|d}tg d|d}|dd}tg d|d}t|| d S )N)ru   r   ru   rk   )r   r   xr   r   X)r   r   r   r   r   r(   r)   r*   )r/   rl   Znullable_serrP   r5   r6   r   r   r   !test_replace_with_nullable_columnu  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   ru   r   r   rr   r:   r   r   r   )ru   r
   r   r   r(   r)   r*   rv   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   ru   r   r   r   r   r   )ru   r
   r   rv   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   rk   )r   r   r(   r   NAr   r)   r*   r/   rP   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   r   r)   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   categoryrk   )r   r
   r:   rr   r   )idr   r:   )      @g      @Nr   r   r   )r/   Z
cat_seriesrP   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   ru   r   ru   r   rN   r   )r,   r   r   r(   rq   r)   r*   r'   )r/   r0   Z
orig_valueZ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|j|jd d df< tj|j|jdd  df< |tjd}t	||
d t	|dtj| tj|j|jd d df< tj|j|jdd  df< d|j|jd d df< |d }tj||dk< ||d< d}tjt|d0 |j
dd	}t	||j
dd	 W d    n1 s.0    Y  d S )
Nr   r   r   r   r   z,DataFrame.fillna with 'method' is deprecatedr   bfill)method)r'   r   r   float32r   r%   r&   r(   r)   r*   r+   assert_produces_warningFutureWarning)r/   r0   r2   r   r   r   r5   r   r   r   test_replace_for_new_dtypes  s     z0TestDataFrameReplace.test_replace_for_new_dtypesz"frame, to_replace, value, expectedintsru   rr   r:   ru   r   )r   rr   r:   rk   ZboolsTFT)TTTcomplex)              ?               @              @r   )y                r   r   Z
datetime64i  r      r   i     r    r!   )dtstrr   r   ih  
   i  20130101
US/EasternZperiodstzrr   r   20130102r   2013010420130103r   r   r   c                 C  s   | ||}t|| d S r   )r(   r)   r*   )r/   framerN   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	 D ](\}}|j||dd}|d u sFJ qFt|| d}t
jt|d$ | dd   W d    n1 s0    Y  d S )Nr   r   r   r   missingr   rr   r   r   asdffdc                   s&   i | ]\}}||  | | qS r   r(   .0kvto_reprO   r   r   
<dictcomp>T      zLTestDataFrameReplace.test_replace_input_formats_listlike.<locals>.<dictcomp>)r   rr   r   r   c                   s$   i | ]\}}|| tj | qS r   )r(   r   r   r
  )rO   r   r   r  c  r  )r   r  Tr   z:Replacement lists must match in length\. Expecting 3 got 2r   ru   )r   r   r   infr(   itemsr)   r*   r'   zipr   r   r   )	r/   rP   filledr6   r5   r   r$   r3   r   r   r  r   #test_replace_input_formats_listlikeL  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 s0    Y  tjddg | d
}| } D ] }|j|d
dd}|d u sJ qt|| d S )Nr   r  r  r   r   c                   s"   i | ]\}}||  | d qS )r   r	  r
  r  r   r   r  |  r  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/   rP   r  r6   r   r5   r   r3   r   r  r   !test_replace_input_formats_scalart  s"    2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   ru   rr   r:   r
   r
   rr   r:   r   ru   )r  r   r  r  r!  r   r(   r)   r   r/   Z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"  r#  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   ru   r   r   r   rN   r$   )r   r   r   r(   r)   r*   )r/   rP   Zres1re   rg   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)ru   rr   rr   r:   )0Zvrr)  r)  )r)  r)  r)  Zbt)Zvor)  r)  r)  )ZfolZT_oppZT_DirZT_Enhz\Dru   rm   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  s6   t tjdddk}|dd}t|| d S )Nrr   rr   rr   r   r  Zfdsa)r   r   randomdefault_rngr(   r)   r*   r/   rP   r5   r   r   r   (test_replace_pure_bool_with_string_no_op  s    z=TestDataFrameReplace.test_replace_pure_bool_with_string_no_opc                 C  sH   t tjdddk}|dd}t tjdtd}t|| d S )Nrr   r-  r   FTrk   )	r   r   r.  r/  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   ru   Zasdbyes)r  Trm   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 )	Nru   rr   r:   r
   )Y0ZY1Zreplace_stringtestr8  )r   r(   r)   r*   r   r0  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*   )r/   rP   rrE   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   ru   r   rr      )r   r   r   r(   dictr  r)   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 )Nru   r   rr   r=  r   )
r   Zaranger   r   r   r(   r>  r  r)   r*   )r/   r   ZastrZbstrrP   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)rA  rB  rA  )r   ru   r   r5  rm   )r/   rP   r\   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sJ td fdd|jjD i}|jjd dksJ |	 }t
|| d S )Nfnamei     M)yearmonthfreqru   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rQ  rS  rP  rO  rR  rM  rN  r-   c                   s   g | ]} d  | qS rE  r   r  r  r   r   r   
<listcomp>5  r  z<TestDataFrameReplace.test_replace_period.<locals>.<listcomp>r   z	Period[M])r   Periodr   setrE  rO   keysr   r,   r(   r)   r*   rv   r   rX  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sfJ td fdd|jjD i}| }t|| d S )NrE  z2011-08z2011-01z2012-05z2011-04z2012-08z2011-05z2013-09rL  rT  rU  c                   s   g | ]} d  | qS rV  r   rW  rX  r   r   rY  T  r  z>TestDataFrameReplace.test_replace_datetime.<locals>.<listcomp>)	r   r   r[  rE  rO   r\  r(   r)   r*   rv   r   rX  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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   rr   r   ru   r   ru   rr   r   rk   r   r   r   r  r   r   z
US/Pacific)r   r   r   r   r(   r   r)   r*   r+   r   r'   r,   r   r   Z
tz_convertr   r   r   r   test_replace_datetimetzX  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 )Nrk   r   )r   r)   r*   r(   r   r   )r/   r   rP   r   r   r    test_replace_with_empty_dictlike  s
    z5TestDataFrameReplace.test_replace_with_empty_dictlikezto_replace, method, expectedr   )ru   ru   rr   r   r_  )r         @rb  Zffillpad)r   r   r   )ru   rr   )r   rr   rr   )r   r   r   c                 C  sz   t g ddtjdgg dd}d}tjt|d  |j|d |d}W d    n1 sX0    Y  t |}t|| d S )	Nr_  r   r   r   r   z7The 'method' keyword in DataFrame.replace is deprecatedr   )rN   r$   r   )r   r   r   r)   r   r   r(   r*   )r/   rN   r   r6   rP   r   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rZd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 s0    Y  |j|ddd}
|
d u sJ t|| d S )Nru   rr   r   r   r   )r-   rl   r   r:   )
categoriesr   zHAttributes of DataFrame.iloc\[:, 0\] \(column name=\"a\"\) are differentr   Tr   )r   r   rx   r   ZCategoricalr(   r)   r*   r   r   AssertionError)r/   Zreplace_dictZ
final_datarP   r   Z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   r=  )r   r   r=  )r   r=  r   )456rj  rk  7)rj  rk  rl  c                 C  s*   t |}t |}||}t|| d S r   rm   )r/   rP   rN   expr6   r5   r   r   r   test_replace_commutative  s    
z-TestDataFrameReplace.test_replace_commutativereplacerZ20170827c                 C  s4   t dg}|||d}t |g}t|| d S )Nr   r   rm   )r/   requestro  rP   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)ru   rr   r:   r
   r   r   rk   ru   r   )r   rr   r:   r
   r   rm   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}d}tjt|dL tjt|d |dd  W d    n1 s`0    Y  W d    n1 s~0    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.*zSDataFrame.replace without 'value' and with non-dict-like 'to_replace' is deprecatedr   c                 S  s   |   S r   )strip)r   r   r   r   <lambda>:  r  zFTestDataFrameReplace.test_replace_invalid_to_replace.<locals>.<lambda>)r   r   r   r  r)   r   r   r(   )r/   rP   r   Zmsg2r   r   r   test_replace_invalid_to_replace,  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 )Nrr   rk   r'  )r   r   Zeyer(   r  r)   r*   )r/   rl   r$   rP   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   rh  )r   rF  rK  )r   A1r   ZAABrF  rK  r   r   )r   r   r-   r(   r)   r*   )r/   rz  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 )NZ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
        )ru   rr   r:   r
   )r   r   r   r   )g      ?g      @g      @g      @)cat1cat2cat3cat4)obj1obj2obj3obj4)r   r   r   col4Zcol5r   r   )r   r  r   T)Zorderedr  )r   r   r   z)r~  catXr  r  )obj9r  r  r  r   r  r  r  r  r  N)r   r   catZreorder_categoriesr(   r)   r*   r/   Z
input_dictZ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  TrR   )r  r   r   )r   recompiler(   r)   r*   )r/   rP   rL   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   ru   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 )NZpositiveru   r   )u   正面u   中立u   负面r:   )r   r   r2  r(   r)   r*   )r/   Z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   rN   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   ru   rk   )r   r(   r   r)   r*   )r/   r  rP   r5   r6   r   r   r   %test_replace_value_none_dtype_numeric  s    z:TestDataFrameReplace.test_replace_value_none_dtype_numericc                 C  sH   t ddtjgi}t ddtjgiddgd}|dd}t|| d S )Nr   nilzanything elser   ru   r   )r   r   r   r(   r)   r*   )r/   r   r6   r5   r   r   r   test_replace_with_nil_na  s    z-TestDataFrameReplace.test_replace_with_nil_naN)c__name__
__module____qualname__r7   r   markparametrizer   r   rQ   r^   ra   rf   rh   ro   rw   ry   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   int32int16r   r   r   r   r  r  r  r  r%  r&  r(  r*  r,  r1  r4  r7  r:  r<  r?  r@  rD  r]  r^  r`  ra  rd  rg  rn  Zint8r   r   rq  rs  rw  ry  r|  rZ  r  r}  r  r  r  r  r  r  r   tuplerx   r  r  r  r   r   r   r   r      s
  %)(E


	

"













i
(
	
"R	   

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d ZdS )TestDataFrameReplaceRegexr   r   rJ   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}
|rV|
d u sRJ |}
|tju rhtj}nd}||j|d dkdf< t	|
| d S )NTr_   z...r   rc   )
r   r'   r  r  r(   r   r   r%   r)   r*   )r/   r   rN   r$   r  r  r   rP   r6   rL   r5   Zexpected_replace_valr   r   r   test_regex_replace_scalar  s"    

z3TestDataFrameReplaceRegex.test_regex_replace_scalarrL   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 )Nr)  r   ru   )rN   r$   rL   1rm   )r/   rL   r   Zexpected_df1Z
result_df1Zdf2Zexpected_df2Z
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_  )ru   r   rr   r   ru   r5  rr   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   rt  Nthree)r   Nrt  r  r   r   rk   rc   def_r'  )r   r'   r(   r)   r*   rv   r   r   r   'test_replace_categorical_no_replacement.  s    zATestDataFrameReplaceRegex.test_replace_categorical_no_replacementc                 C  sN   t dgdd}t|jjdks$J |jddddd t|jjdksJJ d S )	Nr   r   r   ru   r   r   T)rN   r$   r   rL   )r   lenZ_mgrblocksr(   )r/   rP   r   r   r   test_replace_object_splitting<  s    z7TestDataFrameReplaceRegex.test_replace_object_splittingN)r  r  r  r   r  r  r   r   r   r   r  r  r  r  r  r   r   r   r   r    s$   
r  )
__future__r   r   r  numpyr   r   Zpandasr   r   r   r   r   r   Zpandas._testingZ_testingr)   Zfixturer   r   r   r  r   r   r   r   <module>   s0              \