o
    gO                     @   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 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                   @   sp  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ejdd Zejdd Zejejdddejdg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/d0 Z ejd1e!e"gd2d3 Z#ejd1e!e"gd4d5 Z$d6d7 Z%d8d9 Z&d:d; Z'd<d= Z(d>d? Z)d@dA Z*dBdC Z+dDdE Z,dFdG Z-dHdI Z.dJS )K
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 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   Ar   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tfzero_filledpaddedmsg r&   d/home/ubuntu/cloudmapper/venv/lib/python3.10/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      foor   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    mixed_float_framer/   resultr&   r&   r'   test_fillna_mixed_float4   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xr3   )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 sEJ d S )Nabc   r*   )rC   rC   r*   rC   )rD   rD   r*   rD   )rE   rE   r*   rE   T)r?   r   r   r   r   tmassert_frame_equal)r    r@   r:   expectedreturn_valuer&   r&   r'   test_fillna_different_dtypeF   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
      rF      r   r   i  )rF   r   )rN   rF      limit)
r   r   randomrandnr   iloccopyr   rH   rI   r    r@   rJ   r:   r&   r&   r'   test_fillna_limit_and_valueV   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Date2rY   r   rZ   r,   )	r   r   r	   rV   r   r   r   rH   rI   rW   r&   r&   r'   test_fillna_datelikeb   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   rH   rI   r   )r    r@   expr&   r&   r'   test_fillna_tzawareq   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tzrP   rF   r   r1   r   r   )      ?       @re   re   )r   r
   r   r   r   rH   rI   r    r@   r:   rJ   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 )NrP   rF   rN   rP   rF   rN   )
categoriesrC   rD   dcatsvals)rP   rF   rN   rN   )rC   rD   rD   rj   r,   z3Cannot setitem on a Categorical with a new categoryr   r`   rE   r   r   rl   )subset)rC   rD   rC   )r   r   r   r   r   rH   rI   r   r   r   dropna)r    catrm   r@   cat2vals2df_exp_fillcat3vals3df_exp_drop_catscat4vals4df_exp_drop_allresr%   rE   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 )NrF   rk   re   )rF   rF   rF   categoryr6   z2011-01-01 09:00z2016-01-01 23:45rC   r,   z2011-01M)freqz1 daysz2 days)r   r   r   r   r   r   rH   rI   rl   assert_series_equalrm   r   r   r   r   )
r    rp   valr@   medianrz   v_expr|   r:   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 )NrC   rd   r   inferdowncastrP   rG   rf   r&   r&   r'   test_fillna_downcast   s   zTestFillNA.test_fillna_downcastc                 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   r1   r5   )rP   rF   rN   r`   r   )r   r4   objectr   r   rP   rN   r   r1   float64)r   r4   r7   r   )
r   dtypesr   r   r7   rH   r   r   rI   rangerf   r&   r&   r'   test_fillna_dtype_conversion   s   

z'TestFillNA.test_fillna_dtype_conversionr    rP   rd   c                 C   s@   t dtjgddgd}|tj|}||}t|| d S )NrP   rd   re   rc   )r   r   r   replacer   rH   rI   )r    r   r@   rJ   r:   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 )Nr_   rN   )ra   )r*   barN)foo2bar2N)r   r1   r5   r2   20130110r   ?)r   r   r   )r*   r   r   )r   r   r   z
2013-01-01z
2013-01-02)	r   r   r   r
   r   rH   rI   r	   r   rf   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   r   r   r   r   )r   r   rH   rI   r   r   r    r!   r&   r&   r'   
test_ffillA  
   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 )NrC   rh   zSIn a future version of pandas all arguments of DataFrame.ffill will be keyword-onlyr   r   )r   rH   assert_produces_warningFutureWarningr   rI   r    r@   r%   r:   rJ   r&   r&   r'   test_ffill_pos_args_deprecationI     z*TestFillNA.test_ffill_pos_args_deprecationc                 C   r   )Nr   r   r   r\   r   )r   r   rH   rI   r\   r   r   r&   r&   r'   
test_bfillU  r   zTestFillNA.test_bfillc                 C   r   )NrC   rh   zSIn a future version of pandas all arguments of DataFrame.bfill will be keyword-onlyr   r   )r   rH   r   r   r\   rI   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 NrM   r`   r   rF   r   r   )r   rR   r   r   r=   rN   r   aranger   rS   rT   r8   r   r   rU   rH   rI   r    r   r@   r:   rJ   r&   r&   r'   test_frame_pad_backfill_limiti  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_limity  s   
z"TestFillNA.test_frame_fillna_limitc                 C   s(   t tjddt}|tj d S )NrM   r`   )r   r   rS   rT   astype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 )NrM   r`   zLimit must be greater than 0r   r   r   rQ   	r   r   rS   rT   r   r   r   r   r   r    r   r@   r%   r&   r&   r'   test_fillna_positive_limit  
   "z%TestFillNA.test_fillna_positive_limitc                 C   r   )NrM   r`   zLimit must be an integerr   r   g      ?rQ   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 )NrM   r`   rP   rN   r   r,   T)r-   r?   r   r   r>   )r   r   rS   rT   r   r   rH   rI   )r    r@   rJ   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 )NrP   rF   rN   r`   rC   rD   rE   r   r   )rC   rD   rC   rD   rO   )rC   rD   rj   zcolumn by columnr   )axis)r   r   r   r   rV   rH   rI   maxto_dictr   r   NotImplementedErrorrf   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 )NrP   rF   rN   r`   r   VWXYZr   rM   r)      (   )2   <   F   P   Z   r   r   )rC   rD   r*   VWXuZr   )r   r   r   listr   rH   rI   )r    r@   df2r:   rJ   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 )NrM   rF   r   rP   )r   r   r   r      r*   r   )r   r   rS   rT   r   valuesr   TrH   rI   insertr   floatrf   r&   r&   r'   test_fillna_columns  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   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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   rP   rF   tuple)rP   rF   zP"value" parameter must be a scalar, dict or Series, but you passed a "DataFrame"r   )r   r   	TypeErrorformatr   rU   )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s-J d S )
Nc                 S   s   g | ]}d t | qS )zCOL.)str).0ir&   r&   r'   
<listcomp>  s    z9TestFillNA.test_fillna_col_reordering.<locals>.<listcomp>r   r   r   r)   )r   r4   datar   r   )r   r   rS   randr   r   r4   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 s4J |d= |jg d}|jdd}d S )	Nr   r)   r*   r+   r   r   r,   r3   )r   r   r   r   r   r   r8   )r    r   r.   r/   r   empty_floatr:   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 )Ncol1rP   rF   int64r   rG   rf   r&   r&   r'   test_fillna_downcast_dict.  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 )
NrC   rP   rF   rN   r6   ztIn a future version of pandas all arguments of DataFrame.fillna except for the argument 'value' will be keyword-onlyr   r   )rP   rF   rN   r   )	r   r   r   r   rH   r   r   r   rI   r   r&   r&   r'    test_fillna_pos_args_deprecation5  s   z+TestFillNA.test_fillna_pos_args_deprecationN)/__name__
__module____qualname__r(   r0   r;   rB   rL   rX   r[   r^   rg   r}   r   td&skip_array_manager_not_yet_implementedr   r   r   markparametrizer   r   r   skip_array_manager_invalid_testr   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s(J d S )	N)rP   rP   rP   rd   )rF   rF   rF   re   )rN   rN   rN   g      @)i1i2i3f1r3   r   r   r   )r   pivotr   isnasum)r@   df_nonconsolr:   r&   r&   r'   !test_fillna_nonconsolidated_frameB  s   
r   )numpyr   r   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   r   r   r   r   r	   r
   pandas._testing_testingrH   pandas.tests.frame.commonr   r   r   r&   r&   r&   r'   <module>   s    ,    1