o
    dk                     @   sJ   d dl Z d dlZd dlZd dlZd dlmZ d dl	m
Z
 G dd dZdS )    N)IntervalArrayc                   @   s  e Z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dd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zejd#d$d%gd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zejd4ejd5gd5d6gd7d8gfejd5d6gd5d6gd7d8d9gfgd:d; Z d<d= Z!d>d? Z"ejd@g dAd9dBdCdAg dDfg dEdFdGdHdEg dIfgdJdK Z#ejdLg dAg dMfg dNg dOfgdPdQ Z$dRdS Z%ejdTd%d$gdUdV Z&ejdTd%d$gdWdX Z'dYdZ Z(d[d\ Z)d]ej*fd^d_Z+d`da Z,ejdbd$d%gdcdd Z-ejded$d%gejdbd$d%gdfdg Z.dhdi Z/djdk Z0ejdldmd$d%gd$d%id%d%gfdnd8d9gdodpdqdodpgfdrd8d9gdodpdqdodpgfdsdtdugdvdwdxdvdwgfdydtdugdvdwdxdvdwgfdzd{d|gd}dFd~d}dFgfe1dne2e3d8d9e3d9dBge3d8d9e3dodpie2e3dodpe3d9dBgfe1dse2e3dde3ddge3dde3ddie2e3dde3ddgfe4dej5dddgej5dddej5dddiej5dddgfg	dd Z6dd Z7dd Z8dd Z9dd Z:ejdd%d$gdd Z;dd Z<ejdd9e=j>dgdd Z?dd Z@ejdddrgdd ZAejdddgdd ZBdS )TestSeriesReplacec                 C   s   t jg dtd}|dd }t jg dtd}t|| t td	dti}d|j
d< |dd }t tdtdtjg d	tdd
}|j
d d u sUJ t|| t g d}|dd }t g d}|j
d d u sxJ t|| d S )N)r   r    dtyper   )r   r   N)   r      )r   r   r   )        r	   N)r      r   )
         ar   br   r   )r   r   r   NNr   N)pdSeriesobjectreplacetmassert_series_equal	DataFramenpZzerosastypeilocarrayassert_frame_equal)selfserresultexpecteddf r"   \/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/series/methods/test_replace.pytest_replace_explicit_none   s(   
z,TestSeriesReplace.test_replace_explicit_nonec                 C   sp   t jd d t dgtd}|tjd i}t|| |j	tks"J |tjd }t|| |j	tks6J d S )Nz2021-12-16 17:31r   )
r   r   	Timestampr   r   r   nanr   r   r   )r   r   resr"   r"   r#   !test_replace_noop_doesnt_downcast(   s   z3TestSeriesReplace.test_replace_noop_doesnt_downcastc                 C   sd  d}t tj|}tj|dd< d|dd< |jtjgddd}|d u s(J |d}t	|| |d	tj}tj||d	k< t	|| t jt
tj|t|td
}tj|d d< d|dd< d|dd< |tjddgd}|d d dk sJ |dd dk sJ |dd dk sJ t |d d  sJ |tjdddddi}|d d dk sJ |dd dk sJ |dd dk sJ t |d d  sJ |tjddgg d}t	|| |jtjddgddd}|d u s	J |d d dk sJ |dd dk s#J |dd dk s0J d S )Nd   r         r   r   Tinplacer	   r      foobarr   r   r   r1   r2   )r   r   r   randomrandnr&   r   fillnar   r   fabsmakeDateIndexr   allisna)r   Nr   return_valueexprsrs2r"   r"   r#   test_replace4   s@   
$zTestSeriesReplace.test_replacec              	   C   s   t tjdtjg}t|tjd|d t tjdddtjd t j	g}t|tjd|d |
 }d|d< t|tjd| d S )Nr   r/   r0   r*   )r   r   r   r&   infr   r   r   r6   NaTcopy)r   r   Zfilledr"   r"   r#   test_replace_nan_with_inff   s   z+TestSeriesReplace.test_replace_nan_with_infc                 C   s   t |j}t|tjd|d d}t	j
t|d |g dtjdg W d    n1 s3w   Y  |ddgtjdg}t|| t g d}|g dg d}t|t g d d S )	Nr   z:Replacement lists must match in length\. Expecting 3 got 2matchr
   r   r   r
   r   r   r
   r   r   r*   )r*   r   r   r
   r   )r   r   indexr   r   r   r   r&   r6   pytestraises
ValueError)r   Zdatetime_seriesr   msgr   r"   r"   r#   +test_replace_listlike_value_listlike_targetp   s   z=TestSeriesReplace.test_replace_listlike_value_listlike_targetc                 C   sr   t dtjdddg}| }|tjg}t|| t dtjdddg}| }|tj}t|| d S )Nr   r   r   r*   )r   r   r   r&   Zffillr   r   r   r   r   r    r   r"   r"   r#   test_replace_gh5319   s   z%TestSeriesReplace.test_replace_gh5319c                 C   sz   t t jddd}| }t d|jd< |t dt di}t|| |t dt d}t|| d S )N20130101r.   periodsZ20120101r   Z20130103)	r   r   
date_rangerC   r%   locr   r   r   rO   r"   r"   r#   test_replace_datetime64   s   z)TestSeriesReplace.test_replace_datetime64c                 C   sf   t jddd}t t jt jdddg}|tjt jgt jj}t jt jj|gtd}t	
|| d S )Nz
2015/01/01UTC)tzr   )r   r%   r   rB   r   r   r&   minr   r   r   )r   tssr   r    r"   r"   r#   test_replace_nat_with_tz   s
   z*TestSeriesReplace.test_replace_nat_with_tzc                 C   sf   t jddd}t |}||d |d i}t |d |d |d |d |d g}t|| d S )Nr   r.   rR   r
   r   r   r*   )r   Ztimedelta_ranger   r   r   r   )r   Ztdir   r   r    r"   r"   r#   test_replace_timedelta_td64   s
   
(z-TestSeriesReplace.test_replace_timedelta_td64c                 C   s   t g d}|g d}t|t g d | }|jg ddd}|d u s,J t|t g d | }d}tjt|d |jg dddd	}|d u sUJ W d    n1 s_w   Y  t|| d S )
NrH   rG   )r   r   r   r   r*   Tr,   zVInvalid fill method\. Expecting pad \(ffill\) or backfill \(bfill\)\. Got crash_cymbalrE   Zcrash_cymbal)r-   method)	r   r   r   r   r   rC   rJ   rK   rL   )r   r   r   r[   r<   rM   r"   r"   r#   test_replace_with_single_list   s   z/TestSeriesReplace.test_replace_with_single_listc              	      s  t jtddd  fdd}dgdg}}|||  ||d |d   t g d	}dgd
g}}|||| t g d}ddgd
dg}}|||| t dddd
t dg}ddgd
t dg}}|||| t jg ddd}ddgd
dg}}|||| t t jdddd}|t|d |d |d gg d}t jg d|dd  	  td}t
|| d S )Nr.   int64r   c                    sL      } | |}|j| |dd}|d u sJ t|| t|| d S )NTr,   )rC   r   r   r   )Zto_repvalr    scr   r<   r   r"   r#   check_replace   s   zATestSeriesReplace.test_replace_mixed_types.<locals>.check_replacer   g      @r   )r   r
   r         @r*   re   )r   r
   r   re   r   r*   r   r
   r   rQ   )r   r
   r   re   Tr   Tz1/1/2001z	1/10/2001Dfreq)      ?r   r   )r   r   r   Zaranger%   rT   r   r   r   tolistr   r   )r   rd   trveZdrr   r    r"   rc   r#   test_replace_mixed_types   s*   	("z*TestSeriesReplace.test_replace_mixed_typesc                 C   s*   t g d}|dd}t|| d S )NTFTZfunz
in-the-sunr   r   r   r   r   )r   r[   r   r"   r"   r#   #test_replace_bool_with_string_no_op   s   z5TestSeriesReplace.test_replace_bool_with_string_no_opc                 C   s8   t g d}|dd}t g d}t|| d S )Nro   T2u)rr   Frr   rp   r   r[   r   r    r"   r"   r#   test_replace_bool_with_string   s   z/TestSeriesReplace.test_replace_bool_with_stringc                 C   s>   t g d}|dd}t dgt| }t|| d S )Nro   TF)r   r   r   lenr   r   rs   r"   r"   r#   test_replace_bool_with_bool   s   z-TestSeriesReplace.test_replace_bool_with_boolc                 C   s<   t g d}|ddd}t g d}t|| d S )Nro   Zasdbyes)ZasdfT)rw   Frw   rp   rs   r"   r"   r#   %test_replace_with_dict_with_bool_keys   s   z7TestSeriesReplace.test_replace_with_dict_with_bool_keysc                 C   s|   t jdd g|ddt j}t jt jt jg|d}t|| t jddg|ddt j}|jdt jdd t|| d S )Nr   r   r
   Tr,   )r   r   r   NAr   r   )r   Zany_int_ea_dtyper   r    r"   r"   r#   test_replace_Int_with_na  s   z*TestSeriesReplace.test_replace_Int_with_nac                 C   s  d}t jttj|t|td}tj	|d d< d|dd< d|dd	< |
tj	ddgd
}|d d d
k s=J |dd d
k sIJ |dd	 d
k sUJ t |d d  sbJ |
tj	d
ddddi}|d d d
k szJ |dd dk sJ |dd	 dk sJ t |d d  sJ |
tj	ddgg d}t|| |j
tj	ddgd
dd}|d u sJ |d d d
k sJ |dd d
k sJ |dd	 d
k sJ d S )Nr)   r   r.   r/   r+   r   r0   r   r   r   r1   r2   r3   Tr,   )r   r   r   r7   r4   r5   r   r8   r   r&   r   r9   r:   r   )r   r;   r   r>   r?   r<   r"   r"   r#   test_replace2  s,   $zTestSeriesReplace.test_replace2r-   TFc                 C   sX   t g d}t g d}|jg dg d|d}|r$t|| d S t|| d S )NrG   r   r   r*   r,   rp   )r   r-   r   r    r'   r"   r"   r#   test_replace_cascade-  s   z&TestSeriesReplace.test_replace_cascadec                 C   sL   t jddtjg|d}t jddtjg|d}|ddd}t|| d S )Nonetwor   12r~   r   )r   r   r   r&   r   r   r   )r   Znullable_string_dtyper   r    r   r"   r"   r#   +test_replace_with_dictlike_and_string_dtype:  s   z=TestSeriesReplace.test_replace_with_dictlike_and_string_dtypec                 C   s@   t td}t||i  t g }t||| d S )Nabcd)r   r   listr   r   r   )r   r[   Zempty_seriesr"   r"   r#    test_replace_with_empty_dictlikeA  s   
z2TestSeriesReplace.test_replace_with_empty_dictlikec                 C   :   t g d}|dtj}t g d}t|| d S NrG   r   r   r   r   r   r&   r   r   rs   r"   r"   r#   test_replace_string_with_numberI     z1TestSeriesReplace.test_replace_string_with_numberc                 C   s<   t ddg}t ddg}|ddd}t|| d S )Nr   r   )r   r   rp   )r   r[   r    r   r"   r"   r#   (test_replace_replacer_equals_replacementP  s   z:TestSeriesReplace.test_replace_replacer_equals_replacementc                 C   r   r   r   rs   r"   r"   r#    test_replace_unicode_with_numberX  r   z2TestSeriesReplace.test_replace_unicode_with_numberc                 C   sJ   t g d}|ddgtj}t dtjdtjddg}t|| d S )N)r
   r   r   4r*   r.   r   r   r
   r   r*   r.   r   rs   r"   r"   r#   $test_replace_mixed_types_with_string_  s   z6TestSeriesReplace.test_replace_mixed_types_with_stringzcategorical, numericAB)
categoriesr
   r   c                 C   sR   t |}|ddd}t |d}d|jjvr!|jd}t|| d S )Nr
   r   )r   r   category)	r   r   r   r   catr   add_categoriesr   r   )r   Zcategoricalnumericr   r   r    r"   r"   r#   test_replace_categoricalf  s   
	z*TestSeriesReplace.test_replace_categoricalc                 C   s  t jdddd}t |}|d}| }|jd}d|d< |j }|d dks-J ||d d}t	
|| |d dksCJ |j|d ddd	}|d u sSJ t	
|| |d
 }|j|d |d
 dd	}|d u soJ |d
 |d   kr~|ksJ  J d S )N
2016-01-01r   
US/PacificrS   rX   r   r/   r   Tr,   r   r
   )r   rT   r   r   rC   r   r   Zremove_unused_categoriesr   r   r   )r   Zdtir[   cr    r   r<   Zfirst_valuer"   r"   r#   test_replace_categorical_singlex  s$   


(z1TestSeriesReplace.test_replace_categorical_singlec                 C   st   t g d}|dgdg}t g d}t|| t g d}|dgdg}t g d}t|| d S )NrH   r   100000000000000000000)r   r
   r   r   r*   )r   r   100000000000000000001r
   )r   r
   r   rp   rs   r"   r"   r#   "test_replace_with_no_overflowerror  s   z4TestSeriesReplace.test_replace_with_no_overflowerrorzser, to_replace, exprG   r   r*   r|   )r   r   3r   r   r   )r   r   r   c                 C   s.   t |}t |}||}t|| d S Nrp   )r   r   
to_replacer=   seriesr    r   r"   r"   r#   test_replace_commutative  s   


z*TestSeriesReplace.test_replace_commutativezser, exp)r
   Tr   )xr   r   )r   Tr   c                 C   s0   t |}|dd}t |}t|| d S )Nr   Trp   )r   r   r=   r   r   r    r"   r"   r#   test_replace_no_cast  s   

z&TestSeriesReplace.test_replace_no_castc                 C   sT   t g d}d}tjt|d |dd  W d    d S 1 s#w   Y  d S )Nr   r   zc zZExpecting 'to_replace' to be either a scalar, array-like, dict or None, got invalid type.*rE   c                 S   s   |   S r   )strip)r   r"   r"   r#   <lambda>  s    zCTestSeriesReplace.test_replace_invalid_to_replace.<locals>.<lambda>)r   r   rJ   rK   	TypeErrorr   )r   r   rM   r"   r"   r#   test_replace_invalid_to_replace  s   "z1TestSeriesReplace.test_replace_invalid_to_replaceframec                 C   sb   t g d}|r| }d}tjt|d |jdgdd W d    d S 1 s*w   Y  d S )Nr   z4'to_replace' must be 'None' if 'regex' is not a boolrE   r   r/   )r   regex)r   r   to_framerJ   rK   rL   r   )r   r   objrM   r"   r"   r#   test_replace_nonbool_regex  s   "z,TestSeriesReplace.test_replace_nonbool_regexc                 C   sd   t jg tjd}|r| }|jdddd}|d u sJ |jdddd}t|| ||us0J d S )Nr   r*   r.   Tr,   F)r   r   r   float64r   r   r   assert_equal)r   r   r   r'   r"   r"   r#   test_replace_empty_copy  s   z)TestSeriesReplace.test_replace_empty_copyc                 C   s   t ddd|dg}ddd}d}d}tjt|d ||| W d    n1 s+w   Y  d}dd	d}d
}tjt|d ||| W d    d S 1 sRw   Y  d S )Nr
   r   r   T)r   r   r/   zASeries.replace cannot use dict-like to_replace and non-None valuerE   r0   z<Series.replace cannot use dict-value and non-None to_replace)r   r   rJ   rK   rL   r   )r   Zfixed_now_tsr   r   valuerM   r"   r"   r#   "test_replace_only_one_dictlike_arg  s   

"z4TestSeriesReplace.test_replace_only_one_dictlike_argc                 C   s2   |t jg ddd}|dd}t|| d S )NrG   Int64r   r   )r   r   r   r   r   )r   Zframe_or_seriesr   r   r"   r"   r#   test_replace_extension_other  s   z.TestSeriesReplace.test_replace_extension_otherr   c           	      C   s   |  }|j|d dd}tj|d |d gt|dd   |jd}t|| |j|d dd}t||   |	 }|j|d ddd}|d u sNJ t|| |j|d ddd}|d u sdJ t||   d S )	Nr
   pad)r^   r   r   r   T)r^   r-   )
r   r   r   r   r   r   r   r   r   rC   )	r   r   r!   r'   r    Zres_dfser2res2Zres_df2r"   r"   r#   _check_replace_with_method  s   ,z,TestSeriesReplace._check_replace_with_methodc                 C   s0   t jddt jdg|d}t |}| | d S )Nr
   r   r*   r   )r   r   ry   r   r   )r   Zany_numeric_ea_dtypeZarrr   r"   r"   r#   !test_replace_ea_dtype_with_method	  s   
z3TestSeriesReplace.test_replace_ea_dtype_with_methodas_categoricalc                 C   s6   t jtd}t |}|r|d}| | d S )Nr*   r   )r   ZIntervalIndexZfrom_breaksranger   r   r   )r   r   idxr   r"   r"   r#   !test_replace_interval_with_method  s
   

z3TestSeriesReplace.test_replace_interval_with_method	as_periodc                 C   sV   t jdddd}|r|d d}t |}t j|jd< |r$|d}| | d S )Nr   r.   r   r   rf   r1   r   )	r   rT   Ztz_localizeZ	to_periodr   rB   r   r   r   )r   r   r   r   r   r"   r"   r#   %test_replace_datetimelike_with_method  s   

z7TestSeriesReplace.test_replace_datetimelike_with_methodc                 C   sH   t g d}td}|j|didd}t g d}t|| d S )N)r   r   r   z^a$zTr   )r   r   r   )r   r   recompiler   r   r   )r   r[   r   r   r    r"   r"   r#    test_replace_with_compiled_regex(  s
   
z2TestSeriesReplace.test_replace_with_compiled_regexc                 C   sh   t jddddddt jgdd}dddd	d
}|j|dd}t jddd	dddt jgdd}t|| d S )NAABBCCZDDEEr   stringr   zCC-REPL)r   r   r   r   Tr   r   r   ry   r   r   r   )r   r   Zregex_mappingr   r=   r"   r"   r#   test_pandas_replace_na0  s   z(TestSeriesReplace.test_pandas_replace_naz,dtype, input_data, to_replace, expected_databoolr`   r   r   )r
   r   r   r   皙?皙@g333333$@g     4@)r   r   ZFloat64r   r~   r   r   r   ri   g@gffffff@g@g333333%@g4@Mz2020-05rg   z2020-06c                 C   s6   t j||d}||}t j||d}t|| d S )Nr   rp   )r   r   Z
input_datar   Zexpected_datar   r   r    r"   r"   r#   test_replace_dtype=  s   
z$TestSeriesReplace.test_replace_dtypec           
      C   s   t jddtjgdd}|ddd}t jddtjgdd}t|| t jdtjgdd}|dd	}t jd	tjgdd}t|| t jdd	gdd}|dt j}t jt jd	gdd}	t||	 d S )
Nr~   r   r   r   r   r   r   r   r   )r   r   r   r&   r   r   r   ry   )
r   r   r'   r    r   r   Z	expected2Zser3Zres3Z	expected3r"   r"   r#   test_replace_string_dtypea  s   z+TestSeriesReplace.test_replace_string_dtypec                 C   sD   t jddgdd}|ddgd}t jddgdd}t|| d S )Nabcdefr   r   zany other stringZxyzrp   r   r   r'   r    r"   r"   r#   )test_replace_string_dtype_list_to_replaces     z;TestSeriesReplace.test_replace_string_dtype_list_to_replacec                 C   sD   t jddgdd}|jdddd}t jddgdd}t|| d S )	Nr   r   r   r   .CTr   rp   r   r"   r"   r#   test_replace_string_dtype_regexz  r   z1TestSeriesReplace.test_replace_string_dtype_regexc                 C   s  t jg dt  d}|ddij|jksJ |ddj|jks$J |ddij|jks1J |ddj|jks=J |jddgddgd}|j|jksPJ t jg d	t  d}|d
dij|jkshJ |d
dj|jkstJ |d
dij|jksJ |d
dj|jksJ tjtdd |d
di W d    n1 sw   Y  tjtdd |d
d W d    d S 1 sw   Y  d S )N)ri          @gˡE@g@r   ri   	   g      "@r   g      $@r   r   )r
   r   r   r*   r
   zInvalid valuerE   g      #@)	r   r   ZFloat64Dtyper   r   Z
Int64DtyperJ   rK   r   )r   Zfloatsr'   Zintsr"   r"   r#   test_replace_nullable_numeric  s$   "z/TestSeriesReplace.test_replace_nullable_numericr   c                 C   s8   t dg}t dg}|jdd|d}t|| d S )N0r
   )r   r   r   rp   )r   r   r   r    r   r"   r"   r#   test_replace_regex_dtype_series  s   z1TestSeriesReplace.test_replace_regex_dtype_seriesc                 C   sb   t jg d|d}t jg d|d}tt|j|j}||}|dddd}t|| d S )N)r
   r
   r
   r   r   r   r   r   r   )r   r   r
   r   r
   r   )	r   r   dictzipvaluesrI   r   r   r   )r   Zany_int_numpy_dtypeZlabsmapsZmap_dictr   r    r"   r"   r#    test_replace_different_int_types  s   
z2TestSeriesReplace.test_replace_different_int_typesra   r   c                 C   s<   t d|g}||d }t jdd gtd}t|| d S )Nr
   r   )r   r   r   r   r   r   )r   ra   r   r   r    r"   r"   r#   %test_replace_value_none_dtype_numeric  s   z7TestSeriesReplace.test_replace_value_none_dtype_numericc                 C   s   t jdg di}|d dgtjg|d< t jddtjdgi}t|| t jdg di}|d d gtjg|d< t|| t jdg di}|d tj|d< t|| d S )NZTest)0.5T0.6Tr   r   )r   Nr   )	r   r   	from_dictr   r   r&   r   r   r6   )r   r!   r    r"   r"   r#    test_replace_change_dtype_series  s   z2TestSeriesReplace.test_replace_change_dtype_seriesr   r   c                 C   sf   t jddt jg|d}t jddt jg|d}|jddd}t|| |jdddd t|| d S )Nr   r
   r   r   r   Tr   r   r-   r   )r   r   r   r    r   r"   r"   r#   test_replace_na_in_obj_column  s   z/TestSeriesReplace.test_replace_na_in_obj_columnr   g      ?c                 C   s\   t |dg}t |t jg}|jdt jd}t|| |jdt jdd t|| d S )Nr
   r   Tr   r   )r   ra   r   r    r   r"   r"   r#   #test_replace_numeric_column_with_na  s   z5TestSeriesReplace.test_replace_numeric_column_with_naN)C__name__
__module____qualname__r$   r(   r@   rD   rN   rP   rV   r\   r]   r_   rn   rq   rt   rv   rx   rz   r{   rJ   markZparametrizer}   r   r   r   r   r   r   r   ZCategoricalr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZIntervalDtyper   ZIntervalZPeriodDtypeZPeriodr   r   r   r   r   r   r   r   r&   r   r   r   r   r"   r"   r"   r#   r      s    2


+	"


 


	







r   )r   numpyr   rJ   Zpandasr   Zpandas._testingZ_testingr   Zpandas.core.arraysr   r   r"   r"   r"   r#   <module>   s    