o
    dYX                     @   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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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%e&j'dHdI Z(dJdK Z)dLdM Z*dNdO Z+dPdQ Z,dRdS Z-ejdTej.dUejj/dVdWdXdYgejjdZed[d\ded[d\d]d^e0j1d[d\d_de0j2d`d\d_de0j3dadbd\dej.e0j4dcd\gdddeejj/dVdWdXej.e0j4dcd\gdfdeejj/dVdWdXgdgdh didjdk Z5dldm Z6dndo Z7dpS )qTestDataFrameShiftzinput_data, output_data)r   )shape)         ?c                 C   s\   |j dd ||d}|tur ||tt|tddd}n||dd}t|| d S )NF)write   float64)indexcolumnsdtyper   )setflagsshiftr   rangelentmassert_equal)self
input_dataoutput_dataframe_or_seriesresultexpected r    j/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/tests/frame/methods/test_shift.pytest_shift_non_writable_array   s   
z0TestDataFrameShift.test_shift_non_writable_arrayc                 C   sz   |t j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 )N   1/1/2000Hperiodsfreqr   r   5Tr(   4H   )
nprandomrandnr   r   r   r   assert_index_equalr   Hour)r   r   tsr   	exp_indexr    r    r!   test_shift_mismatched_freq*   s   z-TestDataFrameShift.test_shift_mismatched_freqobjr#   z1/1/2011   r%   r&   2017r'   r)   
shift_size)r   r   r   c                 C   s&   |t ur| }|||usJ d S N)r   to_framer   )r   r6   r:   r   r    r    r!   test_shift_always_copy8   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 )N   zfill_value must be a scalarmatchr   
fill_valuer   )r   r   )r   r   pytestraises
ValueErrorr   r<   r.   arangeastypeobjectiloc)r   serdfobj_serr   obj_dfr    r    r!   !test_shift_object_non_scalar_fillG   s   
z4TestDataFrameShift.test_shift_object_non_scalar_fillc                 C   s<   t ||t}|d}|td}t || d S )Nr   )r   get_objrG   intr   floatr   )r   datetime_framer   r3   shiftedr   r    r    r!   test_shift_intY   s   
z!TestDataFrameShift.test_shift_intr   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#   r9   r   r)   r   r   r   r>   )r   r.   rF   r   nanr   r   )	r   r   r   r   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   2Hz2016-1-1 02:00:00)r   r   r   r   r   )r   r'   r   r6   r   r   r    r    r!   test_shift_preserve_freqstrk   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   rG   rH   valuestolist)r   r   datesr6   resexp_valsexpr    r    r!   test_shift_dst{   s   


 z!TestDataFrameShift.test_shift_dstex)r_   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%   r_   r`   ra   rc   r   )r   r   r   r   r   rf   )r   r   rn   ri   r6   rj   rl   r    r    r!   test_shift_dst_beyond   s   
z(TestDataFrameShift.test_shift_dst_beyondc                 C   s&   t ||}|d}t || d S Nr   )r   rO   r   r   )r   rR   r   r6   	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   r1   r   assert_series_equalassert_numpy_array_equaldropnarg   )r   rR   rJ   rS   shifted_serrr   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)check_names)r   rO   r   BDayr   r   r   r   r   rv   xsassert_almost_equalat)
r   rR   r   r6   offsetrS   rr   shifted2d	shifted_dr    r    r!   test_shift_by_offset   s   
 z'TestDataFrameShift.test_shift_by_offsetc           
      C   sT  t  }t ||}|d}|d}t |j|j t |j|j |tu rAt |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   r|   zdoes not match PeriodIndex freqr?   Dr+   )r   makePeriodFramerO   r   r1   r   r   rw   rI   rx   rg   r   r~   r   rC   rD   rE   )
r   r   psrS   rr   r   shifted3msgshifted4shifted5r    r    r!   test_shift_with_periodindex   s.   

(z.TestDataFrameShift.test_shift_with_periodindexc                 C   sf   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   r   Tr   ignore_indexaxisr   r   r.   r/   randpdconcatrW   r   rI   r   r   assert_frame_equalr   rK   r   r   r    r    r!   test_shift_other_axis   s   (z(TestDataFrameShift.test_shift_other_axisc                 C   sf   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   r   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   )Tr   r~   r   r   r   r   )r   rR   r6   r   rS   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   r   )r   r   r.   arrayrW   rH   r   r   )r   rK   rsxpr    r    r!   test_shift_bool  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)ndframer    r    r!   get_cat_values   s   zBTestDataFrameShift.test_shift_categorical1.<locals>.get_cat_valuesre   r   )r   r   r   rI   rx   r1   r   r.   allcodes
categories)r   r   r6   rtr   catsp1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   r|   C)onetwor   )r   r   r   r   r   )r   rY   s2rK   r   r   r    r    r!   test_shift_categorical4  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   rA   )r   r   r   r   F)r   orderedz9Cannot setitem on a Categorical with a new category \(f\)r?   f)r   r   Categoricalr   r   rC   rD   	TypeError)r   r   r3   rj   r   r   r    r    r!   !test_shift_categorical_fill_value=  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&   )r          @      @      @g      @r)   )        r   r   r   r   r   r   rA   )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   r   r   r   rf   )r   r   dtir3   rl   r   rj   r6   r    r    r!   test_shift_fill_valueL  s$   z(TestDataFrameShift.test_shift_fill_valuec                 C   s&   t dg i}|d}t|| d S )Nfoor   )r   r   r   r   )r   rK   r   r    r    r!   test_shift_emptyh  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   ro   r   r      rV   r   r   )listr   r.   r/   r0   r   copyrI   r   r   appendisnasumr   rv   r   r   )r   column_listsdatarS   r   rK   snullsr    r    r!   test_shift_duplicate_columnso  s   ,
z/TestDataFrameShift.test_shift_duplicate_columnsc                 C   s4  t tjjddd}t tj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}|skt|jjdkskJ |j	ddd}|j
g ddd}|dd
 }tj|jd d dd f< |j|_t|| d S )N  r#   r>   sizer#   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   rQ   )r   r   set_axisr   r
   rG   r   rK   r    r    r!   <lambda>      zETestDataFrameShift.test_shift_axis1_multiple_blocks.<locals>.<lambda>re   )r   r>   r-   r   r   c                 S   r   )Nr   r   rQ   )r>   r-   r   r   r    r    r!   r     r   )r   r.   r/   randintr   r   r   r   blocksr   takepiperW   rI   r   r   r   )r   using_array_managerdf1df2df3r   r   r    r    r!    test_shift_axis1_multiple_blocks  s0   z3TestDataFrameShift.test_shift_axis1_multiple_blocksc                 C   sp  t tjjddd}t tjjdd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sDJ |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   rB   )r   r   r   r   re   )r   r>   r   r   )r   r.   r/   r   r   r   rI   r   int_r   r   r   r   r   r   r   )r   r   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   st   t  }t ||}|jddd}|jddd}t || |jdd}t || |jt d}t || d S )Nr   inferr+   r   r|   )r   r   rO   r   r   r   r~   )r   r   r   rS   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   rO   r   r   r   r(   r   rg   r   r.   asarrayr   
_with_freq)	r   rR   r   dtobjrS   rr   r   inferred_tsr   r    r    r!   #test_datetime_frame_shift_with_freq  s$   z6TestDataFrameShift.test_datetime_frame_shift_with_freqc                 C   sX   t  }t ||}d}tjt|d |jdd W d    d S 1 s%w   Y  d S )Nz.Given freq M does not match PeriodIndex freq Br?   Mr+   )r   r   rO   rC   rD   rE   r   )r   r   r   r   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   rO   rI   rC   rD   rE   r   )r   rR   r   r   no_freqr   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 )N
2020-01-01z
2020-01-02zvalue should be ar?   r   r   rA   rt   r|   r   rt   r|   r   )r   r   	TimestamprC   rD   r   r   r<   r   _consolidate_inplacer   r   r   r   r   )r   rJ   rK   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)marksFvalsr   r   z
US/Pacific)r'   rb   r   z	2020 Daysr   r>   r   Int64r   Float32c                 C   s
   t | jS r;   )strr   )xr    r    r!   r   :  s   
 zTestDataFrameShift.<lambda>)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   r|   r   )
r   rG   r   r   r   r   r   r   r   r   )	r   r   r   rJ   rK   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.   rW   r   r   )r   cirK   r   r   r    r    r!   $test_shift_axis1_categorical_columnsV  s    "&
z7TestDataFrameShift.test_shift_axis1_categorical_columnsc                 C   sX   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   rW   r   r   )r   rK   rS   r   r   r    r    r!   test_shift_axis1_many_periodsl  s   
z0TestDataFrameShift.test_shift_axis1_many_periodsN)8__name__
__module____qualname__rC   markparametrizer.   emptyonesrW   r"   r5   r   rF   r   r   r=   rN   rT   r[   r]   rm   rp   rs   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   td&skip_array_manager_not_yet_implementedr   r   r   r   r   r   paramxfailr   period_rangetimedelta_rangeinterval_ranger   r  r  r	  r    r    r    r!   r	      s    $



	 
		+
	
r	   )numpyr.   rC   pandas.util._test_decoratorsutil_test_decoratorsr  pandasr   r   r   r   r   r   r   r   pandas._testing_testingr   r	   r    r    r    r!   <module>   s    $	