o
    թZhSl                     @   sl   d dl Zd dlZd dlm  mZ d dlZd dlm	Z	m
Z
mZmZmZmZmZ d dlmZ G dd dZdS )    N)CategoricalIndex	DataFrameIndexNaTSeries
date_rangeoffsetsc                   @   s  e Zd Zdd Zdd Zejdej	ddg fej
ddejd	gfgd
d Zdd Zejdeedgeddddeededdddgejdg ddd Zdd Zdd Zejdd d!gd"d# Zejd$g d%d&d' Zd(d) Zejd*g d+d,d- Zd.d/ Zd0d1 Zd2d3 Z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&dJdK Z'e(j)dLdM Z*dNdO Z+dPdQ Z,dRdS Z-dTdU Z.dVdW Z/ejdXej0dYejj1dZd[d\d]gejjd^ed_d`ded_d`dadbe2j3d_d`dcde2j4ddd`dcde2j5dedfd`dej0e2j6dgd`gdhdiejj1dZd[d\ej0e2j6dgd`gdjdiejj1dZd[d\gdkdl dmdndo Z7dpdq Z8drds Z9dtdu Z:dvdw Z;dxdy Z<dzd{ Z=d|d} Z>d~d Z?dS )TestDataFrameShiftc                 C   s   t jdd}t|}|jdddd}|jjdddj}t|| |dg 	d}|jdddd}tdgd	 dd
}t|| d S )N            i90  )axisperiods
fill_value)r   r   r   ZFloat64r   dtype)
nprandomdefault_rngstandard_normalr   shiftTtmassert_frame_equalastype)selfdatadfresexpecteddf2Zres2Z	expected2 r#   \/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/frame/methods/test_shift.py0test_shift_axis1_with_valid_fill_value_one_array   s   zCTestDataFrameShift.test_shift_axis1_with_valid_fill_value_one_arrayc                 C   s   |t jddtddddd}d}tjt|d |jd	d	dd
 W d    n1 s.w   Y  |t	u rbtdd	dd|_
tjt|d |jd	d	d	dd W d    d S 1 s[w   Y  d S d S )Nr
   r   1/1/2000hr   freqindexMPassing a 'freq' together with a 'fill_value' silently ignores the fill_valuematchr   r   r)   )r   r   r)   )r   r   r   r   r   r   assert_produces_warningFutureWarningr   r   columns)r   frame_or_seriesobjmsgr#   r#   r$   (test_shift_deprecate_freq_and_fill_value#   s   "z;TestDataFrameShift.test_shift_deprecate_freq_and_fill_valuezinput_data, output_data)r   )shape)r
         ?c                 C   s\   |j dd ||d}|tur ||tt|tddd}n||dd}t|| d S )NF)writer   Zfloat64)r+   r2   r   r   )Zsetflagsr   r   rangelenr   assert_equal)r   Z
input_dataZoutput_datar3   resultr!   r#   r#   r$   test_shift_non_writable_array6   s   
z0TestDataFrameShift.test_shift_non_writable_arrayc                 C   s   |t jddtddddd}|jddd	}|jjddd	}t|j| |jdd
d	}|jt	
d }t|j| d S )Nr
   r   r&   r'   r(   r*   r   Z5minr)   Z4h   )r   r   r   r   r   r   r+   r   assert_index_equalr   ZHour)r   r3   tsr=   Z	exp_indexr#   r#   r$   test_shift_mismatched_freqL   s   z-TestDataFrameShift.test_shift_mismatched_freqr4   r   z1/1/2011   r'   r(   Z2017r   r*   
shift_sizer   r   r
   c                 C   s&   |t ur| }|||usJ d S N)r   to_framer   )r   r4   rF   r3   r#   r#   r$   test_shift_always_copy[   s   z)TestDataFrameShift.test_shift_always_copyc                 C   s   t td}tjtdd |jdg d W d    n1 sw   Y  | }tjtdd |jdtdd W d    n1 sDw   Y  |	t
}|jdi d}|d i ks]J | }|jdi d}|jd i ksqJ d S )Nr   zfill_value must be a scalarr-   r   r   r   )r   r   )r   r:   pytestraises
ValueErrorr   rI   r   aranger   objectiloc)r   serr   Zobj_serr=   Zobj_dfr#   r#   r$   !test_shift_object_non_scalar_fillj   s   
z4TestDataFrameShift.test_shift_object_non_scalar_fillc                 C   s<   t ||t}|d}|td}t || d S )Nr   )r   get_objr   intr   floatr<   )r   datetime_framer3   rB   shiftedr!   r#   r#   r$   test_shift_int|   s   
z!TestDataFrameShift.test_shift_intr   Zint32int64c           	      C   sb   t ddd}tjd|d}|||d}|d }|j|d}|tjdddd	g|d}t|| d S )
Nz
2000-01-01r   rE   r   r*   r   r   r
   r   )r   r   rO   r   nanr   r<   )	r   r3   r   r+   Zarrs1pr=   r!   r#   r#   r$   test_shift_32bit_take   s   z(TestDataFrameShift.test_shift_32bit_taker   )r   r
   r   r@   c                 C   sP   |t |td|ddd}|dd}|t |td|ddd}t|| d S )Nz2016-1-1 00:00:00r'   r(   r*   r   Z2hz2016-1-1 02:00:00)r:   r   r   r   r<   )r   r   r3   r4   r=   r!   r#   r#   r$   test_shift_preserve_freqstr   s   z.TestDataFrameShift.test_shift_preserve_freqstrc                 C   s   t ddddd}||}|d}t|| t|dks J |d}tg|tj	 d d	  }||}t|| t|dksGJ |d
}|tj	 dd  ttg }||}t|| t|dksoJ d S )N
2016-11-06r'   
   
US/Easternr)   r   tzr   datetime64[ns, US/Eastern]r   	   r
   )
r   r   r   r<   	get_dtyper   r   rP   valuestolist)r   r3   datesr4   r    Zexp_valsexpr#   r#   r$   test_shift_dst   s   


 z!TestDataFrameShift.test_shift_dstex)ra   i   ic                 C   sV   t ddddd}||}||}|tgd dd}t|| t|dks)J d S )Nr`   r'   ra   rb   rc   re   r   )r   r   r   r   r<   rh   )r   r3   rn   rk   r4   r    rl   r#   r#   r$   test_shift_dst_beyond   s   
z(TestDataFrameShift.test_shift_dst_beyondc                 C   s&   t ||}|d}t || d S Nr   )r   rT   r   r<   )r   rW   r3   r4   	unshiftedr#   r#   r$   test_shift_by_zero   s   
z%TestDataFrameShift.test_shift_by_zeroc                 C   s   |d }| d}t|j|j | d}t|d | | d}t|j|j | d}t|d | | d d}t| j|jd d  | d d}t| j|jd d  d S )NAr   )r   r   rA   r+   assert_series_equalassert_numpy_array_equaldropnari   )r   rW   rR   rX   Zshifted_serrr   Zunshifted_serr#   r#   r$   
test_shift   s   



 zTestDataFrameShift.test_shiftc           
      C   s   t ||}t }|jd|d}t|t|ksJ |jd|d}t || |jddd}t || |jd|d}t || |jd }||d  }	|tu rat j	|
||
|	dd d S t |j| |j|	  d S )Nr   r?   ru   Br   F)Zcheck_names)r   rT   r   BDayr   r;   r<   r+   r   rv   ZxsZassert_almost_equalat)
r   rW   r3   r4   offsetrX   rr   shifted2dZ	shifted_dr#   r#   r$   test_shift_by_offset   s   
 z'TestDataFrameShift.test_shift_by_offsetc           
      C   sl  t tjdtdtjdddd}t||}|d}|d}t	|j
|j
 t	|j
|j
 |t u rMt|jd d df  j|jd ddf j nt| j|jd d  |dd	}|dt }t|| t||dd	 d
}tjt|d |jdd W d    n1 sw   Y  |jdd	d}t|| |jdt d}	t|	| d S )Nr@   r   
2020-01-01rE   r*   r   r   Dzdoes not match PeriodIndex freqr-   Wr?   )r   r   rO   rV   pdperiod_ranger   rT   r   rA   r+   rw   rQ   rx   ri   r   Dayr<   rL   rM   rN   )
r   r3   psrX   rr   r~   shifted3r5   Zshifted4Zshifted5r#   r#   r$   test_shift_with_periodindex   s2   

(z.TestDataFrameShift.test_shift_with_periodindexc                 C   sj   t tjdd}tjt tj|jdgd|jd d ddf gddd}|j	ddd	}t
|| d S )
Nr
   ra   r   r   r+   r2   r   Tr   Zignore_indexr   r   r   r   r   r   r   concatr[   r+   rQ   r   r   r   r   r   r!   r=   r#   r#   r$   test_shift_other_axis  s   (z(TestDataFrameShift.test_shift_other_axisc                 C   sj   t tjdd}tjt tj|jdgd|jd d ddf gddd}|j	dd	d
}t
|| d S )Nr
   r   r   r   r   Tr   r   r2   r   r   r   r#   r#   r$   test_shift_named_axis   s   (z(TestDataFrameShift.test_shift_named_axisc                 C   sR   |j }t }|jd|dd}t|t|ksJ |jd|dd}t|| d S )Nr   r   )r)   r   ru   )r   r   r{   r   r;   r   r<   )r   rW   r4   r}   rX   rr   r#   r#   r$   test_shift_other_axis_with_freq+  s   z2TestDataFrameShift.test_shift_other_axis_with_freqc                 C   sZ   t ddgddgd}|d}t tjtjtjgddggtdddgd}t|| d S )	NTF)highlowr   r   r   r   r2   )r   r   r   arrayr[   rP   r   r   )r   r   rsxpr#   r#   r$   test_shift_bool5  s   
z"TestDataFrameShift.test_shift_boolc                 C   s>  |g ddd}| d d}t|jd d |  dd }||}| d}t|j|j t||j	d d dksBJ t|j	d d ||j	dd  ksWJ | d}t|j|j t||j	dd  dkstJ t|j	d	d  ||j	d d ksJ t|j
||j
 t|j
||j
 d S )
Nabcr   categoryr   r   r   c                 S   s   | j jd S rq   )_mgrarrays)Zndframer#   r#   r$   get_cat_valuesE  s   zBTestDataFrameShift.test_shift_categorical1.<locals>.get_cat_valuesrg   r
   )r   r   r<   rQ   rx   rA   r+   r   allcodes
categories)r   r3   r4   rtr   catZsp1Zsn2r#   r#   r$   test_shift_categorical1>  s   
 *
 *z*TestDataFrameShift.test_shift_categorical1c                 C   sb   t g ddd}t g ddd}t||d}|d}t|d|dd}t|| d S )Nr   r   r   r   r   )rt   rz   C)onetwor   )r   r   r   r   r   )r   r\   s2r   r   r   r#   r#   r$   test_shift_categoricalY  s   
z)TestDataFrameShift.test_shift_categoricalc                 C   s   |g ddd}|j ddd}|tjg dg ddd	}t|| d
}tjt|d |j ddd W d    d S 1 s?w   Y  d S )Nr   r   r   r   r   rK   )r   r   r   r   F)r   Zorderedz9Cannot setitem on a Categorical with a new category \(f\)r-   f)r   r   ZCategoricalr   r<   rL   rM   	TypeError)r   r3   rB   r    r!   r5   r#   r#   r$   !test_shift_categorical_fill_valueb  s   "z4TestDataFrameShift.test_shift_categorical_fill_valuec                 C   s  t dddd}|g d|d}|g d|d}|jdd	d
}t|| |g d|d}|jdd	d
}t|| |g d}|jddd
}t|t|ksRJ |g d|d}|g d|d}|jddd
}t|| |g d|d}|jddd
}t|| d S )Nr&   r   r'   r(   )r8          @      @      @      @r*   )        r8   r   r   r   r   r   rK   )r   r   r8   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<   rh   )r   r3   ZdtirB   rl   r=   r    r4   r#   r#   r$   test_shift_fill_valueq  s$   z(TestDataFrameShift.test_shift_fill_valuec                 C   s&   t dg i}|d}t|| d S )Nfoor   r   r   r   r   )r   r   r   r#   r#   r$   test_shift_empty  s   
z#TestDataFrameShift.test_shift_emptyc                 C   s   t tddgd g dg}tjdd}g }|D ]0}t| |d}tdD ]}|jd d |f 	|d |jd d |f< q)td|_
|| q|d   }t|ttddd	d
 t|d |d  t|d |d  d S )Nr   r   )r   r   r
   r
   r   r
   )ro   r   r   r      rZ   r   )listr:   r   r   r   r   r   copyrQ   r   r2   appendZisnasumr   rv   r   r   )r   Zcolumn_listsr   rX   r2   r   sZnullsr#   r#   r$   test_shift_duplicate_columns  s   ,
z/TestDataFrameShift.test_shift_duplicate_columnsc                 C   s@  t tjdjddd}t tjdjddd}tj||gdd}|s/t|jj	dks/J |j
ddd}|jg ddd}|d	d
 }tj|jd d d df< |j|_t|| tj||gdd}|sqt|jj	dksqJ |j
ddd}|jg ddd}|dd
 }tj|jd d dd f< |j|_t|| d S )Nr
     r   )sizer   r
   r   r   )r   r   r   r   r
   c                 S   0   | j t| jd dddddj | jddS )Nr   r   rV   )r   r   Zset_axisr:   r7   r   r2   r   r#   r#   r$   <lambda>      zETestDataFrameShift.test_shift_axis1_multiple_blocks.<locals>.<lambda>rg   )r
   r   r@   r   r   c                 S   r   )Nr   r   rV   )r   r@   r   r   r#   r#   r$   r     r   )r   r   r   r   integersr   r   r;   r   blocksr   takepiper[   rQ   r2   r   r   )r   Zusing_array_managerdf1r"   df3r=   r!   r#   r#   r$    test_shift_axis1_multiple_blocks  s0   z3TestDataFrameShift.test_shift_axis1_multiple_blocksc                 C   s|  t jd}t|jddtd}t|jddtd}tj|jd dddf |jd dd d f gdd	}|j	ddt 
d
d}t|jjdksJJ |jg ddd	}t 
d
|jd d d df< |j|_t|| tj|jd dddf |jd dd d f gdd	}|j	ddt 
d
d}t|jjdksJ |jg ddd	}t 
d
|jd d dd f< |j|_t|| d S )Nr
   r   r   )r   r   r   r@   r   r   r   r   r   r   )r   r   r   r   rg   )r
   r   r   r   )r   r   r   r   r   rU   r   r   rQ   r   int_r;   r   r   r   r2   r   r   )r   rngr   r"   r   r=   r!   r#   r#   r$   .test_shift_axis1_multiple_blocks_with_int_fill  s"   66zATestDataFrameShift.test_shift_axis1_multiple_blocks_with_int_fillc                 C   s   t tdtjdddd}t||}|jddd}|jddd}t|| |jd	d}t|| |jt	 d}t|| d S )
Nr@   r   rE   r*   r   inferr?   r   r   )
r   r:   r   r   r   rT   r   r<   r   r   )r   r3   r   rX   rr   r~   r   r#   r#   r$   'test_period_index_frame_shift_with_freq  s   z:TestDataFrameShift.test_period_index_frame_shift_with_freqc           	      C   s   t ||}|jddd}|jddd}t || |j|jjd}t || t|jtt	
|j|jd}t ||}|jddd}|jddd}|jd |_t || |jddd}t || d S )Nr   r   r?   r   r   )r   rT   r   r<   r+   r)   r   ri   r   r   Zasarrayr2   Z
_with_freq)	r   rW   r3   dtobjrX   rr   r~   Zinferred_tsr!   r#   r#   r$   #test_datetime_frame_shift_with_freq  s$   z6TestDataFrameShift.test_datetime_frame_shift_with_freqc                 C   sj   t tdtjdddd}t||}d}tjt|d |j	dd W d    d S 1 s.w   Y  d S )	Nr@   r   rE   r*   z.Given freq M does not match PeriodIndex freq Dr-   Mr?   )
r   r:   r   r   r   rT   rL   rM   rN   r   )r   r3   r   r5   r#   r#   r$   -test_period_index_frame_shift_with_freq_error  s   "z@TestDataFrameShift.test_period_index_frame_shift_with_freq_errorc                 C   s^   t ||}|jg d }d}tjt|d |jdd W d    d S 1 s(w   Y  d S )N)r   r      z6Freq was not set in the index hence cannot be inferredr-   r   r?   )r   rT   rQ   rL   rM   rN   r   )r   rW   r3   r   Zno_freqr5   r#   r#   r$   )test_datetime_frame_shift_with_freq_error  s   "z<TestDataFrameShift.test_datetime_frame_shift_with_freq_errorc                 C   s(  t tdtdg}tjtdd |jddd W d    n1 s%w   Y  | }tjtdd |jddd W d    n1 sGw   Y  t||d}|	  |jdddd	}tddg|d
 d}t
|| td
|i}||d< t|jjdksJ |jdddd	}t
|| d S )Nr   z
2020-01-02zvalue should be ar-   r   r   rK   rt   rz   r   rt   rz   r
   )r   r   	TimestamprL   rM   r   r   rI   r   _consolidate_inplacer   r   r;   r   r   )r   rR   r   r"   r=   r!   r   r#   r#   r$   )test_shift_dt64values_int_fill_deprecated%  s$   z<TestDataFrameShift.test_shift_dt64values_int_fill_deprecatedas_catTz1_can_hold_element incorrectly always returns True)reason)ZmarksFvalsr   r
   z
US/Pacific)r   rd   r   z	2020 Daysr   r   r   ZInt64r   ZFloat32c                 C   s
   t | jS rH   )strr   xr#   r#   r$   r   `  s   
 zTestDataFrameShift.<lambda>)Zidsc           	      C   s   t |}|r|d}td|i}|jdddd}tdddgi}t|| t||d}|  |jdddd}t|d ddgd}t|| td|i}||d< t|jj	d	ks_J |jdddd}t|| d S )
Nr   rt   r   r   r   r   r   rz   r
   )
r   r   r   r   r   r   r   r;   r   r   )	r   r   r   rR   r   r=   r!   r"   r   r#   r#   r$   (test_shift_dt64values_axis1_invalid_fill?  s"   %
z;TestDataFrameShift.test_shift_dt64values_axis1_invalid_fillc                 C   s   t g d}tddgddgddgd|d d |d	}|jdd
}ttjtjgddgddgd|d d |d	}t|| |jddd
}ttjtjgtjtjgddgd|d d |d	}t|| d S )Nr   r   r   r
   r@   r   r   r   r   r   )r   r   r   r   r[   r   r   )r   cir   r=   r!   r#   r#   r$   $test_shift_axis1_categorical_columns|  s    "&
z7TestDataFrameShift.test_shift_axis1_categorical_columnsc                 C   s\   t tjdd}|jddd d}|tj }t|| |jddd d}t|| d S )Nr
   r   r   r   r   i)r   r   r   r   r   r[   r   r   )r   r   rX   r!   r~   r#   r#   r$   test_shift_axis1_many_periods  s   
z0TestDataFrameShift.test_shift_axis1_many_periodsc                 C   sV   t dg ditdddd}|jdd}t dg ditd	d	dd
d}t|| d S )Nr   r   2000r   rE   r*   Z1MSr?   z
02/01/2000)startendr   )r   r   r   r   r   )r   r   rX   r!   r#   r#   r$   test_shift_with_offsets_freq  s   
z/TestDataFrameShift.test_shift_with_offsets_freqc              	   C   s~   g dg dd}g d}t |}||}t g dg dtjddgtjddgtjtjdgtjtjdgd	}t|| d S )
Nr   )r@   r   r   r   r   rG   r8   r   r   r   )Za_0Zb_0Za_1Zb_1Za_2Zb_2)r   r   r   r[   r   r   )r   r   shiftsr   rX   r!   r#   r#   r$   ,test_shift_with_iterable_basic_functionality  s   



z?TestDataFrameShift.test_shift_with_iterable_basic_functionalityc                 C   s@   dg di}g d}t |}|d }t|||| d S )Nr   r   rG   )r   r   r   r   )r   r   r   r   r   r#   r#   r$   test_shift_with_iterable_series  s
   z2TestDataFrameShift.test_shift_with_iterable_seriesc                 C   s   t tjddtddddd}t|jdgddj	d	d
 d|jddd t|jdgddj	dd
 d|jddd d}tj
t|d |jddgddd W d    d S 1 s_w   Y  d S )Nr
   r   r&   r'   r(   r*   r   rK   c                 S      t | d S rq   rU   r   r#   r#   r$   r         zQTestDataFrameShift.test_shift_with_iterable_freq_and_fill_value.<locals>.<lambda>r   r?   c                 S   r   rq   r   r   r#   r#   r$   r     r   r,   r-   r/   )r   r   r   r   r   r   r   r   r   renamer0   r1   )r   r   r5   r#   r#   r$   ,test_shift_with_iterable_freq_and_fill_value  s"   "z?TestDataFrameShift.test_shift_with_iterable_freq_and_fill_valuec                 C   sZ  ddgddgd}ddg}t |}|dg j|dd	}t ddgtjd
gd}t|| d}tjt|d |j|dd W d    n1 sHw   Y  d}tjt	|d |dg W d    n1 sgw   Y  d}tjt|d |g  W d    n1 sw   Y  d}tjt|d |jddd	 W d    d S 1 sw   Y  d S )Nr   r
   r@   r   r   r   r   Z_suffix)suffixr8   )Z
a_suffix_0Z
a_suffix_1z:If `periods` contains multiple shifts, `axis` cannot be 1.r-   r   z0Periods must be integer, but s is <class 'str'>.r   z0If `periods` is an iterable, it cannot be empty.z/Cannot specify `suffix` if `periods` is an int.Zfails)
r   r   r   r[   r   r   rL   rM   rN   r   )r   r   r   r   rX   r!   r5   r#   r#   r$   .test_shift_with_iterable_check_other_arguments  s,   "zATestDataFrameShift.test_shift_with_iterable_check_other_argumentsc                 C   s$   t  }|jddd}t|| d S )Nr   r   r   )r   r   r=   r#   r#   r$   test_shift_axis_one_empty  s   z,TestDataFrameShift.test_shift_axis_one_emptyN)@__name__
__module____qualname__r%   r6   rL   markZparametrizer   emptyZonesr[   r>   rC   r   rO   r   r:   rJ   rS   rY   r^   r_   rm   rp   rs   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   tdZ&skip_array_manager_not_yet_implementedr   r   r   r   r   r   paramZxfailr   r   Ztimedelta_rangeZinterval_ranger   r   r   r   r   r   r   r   r   r   r#   r#   r#   r$   r	      s    $



	"
		+
	
		r	   )numpyr   rL   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr   r   r   r   r   r   r   r   Zpandas._testingZ_testingr   r	   r#   r#   r#   r$   <module>   s    $	