U
    sVc&                     @   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ejdejj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/d0eejd0dd0ejejejd0gejdejejd1dejejge ejd2ejd3d4d5d6d7d8d9gd:d;d<fdee ejd2d0dejdejejejd0ge ejd2e ejd2d:d;d<fgd=d> Z!d?d@ Z"dAdB Z#dS )C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-xj8nt62q/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:td S )Nl     _r   s)r   r   r   r   AssertionError)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   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   pdr6   	Timedeltar   Zassert_equalisnaallr    r1   r   Zarrr   r3   r   r   r   r   test_diff_timedelta64_with_nat4   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 )Nr6   z
2019-01-01z
2019-01-02)rA   r   )days)
r;   ZDatetimeIndexr   to_framer   TimedeltaIndexr6   r<   r   r2   )r   rA   dtir#   r   r3   Zex_indexr   r   r   r   !test_diff_datetime_axis0_with_natH   s    z3TestDataFrameDiff.test_diff_datetime_axis0_with_nat)Zmarksc              	   C   s   t dd|d}t|}| }| |d< td  tj|jd d df< W 5 Q R X || }|d 	 
 spt|jddd}t|| |jddd}t|| d S )N
2016-01-01   )periodsrA   r   r   r.   )r   r   rD   copyr   Zassert_produces_warningr;   r6   Zilocr=   r>   r    r   r2   )r   rA   rF   r#   r   r   r3   r   r   r   (test_diff_datetime_with_nat_zero_periodsU   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   freqrJ   rA   r8   r   r.   r6   z1 daysr   r   r   r;   rE   r   r2   r   rA   r   r3   r   r   r   r   test_diff_datetime_axis0j   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 )
NrM   rN   r   rO   r8   r   r.   r6   z0 daysrQ   rR   r   r   r   test_diff_datetime_axis1}   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   rW   rX   )columns)
r   r   r   r;   r6   r	   r1   r<   r   r2   )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   rI   dtyper   r   )
r   r	   r
   r   arrayobjectr   r_   float64r    )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 )NrU   r   )r   r   r2   rd   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 )NrU   rV   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 )NrH   r*   )rJ   rN   r   r   r.   )
r   Z	to_periodr   r   r;   r6   r'   ra   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   r^   r   Brk   r   r.   r&   rb   )r!   r"   r!   r"   r   	r   ranger	   r:   rb   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   r^   rj   r   r/   rJ   rl   rn   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   r^   rj         r   rk   r   r9   rp   rl   rn   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]r^   rU   rr   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*   r]      	            r!   r"   cdInt64r^   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   rw   ry   r}   r   r^   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   sH   t jdd}d|j_t|}| }tt | }t	|| d S )Nr]   r   F)
r	   r
   r   flagsZ	writeabler   r   r`   r   r2   r?   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 )Nr]   )Zint8Zint16r&   rb   rU   r^   )r   rm   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@   rG   paramZxfailrL   rS   rT   r\   rc   re   rf   rg   ri   ro   rq   rs   ru   r   r1   r   r   r   r   r   r   r   r   r      sh   
	





		
	r   )Znumpyr	   r   Zpandasr;   r   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   <module>   s
   