o
    iu                     @   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 G dd dZG dd dZdS )    )datetime	timedeltatimezoneN)
Categorical	DataFrameDatetimeIndexNaTPeriodSeries	Timedelta	Timestamp
date_rangeisnac                   @   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)dVdW Z*ejdXg dYdZg d[d\dZgfd\dZejd\gdZg d[d\dZg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   r   fillnavaluescopytmassert_series_equalr   assert_frame_equal)selfseriesfilledfilled2expecteddf r)   b/var/www/edux/Edux_v2/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_method@   s   "z,TestSeriesFillNA.test_fillna_value_or_methodc                 C   s   t g dtdd}t||jdd t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 slw   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/   r0   r1   )r#   tsexpr3   r)   r)   r*   test_fillnaE   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@   nanr   r    r!   objectr#   s1s2resultr'   r)   r)   r*   test_fillna_nonscalarY   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   bac)r   r   r8   )r
   listr@   rF   r   r    r!   rH   r)   r)   r*   test_fillna_alignsq   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 )NrM   r<   i  r   )limitr   r
   r@   rF   r   r    r!   r#   serrK   r'   r)   r)   r*   test_fillna_limitx   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   rG   rS   )r#   valsvalrU   rK   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|| tjtdd |jd	d
gtddddd}W d    n1 sEw   Y  t|| tjtdd |jd	d
gtddddd}W d    n1 spw   Y  t|| |d}t tddg}t|| |	 }d|d< t|| d S )N20130101
US/Easterntz
2013-01-01rG   r   zthe 'errors' keywordr,   TFignore)errorsfoor   )
r
   r   r   r   r    r!   assert_produces_warningFutureWarningwherer   )r#   rU   rK   r'   ser2r)   r)   r*   test_fillna_consistency   s2   
z(TestSeriesFillNA.test_fillna_consistencyc                 C   sp   t dtjg}|jddd}t ddg}t|| t dtjg}|jddidd}t ddg}t|| d S )Nr7   r   inferdowncastr   rS   rT   r)   r)   r*   test_fillna_downcast   s   z%TestSeriesFillNA.test_fillna_downcastc                 C   s0  t dt}t j|d< t|}|jddd}tt dt jd}t	|| |j
dd}tg dt jd}t	|| |jdd}tg dt jd}t	|| d|d	< tg d
t jd}|jddd}t	|| |j
dd}tg dt jd}t	|| |jdd}tg dt jd}t	|| d S )Nr;   r   ri   rj   r   )r   r   r   r   rE   )r   r   r   rE   rE         @r   )r   r   rm   r   rE   )r   r   rm   rm   rE   )r   r   rm   rE   rE   )r@   arangeastyperG   rF   r
   r   int64r    r!   r.   r   rX   )r#   arrrU   resr'   r)   r)   r*   -test_fillna_downcast_infer_objects_to_numeric   s,   
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	}d
}tj	t
|d$ tjt|d |d W d    n1 s_w   Y  W d    n1 snw   Y  |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 )Nr\   2013010220130103 9:01:01r   )secondsr   i~  )daysrv   zBvalue should be a 'Timedelta', 'NaT', or array of those. Got 'int'z5In a future version, this will cast to a common dtyper,   i ʚ;zm8[ns]r   r   )r
   r   diffr   r   r   r    assert_equalr/   r0   	TypeErrorrd   re   r@   timedelta64r   rF   r.   r   )	r#   frame_or_seriesrU   tdobjrK   r'   r3   wmsgr)   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 )Nr\   rt   ru   r   )r
   r   r@   rF   r.   r    r!   r   rT   r)   r)   r*   test_datetime64_fillnaI  s4   
z'TestSeriesFillNA.test_datetime64_fillnac                 C   sl   d}t jt|d tttdg}W d    n1 sw   Y  tg ddd}|jdd}t || d S )	Nz containing strings is deprecatedr,   2013-08-05 15:30:00.000001)r   r   r   r   r   r>   r   )r    rd   re   r
   r   r   r!   )r#   r3   rU   r'   rK   r)   r)   r*   test_datetime64_fillna_backfillm  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jtdd |tddd}W d    n	1 s?w   Y  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^   AAAr   z2011-01-04 10:00r   r   zdatetime64[ns, ])r   r   r   r   r\   r`   mismatched timezoner,   
US/Pacific)r
   r   r   r   r    r!   r   rG   r   r   to_pydatetimerd   re   )r#   r_   rU   null_locrK   r'   idxr)   r)   r*   test_datetime64_tz_fillna  s8  


	



		


	















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#   rU   rC   r)   r)   r*   test_fillna_dt64tz_with_methodI  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@   rF   r   r   r   r    r!   rT   r)   r)   r*   test_fillna_pytimedelta^  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#   rU   rr   rC   r)   r)   r*   test_fillna_periodf  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 )Nr\   rt   ru   r   20130104)r
   r   r@   rF   r   r    ry   r   )r#   r|   rU   r~   rK   r'   r)   r)   r*   test_fillna_dt64_timestampo  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@   
datetime64r   r    r!   )r#   rU   rZ   rK   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@   rF   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@   rF   r
   r   r   r    r!   r#   
fill_valueexpected_outputdatarU   rC   rK   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@   rF   r
   r   _valuesr/   r0   rz   r   r1   r   )r#   r   rU   catr3   msg2r)   r)   r*   test_fillna_categorical_raises  s6   "z/TestSeriesFillNA.test_fillna_categorical_raisesr   float32rX   	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@   rF   r   typer   r    r!   r   to_numpymaskrf   )
r#   r   r   r   rU   fill_valuesrK   r'   r   rr   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@   rF   r   r   r    r!   rT   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 )N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}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 sDw   Y  d S )
Nd   2   r   r,   r   r   r   )r   r   )r
   r@   randomrandintr/   r0   rz   r   )r#   rU   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   )rR   r   )r
   joinr/   r0   r1   r   )r#   rU   r3   rR   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jtdd ||}W d    n1 sPw   Y  t |d ||d gtd}t	|| d S )N2020r   UTC)periodsr_   r   i  r   tzinfor   r   r^   zdateutil/US/Pacificr   r   r,   r   r   )r
   r   r   r   r   r   r   utcr    r!   r   r   
tz_convertr   kindrd   re   rG   )r#   rU   r'   rK   rB   rg   r)   r)   r*   +test_fillna_datetime64_with_timezone_tzinfo5  s   z<TestSeriesFillNA.test_fillna_datetime64_with_timezone_tzinfoc                 C   sv   t dddtjgtd}d}tjt|d |dd d }W d    n1 s&w   Y  t g dtd}t|| d S )	Nr   r   r   r   zqIn a future version of pandas all arguments of Series.fillna except for the argument 'value' will be keyword-onlyr,   r   )r   r   r   r   )	r
   r@   rF   floatr    rd   re   r   r!   )r#   srsr3   rK   r'   r)   r)   r*    test_fillna_pos_args_deprecationL  s   z1TestSeriesFillNA.test_fillna_pos_args_deprecationz7input, 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    assert_categorical_equal)
r#   inputinput_fillnaexpected_dataexpected_categoriesr   rU   r%   rK   r'   r)   r)   r*   (test_fillna_categorical_accept_same_typeX  s   

z9TestSeriesFillNA.test_fillna_categorical_accept_same_typeN),__name__
__module____qualname__r+   r4   rD   rL   rQ   rV   r[   rh   rl   rs   r   r   r   r/   markparametrizer   r   r   r   r   r   r   r@   rF   r
   r   r   r   r   r   r    ALL_REAL_NUMPY_DTYPESr   r   r   r   r   r   r   r   r)   r)   r)   r*   r      s    %
$$f$
 I	
"
	


r   c                   @   sd   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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@   rF   r   r=   r    r!   )r#   rU   r%   r'   r)   r)   r*   test_fillna_bugl  s   zTestFillnaPad.test_fillna_bugc                 C   <   t g dtdd}tj|d< t| |jdd d S )Nr5   r;   r<   r   r.   r   )r
   r    r?   r@   rA   r!   r.   r   r#   rB   r)   r)   r*   
test_ffillv     
zTestFillnaPad.test_ffillc                 C   d   t g d}d}tjt|d |d}W d    n1 sw   Y  t g d}t|| d S )Nr   r   r   zPIn a future version of pandas all arguments of Series.ffill will be keyword-onlyr,   r   )r
   r    rd   re   r.   r!   r#   rU   r3   rK   r'   r)   r)   r*   test_ffill_pos_args_deprecation{     z-TestFillnaPad.test_ffill_pos_args_deprecationc                 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$   rK   r)   r)   r*   ,test_ffill_mixed_dtypes_without_missing_data  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*   
test_bfill  r   zTestFillnaPad.test_bfillc                 C   r   )Nr   zPIn a future version of pandas all arguments of Series.bfill will be keyword-onlyr,   r   )r
   r    rd   re   r   r!   r   r)   r)   r*   test_bfill_pos_args_deprecation  r   z-TestFillnaPad.test_bfill_pos_args_deprecationc                 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|d	 sKJ t|d	 d S )
Nr7   r9   r   r   r   Tr   r   r   r   )r
   r@   rF   r   r   r    r!   isnan)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 |}|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   rR   r   r   r>   r   
r@   rn   r
   r   randnreindexr   rF   r    r!   r#   r=   srK   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 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   sH   t tjddd}|jddd}|d u sJ t|jddd| d S )Nr   r   r   r.   Tr   F)r
   r@   r   r   r   r    r!   )r#   rU   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}|jdd	}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)   r)   r*   $test_datetime64tz_fillna_round_issue  s   z2TestFillnaPad.test_datetime64tz_fillna_round_issueN)r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r)   r)   r)   r*   r   k  s    
r   )r   r   r   numpyr@   r/   r   pandasr   r   r   r   r	   r
   r   r   r   r   pandas._testing_testingr    r   r   r)   r)   r)   r*   <module>   s    0      W