o
    d                     @   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 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isna)period_arrayc                   @   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copyZiloctmassert_series_equalr   Zassert_frame_equal)selfseriesfilledZfilled2expectedZdf r(   [/app/.heroku/python/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_methodA   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   )r5   r6   r6   r8   r9   )r5   r6   r8   r8   r9   backfill)r5   r6   g      @r8   r9   r   z'Must specify a fill 'value' or 'method'r+   )r
   r"   makeDateIndexr#   r   npNaNr<   r.   r/   r0   )r$   tsexpr2   r(   r(   r)   test_fillnaF   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   r6   r(   r   r   )r   r      r:   r;   )r
   r?   nanr   r"   r#   objectr$   s1s2resultr'   r(   r(   r)   test_fillna_nonscalarZ   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   r7   )r
   listr?   rE   r   r"   r#   rG   r(   r(   r)   test_fillna_alignsr   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?   rE   r   r"   r#   r$   serrJ   r'   r(   r(   r)   test_fillna_limity   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   rD   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|| | }d	|d
< t|| d S )N20130101
US/Easterntz
2013-01-01rF   r   TFZfoor   )r
   r   r   r   r"   r#   wherer!   )r$   rS   rJ   r'   ser2r(   r(   r)   test_fillna_consistency   s"   
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 )Nr6   r   inferZdowncastr   rQ   rR   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   rb   rc   r   )r   r   r   r   rD   )r   r   r   rD   rD         @r   )r   r   re   r   rD   )r   r   re   re   rD   )r   r   re   rD   rD   )r?   arangeastyperF   rE   r
   r   Zint64r"   r#   r-   r   rV   )r$   arrrS   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}|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~  )daysrm   i ʚ;zm8[ns]r   r   )r
   r   diffr   r   r   r"   assert_equalrg   rF   r?   Ztimedelta64r   rE   r-   r   )r$   frame_or_seriesrS   tdobjrJ   r'   ri   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   rk   rl   r   )r
   r   r?   rE   r-   r"   r#   r   rR   r(   r(   r)   test_datetime64_fillnaB  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   )rv   rv   rv   r=   r   )r
   r   r   r"   r#   )r$   rS   r'   rJ   r(   r(   r)   test_datetime64_fillna_backfille  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, ])rx   rz   ry   rz   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_fillnau  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   rB   r(   r(   r)   test_fillna_dt64tz_with_method?  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?   rE   r   r   r   r"   r#   rR   r(   r(   r)   test_fillna_pytimedeltaT  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   ri   rB   r(   r(   r)   test_fillna_period\  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   rk   rl   r   Z20130104)r
   r   r?   rE   r   r"   rp   r   )r$   rq   rS   rs   rJ   r'   r(   r(   r)   test_fillna_dt64_timestampe  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 )Nr6   r8   zabcdr   T)r   inplacer   )r
   r?   rE   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   rD   )r   r   r   r   r   r   r{   r;   r   rD   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?   rE   r
   r   r   r"   r#   r$   Z
fill_valueZexpected_outputdatarS   rB   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?   rE   r
   r   _valuesr.   r/   	TypeErrorr   r0   r   )r$   r   rS   catr2   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   r7   T)r   )r
   r?   rE   r   typer   r"   r#   r   Zto_numpymaskr_   )
r$   r   r   r   rS   Zfill_valuesrJ   r'   r   ri   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   r6   )r
   r?   rE   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   r0   str)r$   r1   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.   r/   r   r   )r$   rS   r2   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   r6   r7   )r=   r   r   r-   Nr+   r   )rP   r   )r
   joinr.   r/   r0   r   )r$   rS   r2   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   rA   r`   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_type>  s   

z9TestSeriesFillNA.test_fillna_categorical_accept_same_typeN)+__name__
__module____qualname__r*   r3   rC   rK   rO   rT   rY   ra   rd   rj   rt   ru   rw   r.   markparametrizer   r   r   r   r   r   r   r?   rE   r
   r   r   r   r   floatr"   ZALL_REAL_NUMPY_DTYPESr   r   r   r   r   r   r   r(   r(   r(   r)   r      s    %
$e#
 J	
"
	


r   c                   @   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 )Nr6   r8   r   r-   r   r   )r
   r?   rE   r   r<   r"   r#   )r$   rS   r&   r'   r(   r(   r)   test_fillna_bugR  s   zTestFillnaPad.test_fillna_bugc                 C   <   t g dtdd}tj|d< t| |jdd d S )Nr4   r:   r;   r   r-   r   )r
   r"   r>   r?   r@   r#   r-   r   r$   rA   r(   r(   r)   
test_ffill\     
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_dataa  s   z:TestFillnaPad.test_ffill_mixed_dtypes_without_missing_datac                 C   r   )Nr4   r:   r;   r   r   r   )r
   r"   r>   r?   r@   r#   r   r   r   r(   r(   r)   
test_bfillg  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|d	 sKJ t|d	 d S )
Nr6   r8   r   r   r   Tr   r   r   r   )r
   r?   rE   r   r   r"   r#   isnan)r$   r   r   r'   r(   r(   r)   test_pad_nanl  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   rP   r   r   r=   r   
r?   rf   r
   r   ZrandnZreindexr   rE   r"   r#   r$   r<   srJ   r'   r(   r(   r)   test_series_fillna_limitz  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$   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}|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_issuec                 C   s~   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|}|jdd}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   )r   r   maxr   r
   Z	to_periodr   r   r   r"   r#   )r$   ZdtirS   rh   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"   Zassert_produces_warningFutureWarning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   Q  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   r   r(   r(   r(   r)   <module>   s    0      <