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npzerosastypeilocarrayassert_frame_equal)selfserresultexpecteddf r#   m/var/www/html/visualizacion-main/env/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   r2   r3   )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   r0   r1   r+   )r   r   r   r'   infr   r   r   r7   NaTcopy)r   r   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'   r7   pytestraises
ValueError)r   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'   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/   periods20120101r   20130103)	r   r   
date_rangerD   r&   locr   r   r   rS   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   rC   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/   rV   r
   r   r   r+   )r   timedelta_ranger   r   r   r   )r   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 )
NrJ   rI   )r   r   r   r   r+   Tr-   zVInvalid fill method\. Expecting pad \(ffill\) or backfill \(bfill\)\. Got crash_cymbalrG   crash_cymbal)r.   method)	r   r   r   r   r   rD   rL   rM   rN   )r   r   r    ra   r=   rP   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-   )rD   r   r   r   )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+   ro   )r   r
   r   ro   r   r+   r   r
   r   rU   )r   r
   r   ro   Tr   Tz1/1/2001z	1/10/2001Dfreq)      ?r   r   )r   r   r   aranger&   rZ   r   r   r   tolistr   r   )r   rn   trvedrr    r!   r#   rm   r$   test_replace_mixed_types   s*   	("z*TestSeriesReplace.test_replace_mixed_typesc                 C   s*   t g d}|dd}t|| d S )NTFTfunz
in-the-sunr   r   r   r   r   )r   ra   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 )Nr{   T2u)r   Fr   r}   r   ra   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 )Nr{   TF)r   r   r   lenr   r   r   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 )Nr{   asdbyes)asdfT)r   Fr   r}   r   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   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/   r0   r,   r   r1   r   r   r   r2   r3   r4   Tr-   )r   r   r   r8   r5   r6   r   r9   r   r'   r   r:   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 )NrI   r   r   r+   r-   r}   )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   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   ra   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 NrI   r   r   r   r   r   r'   r   r   r   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   r}   )r   ra   r!   r    r#   r#   r$   (test_replace_replacer_equals_replacementP  s   z:TestSeriesReplace.test_replace_replacer_equals_replacementc                 C   r   r   r   r   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   r   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   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rW   r^   r   r0   r   Tr-   r   r
   )r   rZ   r   r   rD   r   r   remove_unused_categoriesr   r   r   )r   dtira   cr!   r    r=   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 )NrJ   r   100000000000000000000)r   r
   r   r   r+   )r   r   100000000000000000001r
   )r   r
   r   r}   r   r#   r#   r$   "test_replace_with_no_overflowerror  s   z4TestSeriesReplace.test_replace_with_no_overflowerrorzser, to_replace, exprI   r   r+   r   )r   r   3r   r   r   )r   r   r   c                 C   s.   t |}t |}||}t|| d S Nr}   )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   Tr}   )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.*rG   c                 S   s   |   S r   )strip)r   r#   r#   r$   <lambda>  s    zCTestSeriesReplace.test_replace_invalid_to_replace.<locals>.<lambda>)r   r   rL   rM   	TypeErrorr   )r   r   rP   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 boolrG   r   r0   )r   regex)r   r   to_framerL   rM   rN   r   )r   r   objrP   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   r0   zASeries.replace cannot use dict-like to_replace and non-None valuerG   r1   z<Series.replace cannot use dict-value and non-None to_replace)r   r   rL   rM   rN   r   )r   fixed_now_tsr   r   valuerP   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 )NrI   Int64r   r   )r   r   r   r   r   )r   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)rg   r   r   r   T)rg   r.   )
r   r   r   r   r   r   r   r   r   rD   )	r   r   r"   r(   r!   res_dfser2res2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   r   r   r   )r   any_numeric_ea_dtype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   IntervalIndex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   rp   r2   r   )	r   rZ   tz_localize	to_periodr   rC   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   ra   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CCDDEEr   stringr   zCC-REPL)r   r   r   r   Tr   r   r   r   r   r   r   )r   r   regex_mappingr    r>   r#   r#   r$   test_pandas_replace_na0  s   z(TestSeriesReplace.test_pandas_replace_naz,dtype, input_data, to_replace, expected_databoolri   r   r   )r
   r   r   r   皙?皙@g333333$@g     4@)r   r   Float64r   r   r   r   r   rs   g@gffffff@g@g333333%@g4@Mz2020-05rq   z2020-06c                 C   s6   t j||d}||}t j||d}t|| d S )Nr   r}   )r   r   
input_datar   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   r   )
r   r   r(   r!   r   r   	expected2ser3res3	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 stringxyzr}   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   r}   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)rs          @gˡE@g@r   rs   	   g      "@r  g      $@r   r   )r
   r   r   r+   r
   zInvalid valuerG   g      #@)	r   r   Float64Dtyper   r   
Int64DtyperL   rM   r   )r   floatsr(   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   r}   )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valuesrK   r   r   r   )r   any_int_numpy_dtypelabsmapsmap_dictr    r!   r#   r#   r$    test_replace_different_int_types  s   
z2TestSeriesReplace.test_replace_different_int_typesrk   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   rk   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 )NTest)0.5T0.6Tr  r  )r  Nr  )	r   r   	from_dictr   r   r'   r   r   r7   )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   rk   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)   rA   rF   rQ   rT   r\   rb   re   rh   rz   r~   r   r   r   r   r   rL   markparametrizer   r   r   r   r   r   r   r   Categoricalr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   IntervalDtyper   IntervalPeriodDtypePeriodr   r   r  r  r  r  r  r   r'   r  r  r   r!  r#   r#   r#   r$   r      s    2


+	"


 


	







r   )r   numpyr   rL   pandasr   pandas._testing_testingr   pandas.core.arraysr   r   r#   r#   r#   r$   <module>   s    