o
    թZhs'                     @   sN   d dl Zd dlZd dlZd dlmZmZmZmZ d dl	m
Z G dd dZdS )    N)	DataFrameSeries	Timestamp
date_rangec                   @   s  e Zd Zdd Zejddedgdd Z	dd Z
d	d
 Zdd Zdd Zejdddgdd Zejdddgdd Zejdddgdd Zejdddg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/eejd/dd/ejejejd/gejdejejd0dejejgeejd1ejd2d3d4d5d6d7d8gd9d:d;fdeeejd1d/dejdejejejd/geejd1eejd1d9d:d;fgd<d= Zd>d? Z d@dA Z!dS )BTestDataFrameDiffc                 C   sT   t tjdd}tjtdd |d W d    d S 1 s#w   Y  d S )N   )r   r   zperiods must be an integer)matchg      ?)	r   nprandomdefault_rngstandard_normalpytestZraises
ValueErrordiffselfdf r   [/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/frame/methods/test_diff.pytest_diff_requires_integer   s   "z,TestDataFrameDiff.test_diff_requires_integernum   c                 C   s8   |}| |}|d |d | }t|d | d S )NA)r   shifttmassert_series_equal)r   datetime_framer   r   the_diffexpectedr   r   r   	test_diff   s   
zTestDataFrameDiff.test_diffc                 C   s>   d}|d }t ||g}td|i }|jd dksJ d S )Nl     _r   s)r   r   r   r    )r   abserrsr   r   r   test_diff_int_dtype   s
   z%TestDataFrameDiff.test_diff_int_dtypec                 C   s:   | d}|d}t|d |d |d d  d S )Nfloat32r   r   )astyper   r   r   r   )r   r   tfr   r   r   r   test_diff_mixed_numeric&   s   

&z)TestDataFrameDiff.test_diff_mixed_numericc                 C   s^   t tdgtdgd}|ddd |jdd}t tjtdtdd}t|| d S )	Nr      )yzr   xr   axis)r-   r+   r,   )r   r   insertr   r	   nanr   assert_frame_equal)r   r   resultr   r   r   r   test_diff_axis1_nonconsolidated,   s
   z1TestDataFrameDiff.test_diff_axis1_nonconsolidatedc                 C   s   t dddd}t dd|d d df< t|}|jddd	}t|d tjt	dt	dgd
}t
|| |d}|| }|d   sOJ t
|| |jddd	}|t j }t
|| d S )N   r*   r   ztimedelta64[ns]NaTnsr   r   r.   r   r   )r	   arangeZreshaper'   Ztimedelta64r   r   pdr6   	Timedeltar   Zassert_equalisnaallr1   r   Zarrr   r3   r   r   r   r   test_diff_timedelta64_with_nat4   s   &

z0TestDataFrameDiff.test_diff_timedelta64_with_nattzNUTCc           	      C   sn   t jg d|d|}t|}| }| }t t jt jt jddg|}t| }t	
|| d S )N)r6   z
2019-01-01z
2019-01-02)rA   r   )days)r;   ZDatetimeIndexas_unitr   to_framer   TimedeltaIndexr6   r<   r   r2   )	r   rA   unitdtir#   r   r3   Zex_indexr   r   r   r   !test_diff_datetime_axis0_with_natH   s   z3TestDataFrameDiff.test_diff_datetime_axis0_with_natc                 C   s   t dd|d}t|}|  }| |d< tj|jd d df< || }|d   s/J |j	ddd}t
|| |j	ddd}t
|| d S )N
2016-01-01   )periodsrA   r   r   r.   )r   r   rE   copyr;   r6   Zilocr=   r>   r   r   r2   )r   rA   rH   r#   r   r   r3   r   r   r   (test_diff_datetime_with_nat_zero_periodsW   s   z:TestDataFrameDiff.test_diff_datetime_with_nat_zero_periodsc                 C   sd   t tddd|dtddd|dd}|jdd}t tdd	gtdd	gd}t|| d S )
N2010Dr   freqrL   rA   r8   r   r.   r6   z1 daysr   r   r   r;   rF   r   r2   r   rA   r   r3   r   r   r   r   test_diff_datetime_axis0k      z*TestDataFrameDiff.test_diff_datetime_axis0c                 C   sd   t tddd|dtddd|dd}|jdd}t tddgtd	d	gd}t|| d S )
NrO   rP   r   rQ   r8   r   r.   r6   z0 daysrS   rT   r   r   r   test_diff_datetime_axis1~   rV   z*TestDataFrameDiff.test_diff_datetime_axis1c                 C   s   t tdtdgddgd}|d j||d< | }t tjtjgt	ddggdd	gd
}|d j||d< t
|| d S )Nz20130101 9:01z20130101 9:02      ?       @)timevaluerZ   z00:01:00r   r[   )columns)r   r   dtrD   r   r;   r6   r	   r1   r<   r   r2   )r   rG   r   resexpr   r   r   test_diff_timedelta   s   z%TestDataFrameDiff.test_diff_timedeltac                 C   sL   t tjdd}tjg dtd|d< | }|d jtj	ks$J d S )Nr   )   r*   )r   r   r*   rK   ra   dtyper   r   )
r   r	   r
   r   r   arrayobjectr   rc   float64)r   r   r3   r   r   r   test_diff_mixed_dtype   s   z'TestDataFrameDiff.test_diff_mixed_dtypec                 C   s(   | d}||d }t|| d S )Nr9   )r   r   r   r2   r   r   r$   Zxpr   r   r   test_diff_neg_n   s   
z!TestDataFrameDiff.test_diff_neg_nc                 C   s$   | d}| d}t|| d S )NrX   r   )r   r   r2   rh   r   r   r   test_diff_float_n   s   

z#TestDataFrameDiff.test_diff_float_nc                 C   sh   t ddgddgg}t|jddt tjdgtjdgg t|jddt tjtjgddgg d S )NrX   rY   g      @g      @r   r.   r   )r   r   r2   r   r	   r1   r   r   r   r   test_diff_axis   s     z TestDataFrameDiff.test_diff_axisc                 C   sL   t dddd}td|i}|jddd}|tj t}t	|| d S )NrJ   r*   )rL   rP   r   r   r.   )
r   Z	to_periodr   r   r;   r6   r'   re   r   r2   )r   pir   r3   r   r   r   r   test_diff_period   s
   z"TestDataFrameDiff.test_diff_periodc                 C   s   t tddtjdtjd d}t tjtjtjg|d d d}|jdd}t|| t tjdddtjdd	dd
}|jdd}t |d tj |d d d
}t|| d S )Nr*   r   rb   r   Bro   r   r.   r&   rf   )r!   r"   r!   r"   r   	r   ranger	   r:   rf   r1   r   r   r2   r   r   r   r3   r   r   r   test_diff_axis1_mixed_dtypes   s   "" z.TestDataFrameDiff.test_diff_axis1_mixed_dtypesc                 C   sJ   t tddtjdtjd d}|tj }|jddd}t|| d S )Nr*   r   rb   rn   r   r/   rL   rp   rr   r   r   r   *test_diff_axis1_mixed_dtypes_large_periods   s   "
z<TestDataFrameDiff.test_diff_axis1_mixed_dtypes_large_periodsc                 C   s`   t tddtjdtjd d}t d|d  |d tj d}|jdd	d
}t|| d S )Nr*   r   rb   rn         r   ro   r   r9   rt   rp   rr   r   r   r   -test_diff_axis1_mixed_dtypes_negative_periods   s   " z?TestDataFrameDiff.test_diff_axis1_mixed_dtypes_negative_periodsc                 C   sT   t ddgddggdd}| }t tjtjgddggtddd}t|| d S )	Nr   r   zSparse[int]rb   rX   rv   floatg        )r   r   r	   r1   r;   ZSparseDtyper   r2   )r   Z	sparse_dfr3   r   r   r   r   test_diff_sparse   s   z"TestDataFrameDiff.test_diff_sparsezaxis,expectedr      r*   ra      	            r!   r"   cdInt64rb   c                 C   sl   t tddtjdgdtddtjdgdttjdtddd ddd}|j|d	}t|| d S )
Nr   r   r   r{   r}   r   r   rb   r.   )	r   r	   repeatr1   Ztiler:   r   r   r2   )r   r/   r   r   r3   r   r   r   test_diff_integer_na   s   z&TestDataFrameDiff.test_diff_integer_nac                 C   sL   t jdd}d|j_t|}| }tt | }t	
|| d S )Nr   )ra   r   F)r	   r
   r   r   flagsZ	writeabler   r   rd   r   r2   r?   r   r   r   test_diff_readonly"  s   z$TestDataFrameDiff.test_diff_readonlyc                 C   sV   t td}||}| }|dv rdnd}t tjddddg|d}t|| d S )Nra   )Zint8Zint16r&   rf   rX   rb   )r   rq   r'   r   r	   r1   r   r2   )r   Zany_int_numpy_dtyper   r3   Zexpected_dtyper   r   r   r   test_diff_all_int_dtype+  s   
z)TestDataFrameDiff.test_diff_all_int_dtype)"__name__
__module____qualname__r   r   markZparametrizer	   Zint64r   r%   r)   r4   r@   rI   rN   rU   rW   r`   rg   ri   rj   rk   rm   rs   ru   rw   ry   r   r1   r   r   r   r   r   r   r   r   r      sj    
	





		
	r   )numpyr	   r   Zpandasr;   r   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   <module>   s    