a
    oÝEb²W  ã                   @   sn   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 d dlmZ d dlmZ G dd„ dƒZdd„ ZdS )é    N)	ÚCategoricalÚ	DataFrameÚDatetimeIndexÚNaTÚPeriodIndexÚSeriesÚTimedeltaIndexÚ	TimestampÚ
date_range)Ú_check_mixed_floatc                   @   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g d¢ddgg¡dd„ ƒZd d!„ Zej d"d#d$ejd%g¡d&d'„ ƒZd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zej d8e e!g¡d9d:„ ƒZ"ej d8e e!g¡d;d<„ ƒZ#d=d>„ Z$d?d@„ Z%dAdB„ Z&dCdD„ Z'dEdF„ Z(dGdH„ Z)dIdJ„ Z*dKdL„ Z+dMdN„ Z,dOdP„ Z-dQdR„ Z.dSdT„ Z/dUS )VÚ
TestFillNAc                 C   sL  |}t j|j|jd d… df< t j|j|jdd … df< | d¡}|j|jd d… df dk ¡ sfJ ‚|jdd�}t  |j|jd d… df ¡ ¡ s˜J ‚|j|jdd … df |j|jd df k ¡ sÌJ ‚d}tjt	|d�� | ¡  W d   ƒ n1 sü0    Y  d	}tjt	|d�� |jdd
d� W d   ƒ n1 �s>0    Y  d S )Né   ÚAéûÿÿÿr   Úpad©Úmethodz'Must specify a fill 'value' or 'method'©Úmatchz(Cannot specify both 'value' and 'method'Úffill)
ÚnpÚnanÚlocÚindexÚfillnaÚallÚisnanÚpytestÚraisesÚ
ValueError)ÚselfÚdatetime_frameÚtfZzero_filledÚpaddedÚmsg© r%   úf/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/frame/methods/test_fillna.pyÚtest_fillna_datetime   s    
$&*ÿ
&zTestFillNA.test_fillna_datetimec                 C   sT   |}t j|j|jdd… df< t j|j|jdd … df< |jdd� |jdd	� d S )
Nr   é   Úfooéöÿÿÿr   r   ©Úvaluer   r   )r   r   r   r   r   )r    Úfloat_string_frameÚmfr%   r%   r&   Útest_fillna_mixed_type)   s
    z!TestFillNA.test_fillna_mixed_typec                 C   sf   |j g d¢d�}tj|j|jdd … df< |jdd�}t|dd id� |jd	d
�}t|dd id� d S )N)r   ÚBÚD©Úcolumnsr*   r   r   r+   ÚC©Údtyper   r   )Úreindexr   r   r   r   r   r   )r    Zmixed_float_framer.   Úresultr%   r%   r&   Útest_fillna_mixed_float2   s    z"TestFillNA.test_fillna_mixed_floatc                 C   s8   t dgd�}dD ]"}|jj|dd� |jj|d� qd S )NÚxr2   )r   ÚbackfillT©r   Úinplacer   )r   r:   r   )r    ÚdfÚmr%   r%   r&   Útest_fillna_empty=   s    zTestFillNA.test_fillna_emptyc                 C   sŽ   t ddtjdgddtjdgddtjdggƒ}| ddi¡}t g d¢g d¢g d¢gƒ}t ||¡ |jddid	d
�}t ||¡ |d u sŠJ ‚d S )NÚaÚbÚcé   r)   )rA   rA   r)   rA   )rB   rB   r)   rB   )rC   rC   r)   rC   T)r=   ©r   r   r   r   ÚtmÚassert_frame_equal)r    r>   r8   ÚexpectedZreturn_valuer%   r%   r&   Útest_fillna_different_dtypeD   s    &ÿÿz&TestFillNA.test_fillna_different_dtypec                 C   st   t tj dd¡ƒ}tj|jdd…df< tj|jdd…df< | ¡ }d|jd< d|jd	< |jdd
d�}t 	||¡ d S )Né
   é   rD   é   r   r   iç  )rD   r   )rK   rD   é   ©Úlimit)
r   r   ÚrandomÚrandnr   ÚilocÚcopyr   rF   rG   ©r    r>   rH   r8   r%   r%   r&   Útest_fillna_limit_and_valueT   s    

z&TestFillNA.test_fillna_limit_and_valuec                 C   sl   t ttdƒgtdƒtgdœƒ}| ¡ }|d  |j|jd df ¡|d< |jd|d id�}t ||¡ d S )Nz2014-1-1z2013-1-1)ÚDateÚDate2rV   r   rW   r+   )	r   r   r	   rS   r   r   r   rF   rG   rT   r%   r%   r&   Útest_fillna_datelike`   s    

þÿ"zTestFillNA.test_fillna_datelikec                 C   s„   t dtdƒtgiƒ}t dtdƒtdƒgiƒ}t |jdd�|¡ t dttdƒgiƒ}t dtdƒtdƒgiƒ}t |jdd�|¡ d S )Nr   z2012-11-11 00:00:00+01:00r   r   Úbfill)r   r	   r   rF   rG   r   )r    r>   Úexpr%   r%   r&   Útest_fillna_tzawareo   s$    þÿÿþÿÿzTestFillNA.test_fillna_tzawarec                 C   s\   t tdddd�ddtjtjgdœƒ}|jdd	�}t tdddd�g d
¢dœƒ}t ||¡ d S )NÚ20130101é   z
US/Eastern)ÚperiodsÚtzrM   rD   ©r   r0   r   r   )ç      ð?ç       @rb   rb   )r   r
   r   r   r   rF   rG   ©r    r>   r8   rH   r%   r%   r&   Ú$test_fillna_tzaware_different_columnˆ   s    þÿþÿz/TestFillNA.test_fillna_tzaware_different_columnc                 C   sÎ  t dddtjgg d¢d�}ddtjdg}t||d	œƒ}t g d
¢g d¢d�}g d¢}t||d	œƒ}t g d¢g d¢d�}ddtjg}t||d	œƒ}	t ddgg d¢d�}
ddg}t|
|d	œƒ}|jddd	œd�}t ||¡ d}tjt	|d��" |jddd	œd� W d   ƒ n1 �s0    Y  |jdd�}t ||¡ |j
dgd�}t ||	¡ | 
¡ }t ||¡ t tjdtjgddgd�}t|g d¢d	œƒ}t g d¢ddgd�}t|g d¢d	œƒ}| d¡}t ||¡ d S )NrM   rD   rK   ©rM   rD   rK   )Ú
categoriesrA   rB   Úd©ÚcatsÚvals)rM   rD   rK   rK   )rA   rB   rB   rg   r+   z3Cannot setitem on a Categorical with a new categoryr   r]   rC   r   r   ri   )Zsubset)rA   rB   rA   )r   r   r   r   r   rF   rG   r   r   Ú	TypeErrorZdropna)r    Úcatrj   r>   Úcat2Zvals2Zdf_exp_fillZcat3Zvals3Zdf_exp_drop_catsZcat4Zvals4Zdf_exp_drop_allÚresr$   rC   Zcat_expÚdf_expr%   r%   r&   Útest_na_actions_categoricalš   s:    2
z&TestFillNA.test_na_actions_categoricalc           
      C   sb  t tjdtjgƒ}t tjtjtjgƒ}t||dœƒ}tdtjdœƒ}| |¡}tjtjtjg}tg d¢|dœdd�}t ||¡ |j tj¡}t 	||j¡ |j
 tj¡}t 	||j
¡ tdddttgƒ}	td	t |	ƒiƒ}t |jtd
�|¡ tdddttgdd�}	td	t |	ƒiƒ}t |jtd
�|¡ tdddttgƒ}	td	t |	ƒiƒ}t |jtd
�|¡ d S )NrD   rh   rb   )rD   rD   rD   Úcategoryr5   z2011-01-01 09:00z2016-01-01 23:45rA   r+   z2011-01ÚM)Úfreqz1 daysz2 days)r   r   r   r   r   r   rF   rG   ri   Úassert_series_equalrj   r   r   r   r   )
r    rl   Úvalr>   Zmedianrn   Zv_expro   r8   Úidxr%   r%   r&   Útest_fillna_categorical_nanÅ   s.    
ÿz&TestFillNA.test_fillna_categorical_nanc                 C   s€   t ddtjgiƒ}|jddd�}t dddgiƒ}t ||¡ t ddtjgiƒ}|jddidd�}t dddgiƒ}t ||¡ d S )NrA   ra   r   Zinfer©ZdowncastrM   rE   rc   r%   r%   r&   Útest_fillna_downcasté   s    zTestFillNA.test_fillna_downcastc                 C   s.   |g d¢dd�}|j ddd�}t ||¡ d S )Nre   Úobjectr5   Ú Frx   )r   rF   Zassert_equal)r    Zframe_or_seriesÚobjr8   r%   r%   r&   Útest_fillna_downcast_false÷   s    z%TestFillNA.test_fillna_downcast_falser3   )r   r   r0   r   c                 C   sl   t tjddg|d�}t d ¡� | ddi¡}W d   ƒ n1 sB0    Y  | ¡ }d|d< t ||¡ d S )Nr   rM   ©r   r3   r   g        )r   r   r   rF   Úassert_produces_warningr   rS   rG   )r    r3   r>   r8   rH   r%   r%   r&   Ú-test_fillna_dictlike_value_duplicate_colnamesý   s    ,z8TestFillNA.test_fillna_dictlike_value_duplicate_colnamesc                 C   s´   t g d¢g d¢d�}|j}tt d¡gd g d¢d�}t ||¡ | d¡}t dg d¢g d¢d�}t ||¡ t t	dƒd	d
gdd�}| d¡}t dt	dƒd	d
gd�}t ||¡ d S )N)r   r0   r4   )rM   rD   rK   r]   r   r~   rz   r   ©r   rM   rK   r   r0   Úfloat64)r   r3   r6   r   )
r   Zdtypesr   r   r6   rF   rt   r   rG   Úrangerc   r%   r%   r&   Útest_fillna_dtype_conversion  s    

z'TestFillNA.test_fillna_dtype_conversionru   r{   rM   ra   c                 C   s@   t dtjgddgdœƒ}| tj|¡}| |¡}t ||¡ d S )NrM   ra   rb   r`   )r   r   r   Úreplacer   rF   rG   )r    ru   r>   rH   r8   r%   r%   r&   Ú*test_fillna_dtype_conversion_equiv_replace  s    
z5TestFillNA.test_fillna_dtype_conversion_equiv_replacec                 C   s  t ddtjgtddd�g d¢g d¢dœtd	dd�d
�}| d¡}t g d¢tddd�g d¢g d¢dœtd	dd�d
�}t ||¡ t ddtjgtdƒtdƒtgg d¢g d¢dœtd	dd�d
�}| d¡}t g d¢tdƒtdƒdgg d¢g d¢dœtd	dd�d
�}t ||¡ d S )Néÿÿÿÿéþÿÿÿr\   rK   )r^   )r)   ÚbarN)Úfoo2Úbar2N©r   r0   r4   r1   Z20130110r�   ú?)r‡   rˆ   r�   )r)   r‰   r�   )rŠ   r‹   r�   z
2013-01-01z
2013-01-02)	r   r   r   r
   r   rF   rG   r	   r   rc   r%   r%   r&   Útest_fillna_datetime_columns   sH    

ü
ù	

ü
ù	
ü
ù	
ü
ù	z'TestFillNA.test_fillna_datetime_columnsc                 C   s@   t j|d d d…< t j|d dd …< t | ¡ |jdd�¡ d S )Nr   r   r   r   r   )r   r   rF   rG   r   r   ©r    r!   r%   r%   r&   Ú
test_ffillL  s
    ÿzTestFillNA.test_ffillc                 C   sl   t dg d¢iƒ}d}tjt|d�� | d¡}W d   ƒ n1 sB0    Y  t dg d¢iƒ}t ||¡ d S )NrA   re   zSIn a future version of pandas all arguments of DataFrame.ffill will be keyword-onlyr   r   )r   rF   r   ÚFutureWarningr   rG   ©r    r>   r$   r8   rH   r%   r%   r&   Útest_ffill_pos_args_deprecationT  s    ÿ(z*TestFillNA.test_ffill_pos_args_deprecationc                 C   s@   t j|d d d…< t j|d dd …< t | ¡ |jdd�¡ d S )Nr   r   r   rY   r   )r   r   rF   rG   rY   r   r�   r%   r%   r&   Ú
test_bfill`  s
    ÿzTestFillNA.test_bfillc                 C   sl   t dg d¢iƒ}d}tjt|d�� | d¡}W d   ƒ n1 sB0    Y  t dg d¢iƒ}t ||¡ d S )NrA   re   zSIn a future version of pandas all arguments of DataFrame.bfill will be keyword-onlyr   r   )r   rF   r   r‘   rY   rG   r’   r%   r%   r&   Útest_bfill_pos_args_deprecationh  s    ÿ(z*TestFillNA.test_bfill_pos_args_deprecationc                 C   sÀ   t  d¡}tt j dd¡|d�}|d d… j|ddd�}|d d…  |¡jdd�}t j|jd	d …< t	 
||¡ |d
d … j|ddd�}|d
d …  |¡jdd�}t j|jd d…< t	 
||¡ d S ©NrJ   r]   r�   rD   r   r   )r   rO   r   éýÿÿÿrˆ   r;   rK   ©r   Zaranger   rP   rQ   r7   r   r   rR   rF   rG   ©r    r   r>   r8   rH   r%   r%   r&   Útest_frame_pad_backfill_limitt  s    
z(TestFillNA.test_frame_pad_backfill_limitc                 C   sÐ   t  d¡}tt j dd¡|d�}|d d…  |¡}|jddd�}|d d…  |¡jdd�}t j|jd	d …< t	 
||¡ |d
d …  |¡}|jddd�}|d
d …  |¡jdd�}t j|jd d…< t	 
||¡ d S r–   r˜   r™   r%   r%   r&   Útest_frame_fillna_limit„  s    
z"TestFillNA.test_frame_fillna_limitc                 C   s(   t tj dd¡ t¡ƒ}| tj¡ d S )NrJ   r]   )r   r   rP   rQ   ÚastypeÚintr   r   )r    r>   r%   r%   r&   Útest_fillna_skip_certain_blocks–  s    z*TestFillNA.test_fillna_skip_certain_blocksÚtypec                 C   s\   t tj dd¡ƒ |¡}d}tjt|d�� |jddd� W d   ƒ n1 sN0    Y  d S )NrJ   r]   zLimit must be greater than 0r   r   r   rN   ©	r   r   rP   rQ   rœ   r   r   r   r   ©r    rŸ   r>   r$   r%   r%   r&   Útest_fillna_positive_limitž  s    z%TestFillNA.test_fillna_positive_limitc                 C   s\   t tj dd¡ƒ |¡}d}tjt|d�� |jddd� W d   ƒ n1 sN0    Y  d S )NrJ   r]   zLimit must be an integerr   r   g      à?rN   r    r¡   r%   r%   r&   Útest_fillna_integer_limit¦  s    z$TestFillNA.test_fillna_integer_limitc                 C   sà   t tj dd¡ƒ}tj|d d d…< tj|d dd …< |jdd�}||usNJ ‚|jddd	� t ||¡ |jddidd	�}|d u s†J ‚tj|d d d…< tj|d dd …< |jd
d�}||usÂJ ‚|jd
dd� t ||¡ d S )NrJ   r]   rM   rK   éüÿÿÿr   r+   T)r,   r=   r   r   r<   )r   r   rP   rQ   r   r   rF   rG   ©r    r>   rH   r%   r%   r&   Útest_fillna_inplace®  s    zTestFillNA.test_fillna_inplacec                 C   s  t tjddtjtjgdddtjtjgtjddddgdœƒ}| dddœ¡}| ¡ }|d	  d¡|d	< |d
  d¡|d
< t ||¡ | ddddœ¡}| | ¡ ¡}| | ¡  ¡ ¡}t ||¡ t	j
tdd��$ |j| d¡dd� W d   ƒ n1 sø0    Y  d S )NrM   rD   rK   r]   ©rA   rB   rC   r   r   )rA   rB   rA   rB   rL   )rA   rB   rg   zcolumn by columnr   )Úaxis)r   r   r   r   rS   rF   rG   ÚmaxÚto_dictr   r   ÚNotImplementedErrorrc   r%   r%   r&   Útest_fillna_dict_seriesÄ  s"    ýÿz"TestFillNA.test_fillna_dict_seriesc                 C   sÈ   t tjddtjtjgdddtjtjgtjddddgdœtdƒd�}t tjdd	d
dgg d¢dgd dœtdƒd�}| |¡}t tjddtjdgdddtjdgtjddddgdœtdƒd�}t ||¡ d S )NrM   rD   rK   r]   r§   ZVWXYZr�   rJ   r(   é   é(   )é2   é<   éF   éP   éZ   r‰   r   )rA   rB   r)   ZVWXuZr³   ©r   r   r   Úlistr   rF   rG   )r    r>   Zdf2r8   rH   r%   r%   r&   Útest_fillna_dataframeà  s.    ýú
ýú	
ýú	z TestFillNA.test_fillna_dataframec                 C   s–   t tj dd¡ƒ}tj|jd d …d d d…f< |jddd�}|jjdd�j}t 	||¡ | 
dd	d
¡ |jddd�}| t¡jddd�}t 	||¡ d S )NrJ   rD   r   rM   )r   r¨   r   r   é   r)   r   )r   r   rP   rQ   r   Úvaluesr   ÚTrF   rG   Úinsertrœ   Úfloatrc   r%   r%   r&   Útest_fillna_columns  s    zTestFillNA.test_fillna_columnsc                 C   s>   t jtdd�� |jdd� W d   ƒ n1 s00    Y  d S )NZffilr   r   )r   r   r   r   )r    Úfloat_framer%   r%   r&   Útest_fillna_invalid_method  s    z%TestFillNA.test_fillna_invalid_methodc                 C   sÒ   d}t jt| d¡d�� | ddg¡ W d   ƒ n1 s<0    Y  t jt| d¡d�� | d¡ W d   ƒ n1 sz0    Y  d}t jt|d��( |jd d …d	f  |¡ W d   ƒ n1 sÄ0    Y  d S )
NzA"value" parameter must be a scalar or dict, but you passed a "{}"rµ   r   rM   rD   Útuple)rM   rD   zP"value" parameter must be a scalar, dict or Series, but you passed a "DataFrame"r   )r   r   rk   Úformatr   rR   )r    r½   r$   r%   r%   r&   Útest_fillna_invalid_value  s    ,(ÿz$TestFillNA.test_fillna_invalid_valuec                 C   s^   dd„ t dddƒD ƒ}tj dd¡}tt dƒ||d�}|jdd	�}|j ¡ |j ¡ ksZJ ‚d S )
Nc                 S   s   g | ]}d t |ƒ ‘qS )zCOL.)Ústr)Ú.0Úir%   r%   r&   Ú
<listcomp>%  ó    z9TestFillNA.test_fillna_col_reordering.<locals>.<listcomp>r   r   r‡   r(   )r   r3   Údatar   r   )rƒ   r   rP   Zrandr   r   r3   Útolist)r    ÚcolsrÇ   r>   Úfilledr%   r%   r&   Útest_fillna_col_reordering$  s
    z%TestFillNA.test_fillna_col_reorderingc                 C   sŠ   |}t j|j|jdd… df< t j|j|jdd … df< |jdd�}|j|jdd… df dk ¡ shJ ‚|d= |jg d�}|jdd�}d S )	Nr   r(   r)   r*   r   r   r+   r2   )r   r   r   r   r   r   r7   )r    r½   r-   r.   rÊ   Zempty_floatr8   r%   r%   r&   Útest_fill_corner+  s    $zTestFillNA.test_fill_cornerc                 C   sH   t ddtjgiƒ}|jddiddid�}t dddgiƒ}t ||¡ d S )NZcol1rM   rD   Zint64rx   rE   rc   r%   r%   r&   Útest_fillna_downcast_dict9  s    z$TestFillNA.test_fillna_downcast_dictc                 C   s~   t ddddtjgitd�}d}tjt|d�� | dd d ¡}W d   ƒ n1 sP0    Y  t dg d	¢itd�}t ||¡ d S )
NrA   rM   rD   rK   r5   ztIn a future version of pandas all arguments of DataFrame.fillna except for the argument 'value' will be keyword-onlyr   r   )rM   rD   rK   r   )	r   r   r   r»   rF   r   r‘   r   rG   r’   r%   r%   r&   Ú test_fillna_pos_args_deprecation@  s    ÿ,z+TestFillNA.test_fillna_pos_args_deprecationc                 C   s  t tjdtjdgddtjdgtjtjtjdgtjdtjdggtdƒd�}|jdd	dd
�}|jdd	dd
�}t tg d¢dd�ddtjdgtjd	tjtjgtg d¢dd�dœg d¢d�}t tg d¢dd�tg d¢dd�d	d	tjd	gtg d¢dd�dœg d¢d�}t ||¡ t ||¡ d S )NrD   r   rK   r]   rM   r   ÚABCDr2   éd   ©r¨   r,   rO   )rÐ   rK   rÐ   rÐ   r‚   r5   )r   rM   r   r]   rŒ   )r   rM   rD   rK   r�   )rD   r]   rÐ   rK   )r   r   r   rµ   r   r   rF   rG   )r    r>   r8   Zresult2rH   Z	expected2r%   r%   r&   Ú"test_fillna_with_columns_and_limitL  s8    üù	üù	üù
z-TestFillNA.test_fillna_with_columns_and_limitc                 C   s†   t tjdtjdgddtjdgtjtjtjdgtjdtjdggtdƒd�}|jdd	dd
�}||usdJ ‚|jdd	ddd� t ||¡ d S )NrD   r   rK   r]   rM   r   rÏ   r2   rÐ   rÑ   T)r¨   r,   rO   r=   r´   r¥   r%   r%   r&   Ú0test_fillna_inplace_with_columns_limit_and_valuep  s    üù
z;TestFillNA.test_fillna_inplace_with_columns_limit_and_valueN)0Ú__name__Ú
__module__Ú__qualname__r'   r/   r9   r@   rI   rU   rX   r[   rd   rp   rw   ry   r}   r   ÚmarkZparametrizer€   r„   r   r   r†   rŽ   r�   r“   r”   r•   rš   r›   rž   r�   r»   r¢   r£   r¦   r¬   r¶   r¼   r¾   rÁ   rË   rÌ   rÍ   rÎ   rÒ   rÓ   r%   r%   r%   r&   r      sT   	+$


,

#$r   c                  C   sT   t g d¢g d¢g d¢gg d¢d�} |  dd¡}| d¡}| ¡  ¡  ¡ dksPJ ‚d S )	N)rM   rM   rM   ra   )rD   rD   rD   rb   )rK   rK   rK   g      @)Úi1Úi2Zi3Úf1r2   rØ   rÙ   r   )r   Zpivotr   ZisnaÚsum)r>   Zdf_nonconsolr8   r%   r%   r&   Ú!test_fillna_nonconsolidated_frameƒ  s    ýú
rÜ   )Únumpyr   r   Zpandasr   r   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingrF   Zpandas.tests.frame.commonr   r   rÜ   r%   r%   r%   r&   Ú<module>   s   ,    t