o
    TiH                     @   s   d dl m Z mZmZ d dlZd dlZd dlZd dlmZm	Z	m
Z
mZmZmZmZmZmZmZ d dlmZ d dlmZ ejdG dd dZejdG d	d
 d
ZdS )    )datetime	timedeltatimezoneN)
Categorical	DataFrameDatetimeIndexNaTPeriodSeries	Timedelta	Timestamp
date_rangeisna)period_arrayzJignore:(Series|DataFrame).fillna with 'method' is deprecated:FutureWarningc                   @   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ejdddgdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zejd,d-g d.fd-d/d/d0g d1fd2d-id-d-d/ejejgfd-d/d3d-d-d/d/ejgfed-d-ejd/ejejgfed-d2gd4d-d-d/ejejgfed-d/d3d-d-d/d/ejgfed-d/gd5d6gd4d-ejd/d-d/gfgd7d8 Zejd,eg d9g d:feg d;g d<feeg d;g d=d>g d<fgd?d@ ZdAdB Z ejdCe!dDdEgejdFe"j#ejdGdHdIgdJdK Z$dLdM Z%dNdO Z&dPdQ Z'dRdS Z(dTdU Z)ejdVg dWdXg dYdZdXgfdZdXejdZgdXg dYdZdXgfgd[d\ Z*d]S )^TestSeriesFillNAc                 C   s`  t dddtjgdd}|jdd}|j|jd d}| }|jd |jd	< t|| t|| t	d
|i}|jdd}|j|jd d}t	d
|i}t
|| t
|| t tjdddgdd}|jdd}|j|d d}| }|d |d< t|| t|| t	d
|i}|jdd}|j|d d}t	d
|i}t
|| t
|| d S )Nr         M8[ns]dtypepadmethodvalue   Abfill)r
   r   _valuefillnavaluescopyiloctmassert_series_equalr   Zassert_frame_equal)selfseriesfilledZfilled2expectedZdf r)   g/var/www/html/evchargy.com/venv/lib/python3.10/site-packages/pandas/tests/series/methods/test_fillna.pytest_fillna_nat   s4   z TestSeriesFillNA.test_fillna_natc                 C   sF   d}t jt|d |jddd W d    d S 1 sw   Y  d S )Nz(Cannot specify both 'value' and 'method'matchr   ffill)r   r   )pytestraises
ValueErrorr   )r%   datetime_seriesmsgr)   r)   r*   test_fillna_value_or_methodD   s   "z,TestSeriesFillNA.test_fillna_value_or_methodc                 C   s   t g dtdd}t||jdd tj|jd< t g d|jd}t|jdd| t g d|jd}t|jd	d| t g d
|jd}t|jdd| d}t	j
t|d |  W d    d S 1 smw   Y  d S )N              ?       @      @      @   indexr.   r   r   )r6   r7   r7   r9   r:   )r6   r7   r9   r9   r:   backfill)r6   r7   g      @r9   r:   r   z'Must specify a fill 'value' or 'method'r,   )r
   r#   makeDateIndexr$   r   npnanr"   r=   r/   r0   r1   )r%   tsexpr3   r)   r)   r*   test_fillnaI   s   
"zTestSeriesFillNA.test_fillnac                 C   s$  t tjg}t dg}||}t dg}t|| |i }t|| |t dtd}t|| ||}t|| |ddi}t|| |ddi}t|t tjg |ddd}t|| |t ddd}t|| |t dddddgd	}t|| d S )
Nr   r7   r)   r   r   )r   r      r;   r<   )r
   r@   rA   r   r#   r$   objectr%   s1s2resultr(   r)   r)   r*   test_fillna_nonscalar]   s*   




z&TestSeriesFillNA.test_fillna_nonscalarc                 C   sT   t g dtd}t dtjdgtd}||}t g dtd}t|| d S )Nr   r   r   abcr   r   Zbac)r   r   r8   )r
   listr@   rA   r   r#   r$   rG   r)   r)   r*   test_fillna_alignsu   s
   
z#TestSeriesFillNA.test_fillna_alignsc                 C   s|   t tjg dd}|jddd}t dtjtjgg dd}t|| |jddd}t ddtjgg dd}t|| d S )NrL   r<   i  r   )limitr   r
   r@   rA   r   r#   r$   r%   serrJ   r(   r)   r)   r*   test_fillna_limit|   s   z"TestSeriesFillNA.test_fillna_limitc                 C   s\   g d}|D ]%}t ddtjtjdgdd}||}t dd||dgdd}t|| qd S )N)0z1.5z-0.3r   r   rE   float64r   rF   rQ   )r%   valsvalrS   rJ   r(   r)   r)   r*   test_fillna_dont_cast_strings   s   
z.TestSeriesFillNA.test_fillna_dont_cast_stringsc                 C   s  t tdtg}|tddd}t tdtdddgdd}t|| |ddgtddd}t|| |ddgtddd}t|| |d	}t tdd	g}t|| | }tjt	d
d d	|d< W d    n1 svw   Y  t|| d S )N20130101
US/Easterntz
2013-01-01rF   r   TFZfoozincompatible dtyper,   r   )
r
   r   r   r   r#   r$   wherer!   assert_produces_warningFutureWarning)r%   rS   rJ   r(   ser2r)   r)   r*   test_fillna_consistency   s&   

z(TestSeriesFillNA.test_fillna_consistencyc                 C   s   t dtjg}d}tjt|d |jddd}W d    n1 s"w   Y  t ddg}t|| t dtjg}tjt|d |jddidd}W d    n1 sUw   Y  t ddg}t|| d S )Nr7   .The 'downcast' keyword in fillna is deprecatedr,   r   inferZdowncastr   )r
   r@   rA   r#   r`   ra   r   r$   )r%   rS   r3   rJ   r(   r)   r)   r*   test_fillna_downcast   s   z%TestSeriesFillNA.test_fillna_downcastc                 C   s^  t dt}t j|d< t|}d}tjt|d |j	ddd}W d    n1 s,w   Y  tt dt j
d}t|| d}tjt|d |jdd}W d    n1 s[w   Y  tg d	t j
d}t|| d
}tjt|d |jdd}W d    n1 sw   Y  tg dt j
d}t|| d|d< tg dt jd}d}tjt|d |j	ddd}W d    n1 sw   Y  t|| d}tjt|d |jdd}W d    n1 sw   Y  tg dt jd}t|| d
}tjt|d |jdd}W d    n	1 sw   Y  tg dt jd}t|| d S )Nr;   r   rd   r,   re   rf   r   z-The 'downcast' keyword in ffill is deprecated)r   r   r   r   rE   z-The 'downcast' keyword in bfill is deprecated)r   r   r   rE   rE         @r   )r   r   rh   r   rE   )r   r   rh   rh   rE   )r   r   rh   rE   rE   )r@   arangeastyperF   rA   r
   r#   r`   ra   r   Zint64r$   r.   r   rV   )r%   arrrS   r3   resr(   r)   r)   r*   -test_fillna_downcast_infer_objects_to_numeric   sP   
z>TestSeriesFillNA.test_fillna_downcast_infer_objects_to_numericc                 C   s\  t tdtdtdtdg}| }||}|tdd}t tdtdtdtdddg}||}t|| |d}|t	d}t|| |tdd}t tddtdtdtdddg}||}t|| |tddd}t tdddtdtdtdddg}||}t|| |t
d	}t tddtdtdtdddg}||}t|| |t}t ttdtdtdddgd
d}||}t|| t
j|d< ||}| }|tdd}t
j|d< ||}t|| t
j|d< ||}| }|tdd}tddd|d< ||}t|| d S )NrZ   2013010220130103 9:01:01r   )secondsr   i~  )daysrp   i ʚ;zm8[ns]r   r   )r
   r   diffr   r   r   r#   assert_equalrj   rF   r@   Ztimedelta64r   rA   r.   r   )r%   frame_or_seriesrS   tdobjrJ   r(   rl   r)   r)   r*   test_timedelta_fillna   s   







	


z&TestSeriesFillNA.test_timedelta_fillnac                 C   s   t tdtdtdtdg}tj|d< | }t tdtdtdtdg}t|| | }t tdtdtdtdg}t|| d S )NrZ   rn   ro   r   )r
   r   r@   rA   r.   r#   r$   r   rR   r)   r)   r*   test_datetime64_fillnaU  s4   
z'TestSeriesFillNA.test_datetime64_fillnac                 C   s>   t ttdgdd}t g ddd}|jdd}t|| d S )N2013-08-05 15:30:00.000001r   r   )ry   ry   ry   r>   r   )r
   r   r   r#   r$   )r%   rS   r(   rJ   r)   r)   r*   test_datetime64_fillna_backfillx  s   z0TestSeriesFillNA.test_datetime64_fillna_backfillr]   r[   z
Asia/Tokyoc                 C   s  t tdttdtg}t g d}|td}t tdtdtdtdg}t|| tt|| |td|d}t tdtd|dtdtd|dg}t|| tt|| |d}t tddtddgtd}t|| tt|| |td|dtdd	}t tdtd|dtdtdg}t|| tt|| |tdtdd	}t tdtdtdtdg}t|| tt|| tdtdtg|d}t |}|j	d
| dksJ tt|| |td}t td|dtdtd|dtdg}t|| tt|| |td|d}tg d|d}t |}t|| tt|| |td|d
 }tg d|d}t |}t|| tt|| |d}t td|ddtd|ddgtd}t|| tt|| |td|dtdd	}t td|dtd|dtd|dtdg}t|| tt|| |td|dtd|dd	}t td|dtd|dtd|dtd|dg}t|| tt|| |td}t td|dtdtd|dtdg}t|| tt|| |tddd}t td|dtddd|td|dtddd|g}t|| tt|| d S )N2011-01-01 10:002011-01-03 10:00)FTFT2011-01-02 10:00r\   ZAAAr   z2011-01-04 10:00r   r   zdatetime64[ns, ])r{   r}   r|   r}   rZ   r^   
US/Pacific)r
   r   r   r   r#   r$   r   rF   r   r   Zto_pydatetime
tz_convert)r%   r]   rS   Znull_locrJ   r(   idxr)   r)   r*   test_datetime64_tz_fillna  s4  


	



		


	













z*TestSeriesFillNA.test_datetime64_tz_fillnac                 C   st   t tdtg}t tdtdg}t|jdd| t ttdg}t tdtdg}t|jdd| d S )Nz2012-11-11 00:00:00+01:00r   r   r   )r
   r   r   r#   r$   r   )r%   rS   rC   r)   r)   r*   test_fillna_dt64tz_with_methodR  s   z/TestSeriesFillNA.test_fillna_dt64tz_with_methodc                 C   sL   t tjtdgddgd}|td}t tdddgd}t|| d S )Nz1 daysr   Br<   r   )r
   r@   rA   r   r   r   r#   r$   rR   r)   r)   r*   test_fillna_pytimedeltag  s   z(TestSeriesFillNA.test_fillna_pytimedeltac                 C   sh   t tdddtdddg}|tddd}t tdddtdddg}t|| |jdks2J d S )Nz2011-01Mfreqr   z2012-01z	Period[M])r
   r	   r   r#   r$   r   )r%   rS   rl   rC   r)   r)   r*   test_fillna_periodo  s
   z#TestSeriesFillNA.test_fillna_periodc                 C   s   t tdtdtdtdg}tj|d< ||}|td}t tdtdtdtdg}||}t|| |t}|}t|| d S )NrZ   rn   ro   r   Z20130104)r
   r   r@   rA   r   r#   rs   r   )r%   rt   rS   rv   rJ   r(   r)   r)   r*   test_fillna_dt64_timestampx  s,   

z+TestSeriesFillNA.test_fillna_dt64_timestampc                 C   sV   t tdttdg}tdd}||}t tdtdtdg}t|| d S )Nz
2010-01-01
2000-01-01z
1975-04-05ms)r
   r   r   r@   Z
datetime64r   r#   r$   )r%   rS   rX   rJ   r(   r)   r)   r*   test_fillna_dt64_non_nao  s   
z)TestSeriesFillNA.test_fillna_dt64_non_naoc                 C   s\   t tjdtjdtjgg d}| }|jddd}|d u s J |jdd}t|| d S )Nr7   r9   zabcdr   T)r   inplacer   )r
   r@   rA   r!   r   r#   r$   )r%   xyreturn_valuer(   r)   r)   r*   test_fillna_numeric_inplace  s   z,TestSeriesFillNA.test_fillna_numeric_inplacezfill_value, expected_outputr   )r   r   r   r   r   r   )r   r   rE   )r   r   r   r   r   r   r~   r<   r   rE   c                 C   sV   dt jdt jt jg}tt|ddgd}tt|ddgd}||}t|| d S )Nr   r   
categoriesr@   rA   r
   r   r   r#   r$   r%   Z
fill_valueZexpected_outputdatarS   rC   rJ   r)   r)   r*   test_fillna_categorical  s
   
z(TestSeriesFillNA.test_fillna_categoricalr   r   r   r   e)r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   c                 C   sV   dt jdt jt jg}tt|g dd}tt|g dd}||}t|| d S )Nr   r   r   r   r   r   r)   r)   r*   +test_fillna_categorical_with_new_categories  s
   
z<TestSeriesFillNA.test_fillna_categorical_with_new_categoriesc                 C   s  dt jdt jt jg}tt|ddgd}|j}d}tjt|d |d W d    n1 s0w   Y  d}tjt	|d |td W d    n1 sPw   Y  tjt|d |ddd W d    n1 sow   Y  d	}tjt|d |ddg W d    n1 sw   Y  d
}tjt|d |d W d    n1 sw   Y  d}tjt|d |t
dgdgd W d    d S 1 sw   Y  d S )Nr   r   r   z3Cannot setitem on a Categorical with a new categoryr,   r   z!Length of 'value' does not match.r~   C"value" parameter must be a scalar or dict, but you passed a "list"D"value" parameter must be a scalar or dict, but you passed a "tuple")r   r   zP"value" parameter must be a scalar, dict or Series, but you passed a "DataFrame")r@   rA   r
   r   _valuesr/   r0   	TypeErrorr   r1   r   )r%   r   rS   catr3   Zmsg2r)   r)   r*   test_fillna_categorical_raises  s6   "z/TestSeriesFillNA.test_fillna_categorical_raisesr   float32rV   	fill_typescalarTFc           
      C   s   t tjdg|d}t ddg|d}|r|jd}||}t ddg|d}t|| t tjdg|d}| 	 }|||< t|| t tjdg|d}|j
||dd t|| t tjdg|d}|| |}	t|	| d S )N333333?r   r   r8   T)r   )r
   r@   rA   r   typer   r#   r$   r   Zto_numpymaskr_   )
r%   r   r   r   rS   Zfill_valuesrJ   r(   r   rl   r)   r)   r*   test_fillna_float_casting  s"   
z*TestSeriesFillNA.test_fillna_float_castingc                 C   sD   t tjdgtjd}|ddi}t ddgtjd}t|| d S )Nr   r   r   r   r7   )r
   r@   rA   r   r   r#   r$   rR   r)   r)   r*    test_fillna_f32_upcast_with_dict  s   z1TestSeriesFillNA.test_fillna_f32_upcast_with_dictc              
   C   sJ   z	|j dd W d S  ty$ } zdt|v sJ W Y d }~d S d }~ww )NZffilr   )r   r1   str)r%   r2   instr)   r)   r*   test_fillna_invalid_method  s   z+TestSeriesFillNA.test_fillna_invalid_methodc                 C   s   t tjdddd}d}tjt|d |ddg W d    n1 s(w   Y  d}tjt|d |d	 W d    d S 1 sGw   Y  d S )
Nr   d   2   r   r,   r   r   )r   r   )	r
   r@   randomdefault_rngintegersr/   r0   r   r   )r%   rS   r3   r)   r)   r*   test_fillna_listlike_invalid$  s   "z-TestSeriesFillNA.test_fillna_listlike_invalidc              
   C   sp   t g d}dg d}dD ]&}dD ]!}tjt|d |jd||d W d    n1 s/w   Y  qqd S )	N)r   r   r   N|)z*Cannot specify both 'value' and 'method'\.zLimit must be greater than 0zLimit must be an integer)r   r7   r8   )r>   r   r   r.   Nr,   r   )rP   r   )r
   joinr/   r0   r1   r   )r%   rS   r3   rP   r   r)   r)   r*   $test_fillna_method_and_limit_invalid.  s   z5TestSeriesFillNA.test_fillna_method_and_limit_invalidc                 C   s   t tdddd}| }t|d< |tdddtjd}t	|| t
d	d
d}t |jd}|jjdks9J ||}t |d ||jj|d g|jd}t	|| d S )NZ2020r   UTC)periodsr]   r   i  r   tzinfor   r   r\   zdateutil/US/Pacificr   r   r   )r
   r   r!   r   r   r   r   utcr#   r$   r   r   r   r   kindr]   )r%   rS   r(   rJ   rB   rb   r)   r)   r*   +test_fillna_datetime64_with_timezone_tzinfo=  s   
z<TestSeriesFillNA.test_fillna_datetime64_with_timezone_tzinfoz7input, input_fillna, expected_data, expected_categories)r   r   Nr   r   )r   r   r   r   r   c           
      C   sF   t |}t||}||}||}t ||d}	t||	 d S )Nr   )r   r
   r   r#   Zassert_categorical_equal)
r%   inputZinput_fillnaZexpected_dataZexpected_categoriesr   rS   r'   rJ   r(   r)   r)   r*   (test_fillna_categorical_accept_same_typeQ  s   

z9TestSeriesFillNA.test_fillna_categorical_accept_same_typeN)+__name__
__module____qualname__r+   r4   rD   rK   rO   rT   rY   rc   rg   rm   rw   rx   rz   r/   markparametrizer   r   r   r   r   r   r   r@   rA   r
   r   r   r   r   floatr#   ZALL_REAL_NUMPY_DTYPESr   r   r   r   r   r   r   r)   r)   r)   r*   r      s    %
0e#
 J	
"
	


r   z>ignore:Series.fillna with 'method' is deprecated:FutureWarningc                   @   sv   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ejdddgdd ZdS )TestFillnaPadc                 C   s   t tjdtjdtjgg d}|jdd}t tjddddg|j}t|| |jdd}t ddddtjg|j}t|| d S )Nr7   r9   r   r.   r   r   )r
   r@   rA   r   r=   r#   r$   )r%   rS   r'   r(   r)   r)   r*   test_fillna_bugh  s   zTestFillnaPad.test_fillna_bugc                 C   >   t g dtdd}tj|jd< t| |jdd d S )Nr5   r;   r<   r   r.   r   )	r
   r#   r?   r@   rA   r"   r$   r.   r   r%   rB   r)   r)   r*   
test_ffillr     zTestFillnaPad.test_ffillc                 C   s2   t tdddtjddg}| }t|| d S )Ni  r   r   )r
   r   pytzr   r.   r#   r$   )r%   r&   rJ   r)   r)   r*   ,test_ffill_mixed_dtypes_without_missing_dataw  s   z:TestFillnaPad.test_ffill_mixed_dtypes_without_missing_datac                 C   r   )Nr5   r;   r<   r   r   r   )	r
   r#   r?   r@   rA   r"   r$   r   r   r   r)   r)   r*   
test_bfill}  r   zTestFillnaPad.test_bfillc                 C   s   t tjdtjdtjgg dtd}|jddd}|d u sJ t tjddddgg dtd}t|dd  |dd   t|jd	 sMJ t|jd	 d S )
Nr7   r9   r   r   r   Tr   r   r   r   )	r
   r@   rA   r   r   r#   r$   isnanr"   )r%   r   r   r(   r)   r)   r*   test_pad_nan  s   (zTestFillnaPad.test_pad_nanc                 C   s   t d}tt jdd|d}|d d |}|jddd}|d d |jdd}t j|dd < t	
|| |d	d  |}|jd
dd}|d	d  |jdd}t j|d d< t	
|| d S )N
   r   r<   r   r;   r   rP   r   r   r>   r   r@   ri   r
   r   r   Zstandard_normalZreindexr   rA   r#   r$   r%   r=   srJ   r(   r)   r)   r*   test_series_fillna_limit  s   
z&TestFillnaPad.test_series_fillna_limitc                 C   s   t d}tt jdd|d}|d d j|ddd}|d d |jdd}t j|dd < t	
|| |d	d  j|d
dd}|d	d  |jd
d}t j|d d< t	
|| d S )Nr   r   r<   r   r;   r   r   r   r   r>   r   r   r   r)   r)   r*   test_series_pad_backfill_limit  s   
z,TestFillnaPad.test_series_pad_backfill_limitc                 C   sN   t tjdddd}|jddd}|d u sJ t|jddd| d S )	Nr   r   r   r   r.   Tr   F)r
   r@   r   r   r   r   r#   r$   )r%   rS   r   r)   r)   r*   test_fillna_int  s   zTestFillnaPad.test_fillna_intc                 C   s   t tttdddddddtjdg}| }t tdddddddtjdtdddddddtjdtdddddddtjdg}t|| d S )Ni              i r   )r
   r   r   r   r   r   r#   r$   )r%   r   r'   r(   r)   r)   r*   $test_datetime64tz_fillna_round_issue  s   z2TestFillnaPad.test_datetime64tz_fillna_round_issuec                 C   sz   t tjtdd ddd}t|d}t|d< ttdtdtdtd	td
gdd}t|}| }t	
|| d S )Nr   )nanosecondsr;   ns)r   r   r   z2262-04-11 23:47:16.854775797z2262-04-11 23:47:16.854775798z2262-04-11 23:47:16.854775800z2262-04-11 23:47:16.854775801r   )r   r   maxr   r
   Z	to_periodr   r   r.   r#   r$   )r%   ZdtirS   rk   r(   r'   r)   r)   r*   test_fillna_parr  s"   
zTestFillnaPad.test_fillna_parrfuncr   r>   c                 C   sH   t g d}tt t||  W d    d S 1 sw   Y  d S )N)r   r   r   )r
   r#   r`   ra   getattr)r%   r   rS   r)   r)   r*   test_pad_backfill_deprecated  s   "z*TestFillnaPad.test_pad_backfill_deprecatedN)r   r   r   r   r   r   r   r   r   r   r   r   r   r/   r   r   r   r)   r)   r)   r*   r   d  s    
r   )r   r   r   numpyr@   r/   r   Zpandasr   r   r   r   r	   r
   r   r   r   r   Zpandas._testingZ_testingr#   Zpandas.core.arraysr   r   filterwarningsr   r   r)   r)   r)   r*   <module>   s*    0      L