U
    _{fg                     @   s   d dl Zd dlZd dlm  m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dd Zdd	 Zejd
ddgdd ZdS )    N)
Categorical	DataFrameDatetimeIndexNaTPeriodIndexSeriesTimedeltaIndex	Timestamp
date_rangeto_datetime)_check_mixed_floatc                   @   s  e Zd Zdd Zej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"d#g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d0d1 Zd2d3 Zd4d5 Z d6d7 Z!d8d9 Z"ejd:e#e$gd;d< Z%ejd:e#e$gd=d> Z&d?d@ Z'dAdB Z(dCdD Z)dEdF Z*dGdH Z+dIdJ Z,dKdL Z-dMdN Z.dOdP Z/dQdR Z0dSdT Z1dUdV Z2ej3ejd(dWdWdWdXgdYdZ Z4d[d\ Z5d]d^ Z6d_S )`
TestFillNAc                 C   s&  t tjgd ttdtgtjddgd}dddg|_|d d  }|jddidd t d	gd dtddgdddgd}dddg|_t|| |st	|j
d d d
f |j
d d d
f stt	|j
d d df |j
d d df rt|s"t	|j
d d df |j
d d df s"td S )N      foo   )ABCr   Tinplace       @r   )r   npnanr   r	   columnsfillnatmassert_frame_equalshares_memoryilocAssertionError)selfusing_copy_on_writedforigexpected r&   e/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/pandas/tests/frame/methods/test_fillna.py*test_fillna_dict_inplace_nonunique_columns   s     $ ,,z5TestFillNA.test_fillna_dict_inplace_nonunique_columnsc                 C   s   t dt j}t|dd}|d jddd |rPt |d d df  sltn|d d df dk sltt|j	j
dkstt |j|std S )	N)(   2   F)copyr   Tr   r   )r   fullr   r   r   isnanallr    lenZ_mgrZarraysr   values)r!   r"   arrr#   r&   r&   r'   test_fillna_on_column_view.   s     z%TestFillNA.test_fillna_on_column_viewc              	   C   s"  |}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 sft|jdd}t |j|jd d df  st|j|jdd  df |j|jd df k std}tj	t
|d |  W 5 Q R X d	}tj	t
|d |jdd
d W 5 Q R X d S )N   r   r   padmethodz'Must specify a fill 'value' or 'method'matchz(Cannot specify both 'value' and 'method'ffill)r   r   locindexr   r/   r    r.   pytestraises
ValueError)r!   datetime_frametfZzero_filledpaddedmsgr&   r&   r'   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 )
Nr4      r   r   r   valuer6   r7   )r   r   r<   r=   r   )r!   float_string_framemfr&   r&   r'   test_fillna_mixed_typeT   s
    z!TestFillNA.test_fillna_mixed_typec                 C   sh   |j dddg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 )Nr   r   Dr   rG   r   rH   r   dtyper6   r7   )reindexr   r   r<   r=   r   r   )r!   Zmixed_float_framerK   resultr&   r&   r'   test_fillna_mixed_float\   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xrN   )r6   backfillTr8   r   r7   )r   rT   r   )r!   r#   mr&   r&   r'   test_fillna_emptyf   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 ddddgddddgddddgg}t|| |jddidd}t|| |d kstd S )Nabcr   r   Tr   )r   r   r   r   r   r   r    )r!   r#   rR   r%   Zreturn_valuer&   r&   r'   test_fillna_different_dtypem   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
   r   r      r   r4   i  )r   r   )r   r   r   limit)
r   r   randomrandnr   r   r+   r   r   r   r!   r#   r%   rR   r&   r&   r'   test_fillna_limit_and_value}   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Date2re   r   rf   rH   )	r   r   r	   r+   r   r<   r=   r   r   rc   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:00r6   r7   bfill)r   r	   r   r   r   r   )r!   r#   expr&   r&   r'   test_fillna_tzaware   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d
dddgd}t|| d S )N20130101   z
US/Eastern)periodstzr   r   r   r   r6   r7         ?r   )r   r
   r   r   r   r   r   r!   r#   rR   r%   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dddgd}ddtjdg}t||d}t ddddgdddgd}ddddg}t||d}t dddgdddgd}ddtjg}t||d}	t ddgdddgd}
ddg}t|
|d}|jdddd	}t|| d
}tjt	|d |jdddd	 W 5 Q R X |jdd}t|| |j
dgd}t||	 |
 }t|| t tjdtjgddgd}t|dddgd}t dddgddgd}t|dddgd}|d}t|| d S )Nr   r   r   )
categoriesrY   rZ   dcatsvalsrH   z3Cannot setitem on a Categorical with a new categoryr9   rl   r[   r6   r7   rv   )Zsubset)r   r   r   r   r   r   r   r>   r?   	TypeErrorZdropna)r!   catrw   r#   cat2Zvals2Zdf_exp_fillZcat3Zvals3Zdf_exp_drop_catsZcat4Zvals4Zdf_exp_drop_allresrD   r[   Zcat_expdf_expr&   r&   r'   test_na_actions_categorical   s:    
z&TestFillNA.test_na_actions_categoricalc           
      C   sd  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dddg|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 )Nr   ru   r   categoryrO   z2011-01-01 09:00z2016-01-01 23:45rY   rH   z2011-01M)freqz1 daysz2 days)r   r   r   r   r   r   r   r   rv   assert_series_equalrw   r   r   r   r   )
r!   ry   valr#   Zmedianr{   Zv_expr|   rR   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 )NrY   rp   r   inferZdowncastr   r   r   r   r   r   r   rq   r&   r&   r'   test_fillna_downcast  s    zTestFillNA.test_fillna_downcastc                 C   s0   |dddgdd}|j ddd}t|| d S )	Nr   r   r   objectrO    Fr   )r   r   assert_equal)r!   frame_or_seriesobjrR   r&   r&   r'   test_fillna_downcast_false  s    z%TestFillNA.test_fillna_downcast_falsec           	      C   s   |dddgt jd}|jdt t jd}|t j}t|| |t j}|jddd}|}t|| |jdt t jd}t|| d S )Nr   r   r   rO   r   r   r   )	r   int64r   rP   Zint32astyper   r   float64)	r!   r   r   r{   r%   obj2Zres2	expected2Zres3r&   r&   r'   test_fillna_downcast_noop%  s    z$TestFillNA.test_fillna_downcast_noopr   r   r   c              	   C   sX   t tjddg|d}td  |ddi}W 5 Q R X | }d|d< t|| d S )Nr   r   r=   r   r           )r   r   r   r   assert_produces_warningr   r+   r   )r!   r   r#   rR   r%   r&   r&   r'   -test_fillna_dictlike_value_duplicate_colnames8  s    z8TestFillNA.test_fillna_dictlike_value_duplicate_colnamesc                 C   s   t dddgdddddgd	}|j}ttd
gd dddddgd}t|| |d}t ddddgdddddgd	}t|| t t	dddgdd}|d}t dt	dddgd	}t|| d S )Nr   r   r   r   r   r   rl   r4   r   r   r=   r   )r=   r   rP   r   )
r   Zdtypesr   r   rP   r   r   r   r   rangerq   r&   r&   r'   test_fillna_dtype_conversionC  s    "

z'TestFillNA.test_fillna_dtype_conversionr   r   r   rp   c                 C   s@   t dtjgddgd}|tj|}||}t|| d S )Nr   rp   r   ro   )r   r   r   replacer   r   r   )r!   r   r#   r%   rR   r&   r&   r'   *test_fillna_dtype_conversion_equiv_replaceT  s    
z5TestFillNA.test_fillna_dtype_conversion_equiv_replacec                 C   s   t ddtjgtdddddd gdd	d gd
tdddd}|d}t dddgtddddddgdd	dgd
tdddd}t|| t ddtjgtdtdtgddd gdd	d gd
tdddd}|d}t dddgtdtddgdddgdd	dgd
tdddd}t|| d S )Nr,   rk   r   )rm   r   barZfoo2Zbar2r   r   r   rM   Z20130110r   ?z
2013-01-01z
2013-01-02)	r   r   r   r
   r   r   r   r	   r   rq   r&   r&   r'   test_fillna_datetime_columns[  sH    


	


	

	

	z'TestFillNA.test_fillna_datetime_columnsc                 C   sP   t j|j|jd d df< t j|j|jdd  df< t| |jdd d S )Nr4   r   r5   r;   r7   )r   r   r<   r=   r   r   r;   r   r!   rA   r&   r&   r'   
test_ffill  s     
zTestFillNA.test_ffillc                 C   sP   t j|j|jd d df< t j|j|jdd  df< t| |jdd d S )Nr4   r   r5   rh   r7   )r   r   r<   r=   r   r   rh   r   r   r&   r&   r'   
test_bfill  s     
zTestFillNA.test_bfillc                 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 Nr]   rl   r   r   r6   r4   )r8   r`   r7   r   rU   r   r   Zaranger   ra   rb   rQ   r   r   r   r   r   r!   r=   r#   rR   r%   r&   r&   r'   test_frame_pad_backfill_limit  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 )Nr]   rl   )r   r   ra   rb   r   intr   r   )r!   r#   r&   r&   r'   test_fillna_skip_certain_blocks  s    z*TestFillNA.test_fillna_skip_certain_blockstypec              	   C   sH   t tjdd|}d}tjt|d |jddd W 5 Q R X d S )Nr]   rl   zLimit must be greater than 0r9   r   r5   r_   	r   r   ra   rb   r   r>   r?   r@   r   r!   r   r#   rD   r&   r&   r'   test_fillna_positive_limit  s    z%TestFillNA.test_fillna_positive_limitc              	   C   sH   t tjdd|}d}tjt|d |jddd W 5 Q R X d S )Nr]   rl   zLimit must be an integerr9   r   g      ?r_   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|jd ddf< tj|jdd df< |jdd}||k	sRt|jddd	 t	|| |jddidd	}|d ksttj|jd ddf< tj|jdd df< |jd
d}||k	st|jd
dd t	|| d S )Nr]   rl   r   r   r   rH   TrI   r   r;   r7   rV   )
r   r   ra   rb   r   r<   r   r    r   r   r!   r#   r%   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 5 Q R X d S )Nr   r   r   rl   rY   rZ   r[   r   r4   )rY   rZ   rY   rZ   r^   )rY   rZ   rt   zcolumn by columnr9   )axis)r   r   r   r   r+   r   r   maxto_dictr>   r?   NotImplementedErrorrq   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dddddg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 )Nr   r   r   rl   r   ZVWXYZr   r]   rF      r)   r*   <   F   P   Z   r   r4   )rY   rZ   r   ZVWXuZ)r   r   r   listr   r   r   )r!   r#   Zdf2rR   r%   r&   r&   r'   test_fillna_dataframe  s.    
	
	z TestFillNA.test_fillna_dataframec                 C   s   t jdd}t j|d d d d df< t|}|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 )Nr]   r   r;   r   )r8   r   r6   r7      r   r4   )r   ra   rb   r   r   r   Tr   r   insertr   float)r!   r2   r#   rR   r%   r&   r&   r'   test_fillna_columns&  s    zTestFillNA.test_fillna_columnsc              	   C   s*   t jtdd |jdd W 5 Q R X d S )NZffilr9   r7   )r>   r?   r@   r   )r!   float_framer&   r&   r'   test_fillna_invalid_method4  s    z%TestFillNA.test_fillna_invalid_methodc              	   C   s   d}t jt|dd |ddg W 5 Q R X t jt|dd |d W 5 Q R X d}t jt|d |jd d d	f | W 5 Q R X d S )
NzA"value" parameter must be a scalar or dict, but you passed a "{}"r   r9   r   r   tuple)r   r   zP"value" parameter must be a scalar, dict or Series, but you passed a "DataFrame"r   )r>   r?   rx   formatr   r   )r!   r   rD   r&   r&   r'   test_fillna_invalid_value8  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sZtd S )
Nc                 S   s   g | ]}d t | qS )zCOL.)str).0ir&   r&   r'   
<listcomp>I  s     z9TestFillNA.test_fillna_col_reordering.<locals>.<listcomp>r4   r   r,   rF   )r=   r   datar;   r7   )	r   r   ra   Zrandr   r   r   tolistr    )r!   colsr   r#   filledr&   r&   r'   test_fillna_col_reorderingH  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 sht|d= |jg d}|jdd}d S )	Nr4   rF   r   rG   r   r   rH   rN   )r   r   r<   r=   r   r/   r    rQ   )r!   r   rJ   rK   r   Zempty_floatrR   r&   r&   r'   test_fill_cornerO  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 )Ncol1r   r   r   r   r   rq   r&   r&   r'   test_fillna_downcast_dict]  s    z$TestFillNA.test_fillna_downcast_dictc              	   C   s2  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d	dd	d	gddddtjdgtjd	tjtjgtddddgdddddddgd}t td	dd	d	gddtddd	dgddd	d	tjd	gtddddgdddddddgd}t|| t|| d S )Nr   r   r   rl   r   r4   ABCDrN   d   r   rI   r`   r   rO   r   r   )r   r   r   r   r   r   r   r   )r!   r#   rR   Zresult2r%   r   r&   r&   r'   "test_fillna_with_columns_and_limitd  s8    	
	

z-TestFillNA.test_fillna_with_columns_and_limitc                 C   sF   t tdd gtdd gd}| }|jtjdd t|| d S )Nz
2018-05-30z
2018-09-30)Zdate1Zdate2Tr   )r   r   r+   r   r   r   r   r   r   r&   r&   r'   test_fillna_datetime_inplace  s    

z'TestFillNA.test_fillna_datetime_inplacec                 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
}||k	sdt|jdd	ddd t|| d S )Nr   r   r   rl   r   r4   r   rN   r   r   T)r   rI   r`   r   )r   r   r   r   r   r    r   r   r   r&   r&   r'   0test_fillna_inplace_with_columns_limit_and_value  s    
z;TestFillNA.test_fillna_inplace_with_columns_limit_and_valuer,   rT   yc                 C   s   t tjdgtjdgd}| }|d d  }|j|dd t ddgddgd}t|| |rpt|| nt|| d S )Nr   r   Tr   r,   r         )r   r   r   r+   r   r   r   )r!   r   r"   r#   Zdf_origZresult_viewr%   r&   r&   r'   test_inplace_dict_update_view  s    z(TestFillNA.test_inplace_dict_update_viewc              	   C   s   t ddtjdtjgdtjtjddgdtjdddgtjddtjd	gd
}|jdddd}t ddddgddtjdgdtjddgddddgddddggddddgd}t|| d S )Nr4   r   r]   r^   r      r   r      )r   col2col3col4r*   )r`   r   g      @g      @g      (@g      I@r   rp   g      $@r         @g      2@r   r   r   r   rN   r   rq   r&   r&   r'   )test_single_block_df_with_horizontal_axis  s$    




z4TestFillNA.test_single_block_df_with_horizontal_axisc                 C   s   t tjddgddtjgddtjgd}t dddgdddgddtjgd}t|ddi| t|ddd	| t dddgddd
gddtjgd}t|ddd| d S )Nr   r   rp   ))rT   rY   rT   rZ   )r   r[   r   rT   r,   r   )rT   r   g       )r   rT   )r   r   r   r   r   r   )r!   Zpdfr%   r&   r&   r'   "test_fillna_with_multi_index_frame  s*    




z-TestFillNA.test_fillna_with_multi_index_frameN)7__name__
__module____qualname__r(   tdZ&skip_array_manager_not_yet_implementedr3   rE   rL   rS   rX   r\   rd   rg   rj   rr   r}   r   r   r   r   r>   mark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   Zskip_array_manager_invalid_testr   r   r   r&   r&   r&   r'   r      sb   

*$


,

#$r   c                  C   sf   t ddddgddddgddddggddd	d
gd} | jddd}|d}|   dksbtd S )Nr   rp   r   r   r   r   i1i2Zi3f1rN   r   r   )r   Zpivotr   Zisnasumr    )r#   Zdf_nonconsolrR   r&   r&   r'   !test_fillna_nonconsolidated_frame  s    




r   c               	   C   sr   t d d gd d ggddgd} td | jddddd	 W 5 Q R X t ddgddggddgd}t| | d S )
Nr   r   rN   Fr   r   ro   Tr   )r   r   r   r   r   )r#   r%   r&   r&   r'   test_fillna_nones_inplace  s    r   funcr6   rU   c              	   C   s8   t ddddgi}tt t||   W 5 Q R X d S )NrY   r   r   r   )r   r   r   FutureWarninggetattr)r   r#   r&   r&   r'   test_pad_backfill_deprecated  s    r   )numpyr   r>   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasr   r   r   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingr   Zpandas.tests.frame.commonr   r   r   r   r   r   r   r&   r&   r&   r'   <module>   s   0     X