a
    d&v                     @   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!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"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}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|| |st	|j
d d df |j
d d df sJ t	|j
d d df |j
d d df rJ |st	|j
d d df |j
d d df sJ 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&   o/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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}|rxt " |d jddd W d    n1 sN0    Y  t |d d df  sJ n.|d jddd |d d df dk sJ t	|j
jdksJ t |j|sJ d S )	N)(   2   F)copyr   Tr   r   )r   fullr   r   r   Zraises_chained_assignment_errorr   isnanalllenZ_mgrZarraysr   values)r!   r"   arrr#   r&   r&   r'   test_fillna_on_column_view.   s    
0 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 sfJ d}tjt|d |jdd}W d    n1 s0    Y  t 	|j|jd d df  sJ |j|jdd  df |j|jd df k sJ d	}t
jt|d |  W d    n1 s00    Y  d
}t
jt|d |jddd W d    n1 sr0    Y  d S )N   r   r   ,DataFrame.fillna with 'method' is deprecatedmatchpadmethodz'Must specify a fill 'value' or 'method'z(Cannot specify both 'value' and 'method'ffill)r   r   locindexr   r/   r   assert_produces_warningFutureWarningr.   pytestraises
ValueError)r!   datetime_frametfZzero_filledmsgpaddedr&   r&   r'   test_fillna_datetime@   s"    
$*&*
(zTestFillNA.test_fillna_datetimec                 C   s   |}t j|j|jdd df< t j|j|jdd  df< |jdd d}tjt|d	 |jd
d W d    n1 sx0    Y  d S )Nr4      r   r   r   valuer6   r7   r9   r:   )r   r   r=   r>   r   r   r?   r@   )r!   float_string_framemfrF   r&   r&   r'   test_fillna_mixed_typeW   s    z!TestFillNA.test_fillna_mixed_typec                 C   s   |j g dd}tj|j|jdd  df< |jdd}t|dd id d	}tjt	|d
 |jdd}W d    n1 sz0    Y  t|dd id d S )N)r   r   Dr   rJ   r   r   rK   r   dtyper6   r7   r9   r:   )
reindexr   r   r=   r>   r   r   r   r?   r@   )r!   Zmixed_float_framerN   resultrF   r&   r&   r'   test_fillna_mixed_floata   s    *z"TestFillNA.test_fillna_mixed_floatc              	   C   sx   |rt d tdgd}dD ]T}d}tjt|d. |jj|dd |jj|d	 W d    q1 sh0    Y  qd S )
Nz9condition is unnecessary complex and is deprecated anywayxrQ   )r9   backfillz)Series.fillna with 'method' is deprecatedr7   Tr;   r   r:   )rA   skipr   r   r?   r@   rW   r   )r!   r"   r#   mrF   r&   r&   r'   test_fillna_emptym   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 sJ 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%   Zreturn_valuer&   r&   r'   test_fillna_different_dtypex   s    &z&TestFillNA.test_fillna_different_dtypec                 C   sx   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 )Nr   )
   r      r   r   r4   i  )r   r   )r   r   r   limit)r   r   randomdefault_rngstandard_normalr   r    r+   r   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   rK   )	r   r   r	   r+   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}d}tjt|d |jdd}W d    n1 s`0    Y  t|| t dttdgi}t dtdtdgi}d}tjt|d |jdd}W d    n1 s0    Y  t|| d S )Nr   z2012-11-11 00:00:00+01:00r6   r7   r9   r:   bfill)r   r	   r   r   r?   r@   r   r   )r!   r#   exprF   resr&   r&   r'   test_fillna_tzaware   s0    **zTestFillNA.test_fillna_tzawarec                 C   s   t tddddddtjtjgd}d}tjt|d	 |jd
d}W d    n1 sX0    Y  t tddddg dd}t|| d S )N20130101   z
US/Eastern)periodstzr   r   r   r   r6   r7   r9   r:   )      ?r   r   r   )	r   r
   r   r   r   r?   r@   r   r   r!   r#   rF   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 s0    Y  d}tj
t|d |jdd}W d    n1 sR0    Y  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|   rK   z3Cannot setitem on a Categorical with a new categoryr7   rs   r_   r6   r9   r:   r~   )Zsubset)r]   r^   r]   )r   r   r   r   r   r   r   rA   rB   	TypeErrorr?   r@   Zdropna)r!   catr   r#   Zcat2Zvals2Zdf_exp_fillZcat3Zvals3Zdf_exp_drop_catsZcat4Zvals4Zdf_exp_drop_allrp   rF   r_   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 )Nr   r}   r   )r   r   r   categoryrR   z2011-01-01 09:00z2016-01-01 23:45r]   rK   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#   Zmedianrp   Z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}d}tjt|d |jddd}W d    n1 sH0    Y  t dddgi}t|| t ddtjgi}tjt|d" |jddidd}W d    n1 s0    Y  t dddgi}t|| d S )	Nr]   rw   z.The 'downcast' keyword in fillna is deprecatedr7   r   inferZdowncastr   r   r   r   r   r?   r@   r   r   rx   r&   r&   r'   test_fillna_downcast&  s    ,0zTestFillNA.test_fillna_downcastc                 C   s`   |g ddd}d}t jt|d |jddd}W d    n1 sF0    Y  t || d S )	Nrz   objectrR    The 'downcast' keyword in fillnar7    Fr   )r   r?   r@   r   assert_equal)r!   frame_or_seriesobjrF   rU   r&   r&   r'   test_fillna_downcast_false7  s
    ,z%TestFillNA.test_fillna_downcast_falsec           
      C   s   |g dt jd}d}tjt|d& |jdt t jd}W d    n1 sP0    Y  |t j}t	|| |t j
}tjt|d |jddd}W d    n1 s0    Y  |}t	|| tjt|d& |jdt t jd}	W d    n1 s0    Y  t	|	| d S )Nrz   rR   r   r7   r   r   r   )r   int64r   r?   r@   r   rS   int32astyper   float64)
r!   r   r   rF   rp   r%   obj2Zres2	expected2Zres3r&   r&   r'   test_fillna_downcast_noop?  s    4,6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 sB0    Y  | }d|d< t|| d S )Nr   r   r>   r   r           )r   r   r   r   r?   r   r+   r   )r!   r   r#   rU   r%   r&   r&   r'   -test_fillna_dictlike_value_duplicate_colnamesY  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   rs   r4   r   r   r4   r>   r   r   r   r   r   )r>   r   rS   r   )
r   Zdtypesr   r   rS   r   r   r   r   ranger!   r#   rU   r%   r&   r&   r'   test_fillna_dtype_conversiond  s    

z'TestFillNA.test_fillna_dtype_conversionr   r   r   rw   c                 C   s@   t dtjgddgd}|tj|}||}t|| d S )Nr   rw   r   rv   )r   r   r   replacer   r   r   )r!   r   r#   r%   rU   r&   r&   r'   *test_fillna_dtype_conversion_equiv_replaceu  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,   rr   r   )rt   )r   barN)foo2bar2Nr   r   r   rP   Z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   r   r&   r&   r'   test_fillna_datetime_columns|  sH    


	


	

	

	z'TestFillNA.test_fillna_datetime_columnsc                 C   s   t j|j|jd d df< t j|j|jdd  df< d}tjt|d |jdd}W d    n1 sh0    Y  t|	 | d S )Nr4   r   r5   r6   r7   r<   r:   )
r   r   r=   r>   r   r?   r@   r   r   r<   r!   rD   rF   Zaltr&   r&   r'   
test_ffill  s    *zTestFillNA.test_ffillc                 C   s   t j|j|jd d df< t j|j|jdd  df< d}tjt|d |jdd}W d    n1 sh0    Y  t|	 | d S )Nr4   r   r5   r6   r7   rn   r:   )
r   r   r=   r>   r   r?   r@   r   r   rn   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}tjt	|d	* |d d |j
dd
}W d    n1 s~0    Y  t j|jdd < t|| |dd  j|ddd}tjt	|d	* |dd  |j
dd
}W d    n1 s0    Y  t j|jd d< t|| d S )Nrb   r   rb   rs   r   r9   r4   r;   re   r6   r7   r:   r   rX   r   r   Zaranger   rf   rg   rh   rT   r   r?   r@   r   r   r    r   r!   r>   r#   rU   rF   r%   r&   r&   r'   test_frame_pad_backfill_limit  s    
88z(TestFillNA.test_frame_pad_backfill_limitc                 C   s  t d}tt jdd|d}|d d |}d}tjt	|d |j
ddd	}W d    n1 sl0    Y  tjt	|d* |d d |j
dd
}W d    n1 s0    Y  t j|jdd < t|| |dd  |}tjt	|d |j
ddd	}W d    n1 s 0    Y  tjt	|d* |dd  |j
dd
}W d    n1 sj0    Y  t j|jd d< t|| d S )Nrb   r   r   r   r6   r7   r9   r4   r   r:   r   r   rX   r   r   r   r&   r&   r'   test_frame_fillna_limit  s"    
,8.:z"TestFillNA.test_frame_fillna_limitc                 C   s,   t tjddt}|tj d S )Nr   r   )	r   r   rf   rg   rh   r   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 sR0    Y  d S )Nr   r   zLimit must be greater than 0r7   r   r5   rd   
r   r   rf   rg   rh   r   rA   rB   rC   r   r!   r   r#   rF   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 sR0    Y  d S )Nr   r   zLimit must be an integerr7   r   g      ?rd   r   r   r&   r&   r'   test_fillna_integer_limit  s    z$TestFillNA.test_fillna_integer_limitc                 C   sP  t tjdd}tj|jd ddf< tj|jdd df< |jdd}||usVJ |jdd	d
 t	|| |jddid	d
}|d u sJ tj|jd ddf< tj|jdd df< d}tj
t|d |jdd}W d    n1 s0    Y  ||usJ tj
t|d |jdd	d W d    n1 s60    Y  t	|| d S )Nr   r   rs   r   r   r   rK   TrL   r   r6   r7   r<   r:   rY   )r   r   rf   rg   rh   r   r=   r   r   r   r?   r@   )r!   r#   r%   rF   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 s0    Y  d S )Nr   r   r   rs   r]   r^   r_   r   r4   )r]   r^   r]   r^   rc   )r]   r^   r|   zcolumn by columnr7   )axis)r   r   r   r   r+   r   r   maxto_dictrA   rB   NotImplementedErrorr   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   rs   r   ZVWXYZr   rb   rI      r)   )r*   <   F   P   Z   r   r4   )r]   r^   r   ZVWXuZr   r   r   r   listr   r   r   )r!   r#   Zdf2rU   r%   r&   r&   r'   test_fillna_dataframe2  s.    
	
	z TestFillNA.test_fillna_dataframec                 C   sZ  t jdd}t j|d d d d df< t|}d}tjt|d |j	ddd}W d    n1 sh0    Y  tjt|d  |j
j	dd	j
}W d    n1 s0    Y  t|| |d
dd tjt|d |j	ddd}W d    n1 s0    Y  tjt|d$ |tj	ddd}W d    n1 s@0    Y  t|| d S )Nr   )rb   rb   r6   r7   r<   r   )r;   r   r9   r:      r   r4   )r   rf   rg   rh   r   r   r   r?   r@   r   Tr   insertr   float)r!   r2   r#   rF   rU   r%   r&   r&   r'   test_fillna_columnsU  s    ,.,4zTestFillNA.test_fillna_columnsc                 C   s>   t jtdd |jdd W d    n1 s00    Y  d S )NZffilr7   r:   )rA   rB   rC   r   )r!   float_framer&   r&   r'   test_fillna_invalid_methodh  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 s0    Y  d S )
NzA"value" parameter must be a scalar or dict, but you passed a "{}"r   r7   r   r   tuple)r   r   zP"value" parameter must be a scalar, dict or Series, but you passed a "DataFrame"r   )rA   rB   r   formatr   r    )r!   r   rF   r&   r&   r'   test_fillna_invalid_valuel  s    ,(z$TestFillNA.test_fillna_invalid_valuec                 C   s   dd t dddD }tjdd}tt d||d	}d
}tjt|d |jdd}W d    n1 sn0    Y  |j	
 |j	
 ksJ 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>r4   r   r,   r   )rI   r4   rI   )r>   r   datar6   r7   r<   r:   )r   r   rf   rg   r   r   r?   r@   r   r   tolist)r!   colsr   r#   rF   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 )	Nr4   rI   r   rJ   r   r   rK   rQ   )r   r   r=   r>   r   r/   rT   )r!   r   rM   rN   r   r&   r&   r'   test_fill_corner  s    $zTestFillNA.test_fill_cornerc                 C   sz   t ddtjgi}d}tjt|d& |jddiddid}W d    n1 sP0    Y  t dddgi}t|| d S )Ncol1r   r   r7   r   r   r   r   rx   r&   r&   r'   test_fillna_downcast_dict  s    4z$TestFillNA.test_fillna_downcast_dictc                 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   rs   r   r4   ABCDrQ   d   r   rL   re   )r   r   r   r   r   rR   )r   r   r4   rs   r   )r   r   r   r   r   )r   rs   r   r   )r   r   r   r   r   r   r   r   )r!   r#   rU   Z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)Zdate1Zdate2Tr   )r   r   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
}||usdJ |jdd	ddd t|| d S )Nr   r   r   rs   r   r4   r   rQ   r   r   T)r   rL   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|| |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 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 )Nr4   r   rb   rc   r      r   r      )r   Zcol2Zcol3Zcol4r*   )re   r   )      @g      @g      (@      I@r   r   rw   )g      $@r   r   r   )r         @r   g      2@rQ   r`   r   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   rw   ))rW   r]   rW   r^   )r   r_   )r   r   r   )rw   r   r   rW   r,   r   )rW   r   )rw   r   g       )r   rW   )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   rH   rO   rV   r\   ra   rj   rm   rq   ry   r   r   r   r   r   rA   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   sV   t g dg dg dgg dd} | jddd}|d	}|   d	ksRJ d S )
N)r   r   r   rw   )r   r   r   r   )r   r   r   r   )i1i2Zi3f1rQ   r   r   r   r   )r   Zpivotr   Zisnasum)r#   Zdf_nonconsolrU   r&   r&   r'   !test_fillna_nonconsolidated_frame  s    
r  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 sP0    Y  t ddgddggddgd}t| | d S )
Nr   r   rQ   Fr   r   rv   Tr   )r   r   r?   r   r   )r#   r%   r&   r&   r'   test_fillna_nones_inplace.  s    2r  funcr9   rX   c                 C   sJ   t dg di}tt t||   W d    n1 s<0    Y  d S )Nr]   rz   )r   r   r?   r@   getattr)r  r#   r&   r&   r'   test_pad_backfill_deprecated;  s    r  )numpyr   rA   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      