o
    iMl                     @   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dS )
    N)
Categorical	DataFrameDatetimeIndexNaTPeriodIndexSeriesTimedeltaIndex	Timestamp
date_rangeto_datetime)_check_mixed_floatc                   @   s  e Zd Zej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!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d0d1 Zd2d3 Zd4d5 Z d6d7 Z!d8d9 Z"d:d; Z#d<d= Z$ejd>e%e&gd?d@ Z'ejd>e%e&gdAdB Z(dCdD Z)dEdF Z*dGdH Z+dIdJ Z,dKdL Z-dMdN Z.dOdP Z/dQdR Z0dSdT Z1dUdV Z2dWdX Z3dYdZ Z4d[d\ Z5ej6ejd(d]d]d]d^gd_d` Z7dadb Z8dcdd Z9deS )f
TestFillNAc                 C   s   t tjgd ttdtgtjddgd}g d|_|d d  }|jddidd	 t d
gd dtddgg dd}g d|_t|| |s^t	|j
d d df |j
d d df s^J t	|j
d d df |j
d d df rtJ |st	|j
d d df |j
d d df sJ d S d S )N      foo   ABC)r   r   r   r   Tinplace       @)r   r   r   r   )r   npnanr   r	   columnsfillnatmassert_frame_equalshares_memoryiloc)selfusing_copy_on_writedforigexpected r&   a/var/www/edux/Edux_v2/venv/lib/python3.10/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 jddd |r&t |d d df  s%J n|d d df dk s4J t|jj	dks>J t 
|j|sGJ d S )N)(   2   r   Tr   r   )r   fullr   r   r   isnanalllen_mgrarraysr   values)r!   r"   arrr#   r&   r&   r'   test_fillna_on_column_view/   s    z%TestFillNA.test_fillna_on_column_viewc                 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 s3J |jdd}t |j|jd d df  sLJ |j|jdd  df |j|jd df k sfJ d}tjt	|d |  W d    n1 s~w   Y  d	}tjt	|d |jdd
d W d    d S 1 sw   Y  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-   pytestraises
ValueError)r!   datetime_frametf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 )
Nr5      r   r   r   valuer7   r8   )r   r   r=   r>   r   )r!   float_string_framemfr&   r&   r'   test_fillna_mixed_typeT   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   r   Dr   rI   r   r   rJ   r   dtyper7   r8   )reindexr   r   r=   r>   r   r   )r!   mixed_float_framerM   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xrP   )r7   backfillTr9   r   r8   )r   rW   r   )r!   r#   mr&   r&   r'   test_fillna_emptyh   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 sEJ d S )Nabcr   r   )r\   r\   r   r\   )r]   r]   r   r]   )r^   r^   r   r^   Tr   r   r   r   r   r   r   )r!   r#   rU   r%   return_valuer&   r&   r'   test_fillna_different_dtypeo   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   r5   i  )r   r   )r   r   r   limit)
r   r   randomrandnr   r    copyr   r   r   r!   r#   r%   rU   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Date2rk   r   rl   rJ   )	r   r   r	   rh   r   r=   r>   r   r   ri   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:00r7   r8   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g d
d}t|| d S )N20130101   z
US/Eastern)periodstzr   r   r   r   r7   r8   )      ?r   r   r   )r   r
   r   r   r   r   r   r!   r#   rU   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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 sw   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 )Nr   r   r   r   r   r   )
categoriesr\   r]   dcatsvals)r   r   r   r   )r\   r]   r]   r{   rJ   z3Cannot setitem on a Categorical with a new categoryr:   rr   r^   r7   r8   r}   )subset)r\   r]   r\   )r   r   r   r   r   r   r   r?   r@   	TypeErrordropna)r!   catr~   r#   cat2vals2df_exp_fillcat3vals3df_exp_drop_catscat4vals4df_exp_drop_allresrF   r^   cat_expdf_expr&   r&   r'   test_na_actions_categorical   s<   
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 )Nr   r|   r   )r   r   r   categoryrQ   z2011-01-01 09:00z2016-01-01 23:45r\   rJ   z2011-01M)freqz1 daysz2 days)r   r   r   r   r   r   r   r   r}   assert_series_equalr~   r   r   r   r   )
r!   r   valr#   medianr   v_expr   rU   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 )Nr\   rv   r   inferdowncastr   r_   rw   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 )Nry   objectrQ    Fr   )r   r   assert_equal)r!   frame_or_seriesobjrU   r&   r&   r'   test_fillna_downcast_false"  s   z%TestFillNA.test_fillna_downcast_falsec           	      C   s   |g d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 )Nry   rQ   r   r   r   )	r   int64r   rR   int32astyper   r   float64)	r!   r   r   r   r%   obj2res2	expected2res3r&   r&   r'   test_fillna_downcast_noop(  s   z$TestFillNA.test_fillna_downcast_noopr   )r   r   r   r   c                 C   sl   t tjddg|d}td  |ddi}W d    n1 s!w   Y  | }d|d< t|| d S )Nr   r   r>   r   r           )r   r   r   r   assert_produces_warningr   rh   r   )r!   r   r#   rU   r%   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 )Nr   )r   r   r   rr   r5   r   r   r5   r>   r   r   r   r   r   )r>   r   rR   r   )
r   dtypesr   r   rR   r   r   r   r   rangerw   r&   r&   r'   test_fillna_dtype_conversionF  s   

z'TestFillNA.test_fillna_dtype_conversionr   r   r   rv   c                 C   s@   t dtjgddgd}|tj|}||}t|| d S )Nr   rv   r   ru   )r   r   r   replacer   r   r   )r!   r   r#   r%   rU   r&   r&   r'   *test_fillna_dtype_conversion_equiv_replaceW  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 )Nr+   rq   r   )rs   )r   barN)foo2bar2Nr   r   r   rO   20130110r   ?)r+   r   r   )r   r   r   )r   r   r   z
2013-01-01z
2013-01-02)	r   r   r   r
   r   r   r   r	   r   rw   r&   r&   r'   test_fillna_datetime_columns^  sH   



	

	


	
	z'TestFillNA.test_fillna_datetime_columnsc                 C   @   t j|d d d< t j|d dd < t| |jdd d S )Nr   r5   r6   r<   r8   )r   r   r   r   r<   r   r!   rB   r&   r&   r'   
test_ffill  
   zTestFillNA.test_ffillc                 C   l   t dg di}d}tjt|d |d}W d    n1 s!w   Y  t dg di}t|| d S )Nr\   ry   zSIn a future version of pandas all arguments of DataFrame.ffill will be keyword-onlyr:   r   )r   r   r   FutureWarningr<   r   r!   r#   rF   rU   r%   r&   r&   r'   test_ffill_pos_args_deprecation     z*TestFillNA.test_ffill_pos_args_deprecationc                 C   r   )Nr   r5   r6   rn   r8   )r   r   r   r   rn   r   r   r&   r&   r'   
test_bfill  r   zTestFillNA.test_bfillc                 C   r   )Nr\   ry   zSIn a future version of pandas all arguments of DataFrame.bfill will be keyword-onlyr:   r   )r   r   r   r   rn   r   r   r&   r&   r'   test_bfill_pos_args_deprecation  r   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 Nrb   rr   r   r   r7   r5   )r9   re   r8   r   rX   r   r   aranger   rf   rg   rS   r   r   r    r   r   r!   r>   r#   rU   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 )Nrb   rr   )r   r   rf   rg   r   intr   r   )r!   r#   r&   r&   r'   test_fillna_skip_certain_blocks  s   z*TestFillNA.test_fillna_skip_certain_blockstypec                 C   ^   t tjdd|}d}tjt|d |jddd W d    d S 1 s(w   Y  d S )Nrb   rr   zLimit must be greater than 0r:   r   r6   rd   	r   r   rf   rg   r   r?   r@   rA   r   r!   r   r#   rF   r&   r&   r'   test_fillna_positive_limit  
   "z%TestFillNA.test_fillna_positive_limitc                 C   r   )Nrb   rr   zLimit must be an integerr:   r   g      ?rd   r   r   r&   r&   r'   test_fillna_integer_limit  r   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s'J |jddd	 t|| |jddidd	}|d u sCJ tj|d d d< tj|d dd < |jd
d}||usaJ |jd
dd t|| d S )Nrb   rr   r   r   r   rJ   TrK   r   r<   r8   rY   )r   r   rf   rg   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 d    d S 1 s}w   Y  d S )Nr   r   r   rr   r\   r]   r^   r   r5   )r\   r]   r\   r]   rc   )r\   r]   r{   zcolumn by columnr:   )axis)r   r   r   r   rh   r   r   maxto_dictr?   r@   NotImplementedErrorrw   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 )Nr   r   r   rr   r   VWXYZr   rb   rH      r)   )r*   <   F   P   Z   r   r5   )r\   r]   r   VWXuZr   r   r   r   listr   r   r   )r!   r#   df2rU   r%   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 )Nrb   r   r<   r   )r9   r   r7   r8      r   r5   )r   r   rf   rg   r   r2   r   Tr   r   insertr   floatrw   r&   r&   r'   test_fillna_columnsA  s   zTestFillNA.test_fillna_columnsc                 C   s@   t jtdd |jdd W d    d S 1 sw   Y  d S )Nffilr:   r8   )r?   r@   rA   r   )r!   float_framer&   r&   r'   test_fillna_invalid_methodN  s   "z%TestFillNA.test_fillna_invalid_methodc                 C   s   d}t jt|dd |ddg W d    n1 sw   Y  t jt|dd |d W d    n1 s=w   Y  d}t jt|d |jd d d	f | W d    d S 1 scw   Y  d S )
NzA"value" parameter must be a scalar or dict, but you passed a "{}"r   r:   r   r   tuple)r   r   zP"value" parameter must be a scalar, dict or Series, but you passed a "DataFrame"r   )r?   r@   r   formatr   r    )r!   r   rF   r&   r&   r'   test_fillna_invalid_valueR  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s-J d S )
Nc                 S   s   g | ]}d t | qS )zCOL.)str).0ir&   r&   r'   
<listcomp>c  s    z9TestFillNA.test_fillna_col_reordering.<locals>.<listcomp>r5   r   r+   rH   )r>   r   datar<   r8   )r   r   rf   randr   r   r   tolist)r!   colsr   r#   filledr&   r&   r'   test_fillna_col_reorderingb  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 s4J |d= |jg d}|jdd}d S )	Nr5   rH   r   rI   r   r   rJ   rP   )r   r   r=   r>   r   r.   rS   )r!   r   rL   rM   r  empty_floatrU   r&   r&   r'   test_fill_corneri  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_   rw   r&   r&   r'   test_fillna_downcast_dictw  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 s(w   Y  t dg d	itd}t|| d S )
Nr\   r   r   r   rQ   ztIn a future version of pandas all arguments of DataFrame.fillna except for the argument 'value' will be keyword-onlyr:   r   )r   r   r   r   )	r   r   r   r   r   r   r   r   r   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 )Nr   r   r   rr   r   r5   ABCDrP   d   r   rK   re   )r	  r   r	  r	  r   rQ   )r   r   r5   rr   r   )r   r   r   r   r   )r   rr   r	  r   )r   r   r   r   r   r   r   r   )r!   r#   rU   result2r%   r   r&   r&   r'   "test_fillna_with_columns_and_limit  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)date1date2Tr   )r   r   rh   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
}||us2J |jdd	ddd t|| d S )Nr   r   r   rr   r   r5   r  rP   r	  r
  T)r   rK   re   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+   rW   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|| |r9t|| d S t|| d S )Nr   r  Tr   r+   r         )r   r   r   rh   r   r   r   )r!   r   r"   r#   df_orig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 g dddtjdgdtjddgg dg dgg d
d}t|| d S )Nr5   r   rb   rc   r      r   r      )r  col2col3col4r*   )re   r   )      @g      @g      (@      I@r   r  rv   )g      $@r  r   r  )r        @r   g      2@rP   r_   rw   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 g dg dddtjgd}t|ddi| t|dd	d
| t g dg dddtjgd}t|d	dd| d S )Nr   r  rv   ))rW   r\   rW   r]   )r  r^   )r  r   r  )rv   r   r  rW   r+   r   )rW   r   )rv   r   g       )r   rW   )r   r   r   r   r   r   )r!   pdfr%   r&   r&   r'   "test_fillna_with_multi_index_frame  s*   




z-TestFillNA.test_fillna_with_multi_index_frameN):__name__
__module____qualname__td&skip_array_manager_not_yet_implementedr(   r4   rG   rN   rV   r[   ra   rj   rm   rp   rx   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  r  r  r  skip_array_manager_invalid_testr  r  r"  r&   r&   r&   r'   r      sl    

	+$


,

#$r   c                  C   sV   t g dg dg dgg dd} | jddd}|d	}|   d	ks)J d S )
N)r   r   r   rv   )r   r   r   r   )r   r   r   r  )i1i2i3f1rP   r+  r,  r   r   )r   pivotr   isnasum)r#   df_nonconsolrU   r&   r&   r'   !test_fillna_nonconsolidated_frame  s   
r3  c                  C   s   t d d gd d ggddgd} td | jddddd	 W d    n1 s(w   Y  t ddgddggddgd}t| | d S )
Nr   r   rP   Fr   r   ru   Tr   )r   r   r   r   r   )r#   r%   r&   r&   r'   test_fillna_nones_inplace  s   r4  )numpyr   r?   pandas.util._test_decoratorsutil_test_decoratorsr&  pandasr   r   r   r   r   r   r   r	   r
   r   pandas._testing_testingr   pandas.tests.frame.commonr   r   r3  r4  r&   r&   r&   r'   <module>   s    0     ~