a
    PfN                     @  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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d	Zejd
dddZG dd dZG dd dZdS )    )annotations)datetimeN)using_pyarrow_string_dtype)	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   `/var/www/ai-form-bot/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ejje dd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ejje ddd(d) Zejje ddd*d+ Zejje ddd,d- Zejje ddd.d/ Zd0d1 Zd2d3 Zejd4e	j
d5d6d5e	j
d7gd8d9 Zejd:g d;d<d= Zejd>d?d@gdAdBdCdDdEgfg dFdGejidBejejgfgdHdI ZdJdK ZdLdM ZdNdO ZdPdQ Zejje dddRdS Z ejje dddTdU Z!dVdW Z"dXdY Z#dZd[ Z$d\d] Z%d^d_ Z&ejd`g dadbdc Z'ddde Z(dfdg Z)dhdi Z*djdk Z+dldm Z,dndo Z-dpdq Z.ejdre/dsg dtidudve/dsg dwife/dsg dtie	j0dxdudve/dsg dwie	j0dxfe/dsg dtie	j1dxdudve/dsg dwie	j1dxfe/dyg dzidde/dyg d{ife/d|g d}id~dve/d|g dife/de2e3ddde3ddde3dddgie3ddde3ddde/de2e3dddgd ife/e3dddgdgddde/e3dddgdgdfe/de3dddugie3dddue3dddue/de3dddugife/e4dddddve	j
dgde5ddde5ddde/e6e5ddde5ddde5dddg7ddve	j
dgdfe/dudgddggdde/ddgddggfe/dudgddggdude/ddgddggfe/dudgddggdde/ddgddggfe/dudgddggdude/ddgddggfgdd Z8dd Z9ejje dddd Z:dd Z;ejje dddd Z<ejje dddd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGejje dddd ZHejje dddd ZIejje dddd ZJddÄ ZKddń ZLejddvdg dȢde	j
dgg ddɜfe	j
dg dʢg dˢg ddɜfdBdg dʢde	j
dgg ddɜfdvdgdg dȢde	j
dgg ddɜfdudgdg d΢de	j
dgg ddɜfddg dТde	j
dgg ddɜfd
dAgdg dʢde	j
dgg dѢdɜfgddӄ ZMejddududCddgddggfduddCddugddggfgddք ZNejdg dtg dآdٜdddd؜g dtg dۢdٜfg dtg dܢdٜddddܜg dtg ddٜfgdd ZOejje ddejde5de	Pdue	1due	Qdue	Rdugdd ZSdd ZTdd ZUejd`g dejde	j
ejgdd ZVejde	j
dgdd ZWejdeXdeYdvdgdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd  Z`ejddugdgdvgdvgfdugdugdvgdvgfdgdgdvgdgfdgdugdvgdgfgejdeaebe	jcgdd Zdejdde	j
dgdd Zed	d
 ZfdS (  TestDataFrameReplacecan't set float into stringreasonc                 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?   r=   lor   
\s*(\.)\s*z(e|f|g)\1\1\1_crapr   r   ..rG   )e_crapZf_crapZg_crapr?   )r?   rH   rA   rB   er=   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rP   r#   )r   r   r,   r-   r.   )r3   
to_replacevaluesr:   r#   rM   dfr9   r   r   r   test_regex_replace_list_obj;   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   Zhalor   TrP   r   r@   rC   (a|b)rD   rE   Za_crapb_craprG   rG   r   rC   r   z(b)rD   r=   rE   r=   rY   rG   rG   rP   r(   )r   r   r   r   r   r,   r-   r.   )	r3   r   dfmixto_replace_resrS   Zmix2Zdfmix2resexpecr   r   r   test_regex_replace_list_mixeds   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 )Nr<   r   r=   Tr#   rP   r   r   rC   rW   rD   rE   rX   rZ   r[   r\   rP   r(   r#   )r   r   r   r+   r,   r-   r.   )r3   r   r^   r_   rS   r`   r7   ra   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   r<   TrV   rc   r   r   r   rC   z\1ty)r   r   .tyrf   r]   rd   .rQ   r   r,   r   r   r+   r-   r.   )r3   r   r^   r`   res2r7   ra   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   r<   TrV   rc   rQ   r   r   r   rh   )	r3   r   r^   r`   ri   Zres4r7   res3ra   r   r   r   test_regex_replace_dict_nested	  s$    z3TestDataFrameReplace.test_regex_replace_dict_nestedc                 C  s   |}t dg di|d}|rv|dkrvtjtdd" |jddid	d
}W d    n1 sZ0    Y  t dg di}n&|jddid	d
}t dg di|d}t|| d S )Nfirst)abcZbcaZcabdtypeobjectDowncastingmatchr   rg   TrV   )z.bczbc.zc.br   r-   assert_produces_warningFutureWarningr,   r.   )r3   any_string_dtypeusing_infer_stringrp   rT   r9   r:   r   r   r   2test_regex_replace_dict_nested_non_first_character  s    0zGTestDataFrameReplace.test_regex_replace_dict_nested_non_first_characterc                 C  sz   t g ddd}t g ddd}d}tjt|d$ |ddd	d
i}W d    n1 s`0    Y  t|| d S )N)QTr{   r{   r|      )Typetmp)r      r   r   r   !Downcasting behavior in `replace`rs   r~   r   r   )r{   r|   ru   r3   rT   r:   msgr9   r   r   r   %test_regex_replace_dict_nested_gh4115.  s    2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}d}tjt|d& |jddgtjd	d
}W d    n1 sv0    Y  | }| }tjt|d( |jddgtjd	d	d}W d    n1 s0    Y  |d u sJ tjt|d& |jddgtjd	d}W d    n1 s0    Y  |d u s6J t	|| t	|| t	|| d S )Nr   r   r   r   r   rs   r<   za|bTrV   rQ   rd   )
r   r   arrayr   r-   rv   rw   r,   r+   r.   )	r3   r   rT   ra   r   r`   ri   rk   r7   r   r   r   !test_regex_replace_list_to_scalar9  s2    4$&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 )Nr<   r   TrV   rc   rd   r   )r   r   r   r   r   r   )r   r,   r+   r-   r.   r3   r   rT   r`   ri   r7   rk   ra   r   r   r   !test_regex_replace_str_to_numericX  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 )Nr<   r   r   TrV   rQ   rd   r   )r   r   r   r   r   r   )r   r,   r+   r   r   r-   r.   r   r   r   r   (test_regex_replace_regex_list_to_numericj  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   r<   TrV   rc   rd   r   r   r   )r   r   r   r   r,   r+   r-   r.   )
r3   r   rT   s1s2r`   ri   r7   rk   ra   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   r   r}   r>   r   r   r   r   r   )r   r,   r-   r.   r   rp   r   Zobject_)r3   r   rT   ra   r`   r   r   r   /test_regex_replace_numeric_to_object_conversion  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col3rV   )Z1000r   r   r   r   r   r,   r   r   r-   r.   )r3   rR   rT   r9   r:   r   r   r   +test_joint_simple_replace_and_regex_replace  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parenr   r,   r-   r.   )r3   r   rT   r9   r:   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}	|r|dkrt |dkrHt|	trH|jtjjdd tj	t
dd" |	j|dd	}
d
}W d    q1 s~0    Y  n|	j|dd	}
|||d}t|
| d S )Nro   rq   r   z=object input array that gets downcasted raises on second passr   rr   rs   TrV   zstring[pyarrow_numpy])len
isinstancer   nodeZ
add_markerpytestmarkxfailr-   rv   rw   r,   assert_equal)r3   datarR   r:   frame_or_seriesrx   ry   requestrp   objr9   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)r3   r4   zero_filledrT   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   rN   rO   r   rg   rI   r=   r   r   rJ   r@   rK   rG   rF   )rI   r=   rL   r?   )r?   rI   rA   rB   )r   r   r   r   r,   r-   r.   )r3   r   Zdfobjr_   rS   r`   ra   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   r   colzwNumPy boolean array indexing assignment cannot assign {size} input values to the 1 output values where the mask is truer   )sizers   r}   dummyZalt)r   r   r   r   r-   get_objr,   r   r   raises
ValueErrorformat)r3   r   serr   r:   r9   r   r   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   )r3   rT   r9   r:   sr   r   r   test_replace_series_dict%  s    z-TestDataFrameReplace.test_replace_series_dictc                 C  s   t g dg dg}dddd}d}tjt|d ||}W d    n1 sR0    Y  ttjgd }|j}t	|| d S )N)r%   barbah)r   r%   r   r   r}   r>   "Downcasting behavior in `replace` rs   )
r   r-   rv   rw   r,   r   r   int64dtypesassert_series_equal)r3   rT   mr   repra   r`   r   r   r   test_replace_convert9  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   r0   r1   r2   r,   r/   r-   r.   )r3   r5   r8   r9   r:   r   r   r   test_replace_mixedG  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   float64ro   r   r   r   r    r   r   Tr"   r   r   r,   r-   r.   )r3   rT   r:   r9   r7   r   r   r   &test_replace_mixed_int_block_upcastingY  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   ro   r   r   r   r}   r    r   Cr   r   r3   rT   r:   r9   r   r   r   &test_replace_mixed_int_block_splittingn  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tdd	gd
dd}|rtjtdd$ |ddgd	dg}W d    q1 s0    Y  n|ddgd	dg}t|| d S )Nr   r   r   ro   r   r   r   r   r%   rq   r}   r   rr   rs   )r   r   r,   r-   r.   rv   rw   )r3   ry   rT   r:   r9   r   r   r   test_replace_mixed2  s,    
4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   ro   r   r   r   r   r   )r   r   )
r   r   r,   r   to_dictr+   astyper0   r-   r.   )r3   rT   r9   r:   r   r   r   r   test_replace_mixed3  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>   )Zsomestringshereher   r   Int64r   )r   r   r   r   r,   r-   r   r3   rT   r`   r   r   r   1test_replace_nullable_int_with_string_doesnt_cast  s    zFTestDataFrameReplace.test_replace_nullable_int_with_string_doesnt_castrp   )booleanr   ZFloat64c                 C  sP   t g d|d}tg d|d}|dd}tg d|d}t|| d S )N)r   r   r   ro   )r    r   xr   r   X)r    r   r   r   r   r,   r-   r.   )r3   rp   Znullable_serrT   r9   r:   r   r   r   !test_replace_with_nullable_column  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   ro   )r   r   r,   r   NArq   r-   r.   r3   rT   r9   r:   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   categoryro   )r   r   r>   r}   r   )idr   r>   )      @g      @Nr   rq   r   )r3   Z
cat_seriesrT   r9   r:   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   rR   r   )r0   r   r   r,   r|   r-   r.   r+   )r3   r4   Z
orig_valueZorig2r9   r:   r6   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< tj|j|jd d df< 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 deprecatedrs   bfill)method)r+   r   r   float32r   r)   r*   r,   r-   r.   r/   rv   rw   )r3   r4   r6   r   r   r9   r   r   r   test_replace_for_new_dtypes  s    z0TestDataFrameReplace.test_replace_for_new_dtypesz"frame, to_replace, value, expectedZintsr   r}   r>   r   r   )r   r}   r>   ro   ZboolsTFT)TTTcomplex)              ?               @              @r  )y                r  r  Z
datetime64i  r      r   i     r$   r%   )dtstrr   r  h  
   i  20130101
US/EasternZperiodstzr}   r   20130102r  2013010420130103nsr   r   r   c                 C  sj   d }t |tr|jdkrt}d}tj||d |||}W d    n1 sP0    Y  t|| d S )Nr  r   rs   )r   r   yearrw   r-   rv   r,   r.   )r3   framerR   r(   r:   warnr   r9   r   r   r   test_replace_dtypes  s    l*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   r}   r   r   asdffdc                   s&   i | ]\}}||  | | qS r   r,   .0kvto_reprS   r   r   
<dictcomp>      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#    r$  )r   r  Tr"   z:Replacement lists must match in length\. Expecting 3 got 2rs   r   )r   r   r   infr,   itemsr-   r.   r+   zipr   r   r   )	r3   rT   filledr:   r9   r   r(   r7   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 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 Seriesrs   r   Tr"   )r   r   r   r&  r,   r'  r-   r.   r   r   	TypeErrorr+   )r3   rT   r)  r:   r   r9   r   r7   r   r+  r   !test_replace_input_formats_scalar  s"    2z6TestDataFrameReplace.test_replace_input_formats_scalarc                 C  s   d S r   r   )r3   r   r   r   test_replace_limit  s    z'TestDataFrameReplace.test_replace_limitc                 C  s   t dddddd}ddd	d
dd}t d
dd	ddd}d}tjt|d ||}W d    n1 sj0    Y  t|| d S NStrongly AgreeAgreeNeutralDisagreeStrongly Disagree)r   r   r}   r>   r   r   r}   r>   r   r   )r1  r3  r2  r0  r4  r   rs   r   r-   rv   rw   r,   r   r3   Zanswerweightsr:   r   r9   r   r   r   test_replace_dict_no_regex  s&    
(z/TestDataFrameReplace.test_replace_dict_no_regexc                 C  s   t dddddd}t ddd	d
dd}t d
dd	ddd}d}tjt|d ||}W d    n1 sn0    Y  t|| d S r/  r5  r6  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   rR   r(   )r   r   r   r,   r-   r.   )r3   rT   Zres1ri   rk   r:   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>   )0Zvrr<  r<  )r<  r<  r<  Zbt)Zvor<  r<  r<  )ZfolZT_oppZT_DirZT_Enhz\Dr   r   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 )Nr}   r}   r}   r   r  Zfdsa)r   r   randomdefault_rngr,   r-   r.   r3   rT   r9   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 )Nr}   r@  r   FTro   )	r   r   rA  rB  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   Zasdbyes)r  Tr   r   r   r   r   %test_replace_with_dict_with_bool_keys2  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   )Y0ZY1Zreplace_stringtestrK  )r   r,   r-   r.   r   rC  r   r   r   !test_replace_dict_strings_vs_ints8  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.   )r3   rT   rrI   r   r   r   test_replace_truthyB  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,   dictr(  r-   r.   r   r   r   r   -test_nested_dict_overlapping_keys_replace_intH  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}   rP  r   )
r   Zaranger   r  r   r,   rQ  r(  r-   r.   )r3   r   ZastrZbstrrT   r9   r:   r   r   r   -test_nested_dict_overlapping_keys_replace_strQ  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)rT  rU  rT  )r   r   r   rH  r   )r3   ry   rT   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 d}t	j
t|d | }W d    n1 s0    Y  t	|| d S )Nfnamei     M)r  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rc  re  rb  ra  rd  r_  r`  r1   c                   s   g | ]} d  | qS rX  r   r  r  r   r   r   
<listcomp>  r$  z<TestDataFrameReplace.test_replace_period.<locals>.<listcomp>r   z	Period[M]r   rs   )r   Periodr   setrX  rS   keysr   r0   r-   rv   rw   r,   r.   r   r   rj  r   test_replace_periodi  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}d}tjt|d |	 }W d    n1 s0    Y  t
|| d S )NrX  z2011-08z2011-01z2012-05z2011-04z2012-08z2011-05z2013-09r^  rf  rg  c                   s   g | ]} d  | qS rh  r   ri  rj  r   r   rk    r$  z>TestDataFrameReplace.test_replace_datetime.<locals>.<listcomp>r   rs   )r   r   rm  rX  rS   rn  r-   rv   rw   r,   r.   r   r   rj  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}|d j
d|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}|d j
d|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   ro   r  r  r  r  r    r  r   z
US/Pacific)r   r	   r   r   r,   r   r-   r.   r/   r   r  as_unitr+   r0   r   r   Z
tz_convertr   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 )Nro   r   )r   r-   r.   r,   r   rq   )r3   r   rT   r   r   r    test_replace_with_empty_dictlike  s
    z5TestDataFrameReplace.test_replace_with_empty_dictlikezto_replace, method, expectedr   )r   r   r}   r   rq  )r         @ru  Zffillpad)r   r   r   )r   r}   )r   r}   r}   )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 )	Nrq  r   r   r   r   z7The 'method' keyword in DataFrame.replace is deprecatedrs   )rR   r(   r   )r   r   r   r-   rv   rw   r,   r.   )r3   rR   r   r:   rT   r   r9   r   r   r   test_replace_method  s    " .z(TestDataFrameReplace.test_replace_methodzreplace_dict, final_datac                 C  sr  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jt|d ||d}	W d    n1 s0    Y  t	|	| d}
t
jt|
d t	|| W d    n1 s
0    Y  tjt|d  |j|ddd}W d    n1 sJ0    Y  |d u sbJ t	|| d S )Nr   r}   r   r   r   )r1   rp   r   r>   )
categoriesr   z#with CategoricalDtype is deprecatedrs   zHAttributes of DataFrame.iloc\[:, 0\] \(column name=\"a\"\) are differentTr"   )r   r   r   r   ZCategoricalr-   rv   rw   r,   r.   r   r   AssertionError)r3   Zreplace_dictZ
final_datarT   r   Zex_catr   r:   msg2r9   r   r7   r   r   r   "test_categorical_replace_with_dict:  s$    
*,0z7TestDataFrameReplace.test_categorical_replace_with_dictzdf, to_replace, expr   r   rP  )r   r   rP  )r   rP  r   )456r~  r  7)r~  r  r  c                 C  s*   t |}t |}||}t|| d S r   r   )r3   rT   rR   expr:   r9   r   r   r   test_replace_commutativeZ  s    
z-TestDataFrameReplace.test_replace_commutativereplacerZ20170827c                 C  sf   t dg}d}tjt|d  |||d}W d    n1 sB0    Y  t |g}t|| d S )Nr   r   rs   r   ru   )r3   r  rT   r   r9   r:   r   r   r   test_replace_replacer_dtypet  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   ro   r   r	  )r	  r}   r>   r   r   r   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 deprecatedrs   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-   rv   rw   r,   )r3   rT   r   rz  r   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 )Nr}   ro   r:  )r   r   eyer,   r&  r-   r.   )r3   rp   r(   rT   r9   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   rY  r]  )r    A1r   ZAABrY  r]  r   r   )r   r   r1   r,   r-   r.   )r3   r  r9   r:   r   r   r   #test_replace_with_duplicate_columns  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   )r3   r   r(   r   r:   r9   r   r   r   test_replace_ea_ignore_float  s
    z1TestDataFrameReplace.test_replace_ea_ignore_floatc                 C  sL  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}tjt|d4 |dd}|dd}|dd}W d   n1 s20    Y  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   col4Zcol5r   r   )r   r  r   T)orderedr  )r   r   r   z)r  catXr  r  )obj9r  r  r  OThe behavior of Series\.replace \(and DataFrame.replace\) with CategoricalDtypers   r   r  r  r  r  r  N)	r   r   catZreorder_categoriesr-   rv   rw   r,   r.   r3   Z
input_dictZinput_dfZexpected_dictr:   r   r9   r   r   r    test_replace_value_category_type  sJ    









,z5TestDataFrameReplace.test_replace_value_category_typec                 C  s   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
}tjt|d" |ddd	d}W d   n1 s0    Y  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  rs   )r   r  r  N)r   r   r-   rv   rw   r,   r.   r  r   r   r   test_replace_dict_category_type  s    



0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  TrV   )r  r   r   )r   recompiler,   r-   r.   )r3   rT   rP   r9   r:   r   r   r    test_replace_with_compiled_regex  s
    
z5TestDataFrameReplace.test_replace_with_compiled_regexc                 C  s   t dtddtddgi}|r(tnd }tj|dd* |dtdddii}W d    n1 sj0    Y  t dddgi}t|| d S )Nr   r   r   rr   rs   r   )r   r   Intervalrw   r-   rv   r,   r.   )r3   ry   rT   warningr9   r:   r   r   r   test_replace_intervals!  s     8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positiver   r   )u   正面u   中立u   负面r>   )r   r   rE  r,   r-   r.   )r3   Zcolumns_values_mapr   r9   r:   r   r   r   test_replace_unicode*  s
    
z)TestDataFrameReplace.test_replace_unicodec                 C  s8   |dg d}| }|d tji}t|| d S )NrB   z|S)r   r+   r,   r   r   r-   r   )r3   r   r   r:   r   r   r   test_replace_bytes2  s    z'TestDataFrameReplace.test_replace_bytesz!data, to_replace, value, expectedr   boxc           	      C  s0   ||}||}| |||}t|| d S r   )r,   r-   r   )	r3   r   rR   r(   r:   r  r   r   r9   r   r   r   !test_replace_list_with_mixed_type9  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   ro   )r   r,   rq   r-   r.   )r3   r  rT   r9   r:   r   r   r   %test_replace_value_none_dtype_numericL  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   r   r   )r   r   r   r,   r-   r.   )r3   r   r:   r9   r   r   r   test_replace_with_nil_naX  s    z-TestDataFrameReplace.test_replace_with_nil_naN)g__name__
__module____qualname__r   r   r   r   r;   parametrizer   r   rU   rb   re   rj   rl   rz   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   Zint32Zint16r   r   r	   r   ZDatetimeIndexrr  r  r*  r-  r.  r8  r9  r;  r=  r?  rD  rG  rJ  rM  rO  rR  rS  rW  ro  rp  rs  rt  rw  r{  r  Zint8r   r   r  r  r  r  r  rl  r  r  r  r  r  r  r  r  r   tupler   r  r  r  r   r   r   r   r       sf  
%)(E










"













k
	(



	


$
 T	   

2




	

	8	
		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je ddejddd
gdd Zdd Zdd Zdd ZdS )TestDataFrameReplaceRegexr   r   rN   r   r   zto_replace,valuer<   )rC   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 )NTrc   z...r   rg   )
r   r+   r  r  r,   r   r   r)   r-   r.   )r3   r   rR   r(   r  r  r#   rT   r:   rP   r9   Zexpected_replace_valr   r   r   test_regex_replace_scalara  s"    

z3TestDataFrameReplaceRegex.test_regex_replace_scalarr   r   rP   c           	      C  s   t dgdgd}t dgdgd}d}tjt|d  |jdd|d}W d    n1 s\0    Y  t|| t dgdgd}t dgdgd}tjt|d  |jdd|d}W d    n1 s0    Y  t|| d S )Nr<  r   r   r   rs   )rR   r(   rP   1ru   )	r3   rP   r   Zexpected_df1r   Z
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 )Nrq  )r   r   r}   r   r   rH  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   ro   rg   def_r:  )r   r+   r,   r-   r.   r   r   r   r   'test_replace_categorical_no_replacement  s    zATestDataFrameReplaceRegex.test_replace_categorical_no_replacementc                 C  s   t dgdd}|r*t|jjdks>J nt|jjdks>J |jddddd	 |rjt|jjdks~J nt|jjdks~J d S )
Nr   r   r   r}   r   r   r   T)rR   r(   r#   rP   )r   r   Z_mgrblocksr,   )r3   ry   rT   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   r   r  `  s*   r  )
__future__r   r   r  numpyr   r   Zpandas._configr   Zpandasr   r   r   r   r   r	   Zpandas._testingZ_testingr-   Zfixturer   r   r   r  r   r   r   r   <module>   s4               L