U
    f/e`%                     @   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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d)d(ejejgeejd*ejd+d,d-d.d/d0d1gd2d3d4fd(eeejd*d'd(ejd(ejejejd'geejd*eejd*d2d3d4fgd5d6 Zd7d8 Zd9d: ZdS );TestDataFrameDiffc              	   C   s:   t tjdd}tjtdd |d W 5 Q R X d S )N   zperiods must be an integer)matchg      ?)r   nprandomrandnpytestZraises
ValueErrordiffselfdf r   H/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/frame/methods/test_diff.pytest_diff_requires_integer   s    z,TestDataFrameDiff.test_diff_requires_integerc                 C   s   | d}t|d |d |d d  d}|d }t||g}td|i  }|jd dksft|d}| d}t|d |d |d d  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 )N   Al     _sfloat32r      )yzr   xaxis)r   r   r   )r   tmZassert_series_equalshiftr   r   r   AssertionErrorastypeinsertr	   nanassert_frame_equal)r   datetime_frameZthe_diffabr   rstfr   resultexpectedr   r   r   	test_diff   s$    
 

"zTestDataFrameDiff.test_diffc                 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   st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   pdr/   	Timedeltar   Zassert_equalisnaallr!   r$   r   Zarrr   r+   r,   r   r   r   test_diff_timedelta64_with_nat/   s    &

z0TestDataFrameDiff.test_diff_timedelta64_with_nattzNUTCc                 C   sd   t jdddg|d}t|}| }| }t t jt jt jddg}t| }t	|| d S )Nr/   z
2019-01-01z
2019-01-02)r:   r   )days)
r4   ZDatetimeIndexr   to_framer   TimedeltaIndexr/   r5   r   r%   )r   r:   dtiserr   r+   Zex_indexr,   r   r   r   !test_diff_datetime_axis0_with_natC   s    z3TestDataFrameDiff.test_diff_datetime_axis0_with_natc                 C   s   t dd|d}t|}| }| |d< tj|jd d df< || }|d   sZt	|j
ddd}t|| |j
ddd}t|| d S )N
2016-01-01   )periodsr:   r   r   r   )r   r   r=   copyr4   r/   Zilocr6   r7   r!   r   r   r%   )r   r:   r?   r@   r   r,   r+   r   r   r   (test_diff_datetime_with_nat_zero_periodsP   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   freqrD   r:   r1   r   r   r/   z1 daysr   r   r   r4   r>   r   r%   r   r:   r   r+   r,   r   r   r   test_diff_datetime_axis0c   s    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 )
NrG   rH   r   rI   r1   r   r   r/   z0 daysrK   rL   r   r   r   test_diff_datetime_axis1v   s    z*TestDataFrameDiff.test_diff_datetime_axis1c                 C   s\   t tdtdgddgd}| }t tjtjgtddggdd	gd
}t	|| d S )Nz20130101 9:01z20130101 9:02      ?       @)timevaluez00:01:00r   rQ   rR   )columns)
r   r   r   r4   r/   r	   r$   r5   r   r%   )r   r   resexpr   r   r   test_diff_timedelta   s     z%TestDataFrameDiff.test_diff_timedeltac                 C   sN   t tjdd}tjdddddgtd|d< | }|d jtjksJt	d S )	N   r   r   r   rC   dtyper   r   )
r   r	   r
   r   arrayobjectr   rY   float64r!   )r   r   r+   r   r   r   test_diff_mixed_dtype   s    z'TestDataFrameDiff.test_diff_mixed_dtypec                 C   s(   | d}||d }t|| d S )Nr2   )r   r    r   r%   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 )NrO   r   )r   r   r%   r^   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 )NrO   rP   g      @g      @r   r   r   )r   r   r%   r   r	   r$   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 )NrB   r   )rD   rH   r   r   r   )
r   Z	to_periodr   r   r4   r/   r"   r[   r   r%   )r   pir   r+   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   rX   r   Bre   r   r   r   r\   )r'   r(   r'   r(   r   	r   ranger	   r3   r\   r$   r   r   r%   r   r   r,   r+   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   rX   rd   r   r   rD   rf   rh   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   rX   rd         r   re   r   r2   rj   rf   rh   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]rX   rO   rl   floatg        )r   r   r	   r$   r4   ZSparseDtyper   r%   )r   Z	sparse_dfr+   r,   r   r   r   test_diff_sparse   s     
z"TestDataFrameDiff.test_diff_sparsezaxis,expectedr   r      r   rW      	            r'   r(   cdInt64rX   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   rq   rs   rw   rz   rX   r   )	r   r	   repeatr$   Ztiler3   r   r   r%   )r   r   r,   r   r+   r   r   r   test_diff_integer_na   s    z&TestDataFrameDiff.test_diff_integer_nac                 C   sH   t jdd}d|j_t|}| }tt | }t	|| d S )NrW   r   F)
r	   r
   r   flagsZ	writeabler   r   rZ   r   r%   r8   r   r   r   test_diff_readonly  s    z$TestDataFrameDiff.test_diff_readonlyc                 C   sV   t td}||}| }|dkr*dnd}t tjddddg|d}t|| d S )NrW   )Zint8Zint16r   r\   rO   rX   )r   rg   r"   r   r	   r$   r   r%   )r   Zany_int_dtyper   r+   Zexpected_dtyper,   r   r   r   test_diff_all_int_dtype!  s    
z)TestDataFrameDiff.test_diff_all_int_dtype)__name__
__module____qualname__r   r-   r9   r   markZparametrizerA   rF   rM   rN   rV   r]   r_   r`   ra   rc   ri   rk   rm   ro   r   r	   r$   r{   r|   r~   r   r   r   r   r   r      s`   





		
	r   )Znumpyr	   r   Zpandasr4   r   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   <module>   s
   