o
    Tids                     @   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 ejd<g d=g d>fd?gd@gfgdAdB Z!dCdD Z"dEdF Z#ejdGg dHd9dIdJdHg dKfg dLdMdNdOdLg dPfgdQdR Z$ejdSg dHg dTfg dUg dVfgdWdX Z%dYdZ Z&ejd[d%d$gd\d] Z'ejd[d%d$gd^d_ Z(d`da Z)dbdc Z*ddej+fdedfZ,dgdh Z-ejdid$d%gdjdk Z.ejdld$d%gejdid$d%gdmdn Z/dodp Z0dqdr Z1ejdsdtd$d%gd$d%id%d%gfdud8d9gdvdwdxdvdwgfdyd8d9gdvdwdxdvdwgfdzd{d|gd}d~dd}d~gfdd{d|gd}d~dd}d~gfdddgddMdddMgfe2due3e4d8d9e4d9dIge4d8d9e4dvdwie3e4dvdwe4d9dIgfe2dze3e4dde4ddge4dde4ddie3e4dde4ddgfe5dej6dddgej6dddej6dddiej6dddgfg	dd Z7dd Z8dd Z9dd Z:dd Z;ejdd%d$gdd Z<dd Z=ejdd9e>j?dgdd Z@dd ZAejdddygdd ZBejdddgdd ZCdS )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"   h/var/www/html/evchargy.com/venv/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   sp  d}t tjd|}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d|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 s6J d S )Nd   r   r         r   r   Tinplacer	   r      foobarr   r   r   r1   r2   )r   r   r   randomdefault_rngstandard_normalr&   r   fillnar   r   fabsmakeDateIndexr   allisna)r   Nr   return_valueexprsrs2r"   r"   r#   test_replace4   sH   
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   r7   NaTcopy)r   r   Zfilledr"   r"   r#   test_replace_nan_with_infj   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   Zdatetime_seriesr   msgr   r"   r"   r#   +test_replace_listlike_value_listlike_targett   s   z=TestSeriesReplace.test_replace_listlike_value_listlike_targetc                 C   s   t dtjdddg}| }d}tjt|d |tjg}W d    n1 s*w   Y  t	|| t dtjdddg}| }tjt|d |tj}W d    n1 s\w   Y  t	|| d S )Nr   r   r   r*   PSeries.replace without 'value' and with non-dict-like 'to_replace' is deprecatedrF   )
r   r   r   r&   Zffillr   assert_produces_warningFutureWarningr   r   )r   r   r    rN   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_rangerD   r%   locr   r   r   )r   r   r    r   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.   rU   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   sj  t g d}d}tjt|d |g d}W d    n1 s"w   Y  t|t g d | }tjt|d |jg ddd}W d    n1 sQw   Y  |d u s\J t|t g d | }d}d	}tj	t
|d/ tjt|d |jg ddd
d}W d    n1 sw   Y  |d u sJ W d    n1 sw   Y  t|| d S )NrI   rP   rF   rH   )r   r   r   r   r*   Tr,   zVInvalid fill method\. Expecting pad \(ffill\) or backfill \(bfill\)\. Got crash_cymbal4The 'method' keyword in Series.replace is deprecatedZcrash_cymbal)r-   method)r   r   r   rQ   rR   r   r   rD   rK   rL   rM   )r   r   msg2r   r^   r=   rN   Zmsg3r"   r"   r#   test_replace_with_single_list   s0   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   )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*   rj   )r   r
   r   rj   r   r*   r   r
   r   rT   )r   r
   r   rj   Tr   Tz1/1/2001z	1/10/2001Dfreq)      ?r   r   )r   r   r   Zaranger%   rW   r   r   r   tolistr   r   )r   ri   trveZdrr   r    r"   rh   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 )Nrt   T2u)rw   Frw   ru   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 )Nrt   TF)r   r   r   lenr   r   rx   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 )Nrt   Zasdbyes)ZasdfT)r|   Fr|   ru   rx   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d|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 sLJ |d	d
 dk sXJ t |d d  seJ |tj
dddddi}|d d dk s}J |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+   r   r0   r   r   r   r1   r2   r3   Tr,   )r   r   r   r8   r4   r5   r6   r   r9   r   r&   r   r:   r;   r   )r   r<   r   r?   r@   r=   r"   r"   r#   test_replace2  s4   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 )NrH   r   r   r*   r,   ru   )r   r-   r   r    r'   r"   r"   r#   test_replace_cascadeC  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_dtypeP  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_dictlikeW  s   
z2TestSeriesReplace.test_replace_with_empty_dictlikec                 C   :   t g d}|dtj}t g d}t|| d S NrH   r   r   r   r   r   r&   r   r   rx   r"   r"   r#   test_replace_string_with_number_     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   ru   )r   r^   r    r   r"   r"   r#   (test_replace_replacer_equals_replacementf  s   z:TestSeriesReplace.test_replace_replacer_equals_replacementc                 C   r   r   r   rx   r"   r"   r#    test_replace_unicode_with_numbern  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   rx   r"   r"   r#   $test_replace_mixed_types_with_stringu  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_categorical|  s   
	z*TestSeriesReplace.test_replace_categoricalzdata, data_expr   r   c)r   r   r   r   r   c                 C   s<   t j|dd}|jdddd t j|dd}t|| d S )Nr   r   r   r   T
to_replacevaluer-   ru   )r   dataZdata_expr   r    r"   r"   r#    test_replace_categorical_inplace  s   z2TestSeriesReplace.test_replace_categorical_inplacec                 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rV   r[   r   r/   r   Tr,   r   r
   )r   rW   r   r   rD   r   r   Zremove_unused_categoriesr   r   r   )r   Zdtir^   r   r    r   r=   Zfirst_valuer"   r"   r#   test_replace_categorical_single  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 )NrI   r   100000000000000000000)r   r
   r   r   r*   )r   r   100000000000000000001r
   )r   r
   r   ru   rx   r"   r"   r#   "test_replace_with_no_overflowerror  s   z4TestSeriesReplace.test_replace_with_no_overflowerrorzser, to_replace, exprH   r   r*   r   )r   r   3r   r   r   )r   r   r   c                 C   s.   t |}t |}||}t|| d S Nru   )r   r   r   r>   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   Tru   )r   r   r>   r   r   r    r"   r"   r#   test_replace_no_cast  s   

z&TestSeriesReplace.test_replace_no_castc              	   C   s   t g d}d}d}tjt|d/ tjt|d |dd  W d    n1 s,w   Y  W d    d S W d    d S 1 sDw   Y  d S )Nr   r   zc zZExpecting 'to_replace' to be either a scalar, array-like, dict or None, got invalid type.*rP   rF   c                 S   s   |   S r   )strip)r   r"   r"   r#   <lambda>  s    zCTestSeriesReplace.test_replace_invalid_to_replace.<locals>.<lambda>)	r   r   rK   rL   	TypeErrorr   rQ   rR   r   )r   r   rN   rc   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 boolrF   r   r/   )r   regex)r   r   to_framerK   rL   rM   r   )r   r   objrN   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 valuerF   r0   z<Series.replace cannot use dict-value and non-None to_replace)r   r   rK   rL   rM   r   )r   Zfixed_now_tsr   r   r   rN   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 )NrH   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  |  }d}tjt|d |j|d dd}W d    n1 s!w   Y  tj|d |d gt|dd   |jd}t	|| d	}tjt|d |j|d dd}W d    n1 s_w   Y  t
||   | }tjt|d |j|d dd
d}	W d    n1 sw   Y  |	d u sJ t	|| tjt|d |j|d dd
d}
W d    n1 sw   Y  |
d u sJ t
||   d S )Nra   rF   r
   pad)rb   r   r   r   z7The 'method' keyword in DataFrame.replace is deprecatedT)rb   r-   )r   r   rQ   rR   r   r   r   r   r   r   r   rD   )r   r   r!   Zmsg1r'   r    rc   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   r~   r   r   )r   Zany_numeric_ea_dtypeZarrr   r"   r"   r#   !test_replace_ea_dtype_with_method4  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   rk   r1   r   )	r   rW   Ztz_localizeZ	to_periodr   rC   r   r   r   )r   r   r   r   r   r"   r"   r#   %test_replace_datetimelike_with_methodE  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 )Nr   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_regexS  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   r~   r   r   r   )r   r   Zregex_mappingr   r>   r"   r"   r#   test_pandas_replace_na[  s   z(TestSeriesReplace.test_pandas_replace_naz,dtype, input_data, to_replace, expected_databoolre   r   r   )r
   r   r   r   皙?皙@g333333$@g     4@)r   r   ZFloat64r   r   r   r   r   rn   g@gffffff@g@g333333%@g4@Mz2020-05rl   z2020-06c                 C   s6   t j||d}||}t j||d}t|| d S )Nr   ru   )r   r   Z
input_datar   Zexpected_datar   r   r    r"   r"   r#   test_replace_dtypeh  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   Z	expected2Zser3Zres3Z	expected3r"   r"   r#   test_replace_string_dtype  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xyzru   r   r   r'   r    r"   r"   r#   )test_replace_string_dtype_list_to_replace     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   ru   r   r"   r"   r#   test_replace_string_dtype_regex  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)rn          @gˡE@g@r   rn   	   g      "@r   g      $@r   r   )r
   r   r   r*   r
   zInvalid valuerF   g      #@)	r   r   ZFloat64Dtyper   r   Z
Int64DtyperK   rL   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   ru   )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valuesrJ   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_typesrf   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   rf   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   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   Tr   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   rf   r   r    r   r"   r"   r#   #test_replace_numeric_column_with_na  s   z5TestSeriesReplace.test_replace_numeric_column_with_naN)D__name__
__module____qualname__r$   r(   rA   rE   rO   rS   rY   r_   r`   rd   rs   rv   ry   r{   r}   r   r   rK   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   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    6


+	&



 


	







r   )r   numpyr   rK   Zpandasr   Zpandas._testingZ_testingr   Zpandas.core.arraysr   r   r"   r"   r"   r#   <module>   s    