U
    sVcJ                     @   s   d dl Zd dl m Z  d dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZmZmZmZmZmZ d dlmZ G dd dZG dd dZG dd	 d	Zd
d Zdd ZdS )    N)datetime)		DataFrameDatetimeIndexIndex
MultiIndexSeries	Timestampconcat
date_rangeto_timedeltac                   @   s   e Zd Zdd Z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e	j
dddge	j
dejedgdd Ze	j
dddge	j
dddgdd Ze	j
dddge	j
dddgdd ZdS )TestDatetimeConcatc                 C   sp   ddl m} |ddd}td|i}t||g}|jd d d |k sNt|jdd  d |k sltd S )Nr   )r
   z1/1/2000
   )periodstime)Zpandas.core.indexes.datetimesr
   r   r	   ilocallAssertionError)selfr
   rngdfresult r   N/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/reshape/concat/test_datetimes.pytest_concat_datetime64_block   s    z/TestDatetimeConcat.test_concat_datetime64_blockc                 C   sr   g }| tddddg | tddddg tj|ddgd}tdd	d
d}t|td
d}t||g d S )Ni        hidatetestcolumnsz2000/1/1Dr   )startfreqr   )r   r   )appendr   r   Zfrom_recordsr
   ranger	   )r   ZrowsZdf2_objinddf1r   r   r   %test_concat_datetime_datetime64_frame#   s    z8TestDatetimeConcat.test_concat_datetime_datetime64_framec           
      C   s  t ddddd}t |d |d dd}td	d
ddgi|d}tdd
ddgi|d}t||gd
d}tdddgdddd}td
d
gddgddgg|d	dgd}t|| t ddddd}tdd
ddgi|d}	t||	gd
d}tddddddg}ttjd
gtjdgtjdgd
tjgdtjgdtjgg|d	dgd}t|| t|	d
 |	d
 gdd}td
ddgtjgd  tjgd d
ddg d||d}t|| d S )N
2011-01-01   HzEurope/Parisr   r#   tzr   )r"   endr#   ar   r   indexbZaxisz2011-01-01 00:00:00+01:00z2011-01-01 01:00:00+01:00z2011-01-01 02:00:00+01:00r#   UTCr2   r    z
Asia/Tokyoz2010-12-31 15:00:00+00:00z2010-12-31 16:00:00+00:00z2010-12-31 17:00:00+00:00z2010-12-31 23:00:00+00:00z2011-01-01 00:00:00+00:00z2011-01-01 01:00:00+00:00T)sortr0   r3   )r
   r   r	   r   Z
tz_converttmassert_frame_equalnpnanZresampleZmeanr$   )
r   Zidx1Zidx2r'   df2r   exp_idxexpectedZidx3df3r   r   r   test_concat_datetime_timezone1   sj    	  $,z0TestDatetimeConcat.test_concat_datetime_timezonec                 C   s   t ddddd}ttd}t||d}t|d d |dd  g}t|| t|dd  |d d g}t|dd  |d d  |dd  |d d d}d |jj	_
t|| d S )Nz01-Jan-2013d   Z50Lr6   r,   r1   2   )r
   listr%   r   r	   r:   r;   r$   r2   _datar#   )r   Zdrdatar@   r   r   r   r   test_concat_datetimeindex_freqr   s    6
z1TestDatetimeConcat.test_concat_datetimeindex_freqc                 C   s   t tdddtdddtdddgdd}tddgtjdd	g|d d
 gddgdd}tddgtjdd	g|d d d	 gddgdd}tjdd	d	g|gddgd}|jd jtkst	t
ddgdtjgtjdgg|d}t||gdd}t|| d S )Ni  r     i  objectdtyper0   r3   r   r.   firstsecond)namesr1   r4   )r   dtr   r   r   from_arrayslevelsrL   rJ   r   r   r<   r=   r	   r:   r;   )r   idxss2mir@   r   r   r   r   ,test_concat_multiindex_datetime_object_index   s>    &

z?TestDatetimeConcat.test_concat_multiindex_datetime_object_indexc                 C   s<  t tddddd}t tjddgdd	}t |d |d tjtjg}t||gd
d}t|| t tjtddd	}t||gd
d}t|| t tdddd}t tdddd}tj|d d < t |d |d tjtjg}t||gd
d}t|| tj|d d < t tjtddd	}t||gd
d}t|| d S )N20151124 08:0020151124 09:001h
US/Easternr#   r-   r   r   zdatetime64[ns, US/Eastern])r2   rL   Tignore_index   r5   z20151124 10:00z20151124 11:00zdatetime64[ns])r   r
   pdNaTr	   r:   assert_series_equalr%   r   xyr@   r   r   r   r   test_concat_NaT_series   s(    z)TestDatetimeConcat.test_concat_NaT_seriesr-   Nr6   c                    s   t tjgtjgg}| fdd}t td dgtd dggddgd}t tjtjtd dtd dg}t||gd	d
}t|| d S )Nc                    s   | j  S NrP   tz_localizerd   r-   r   r   <lambda>       z?TestDatetimeConcat.test_concat_NaT_dataframes.<locals>.<lambda>
2015/01/01rk   
2016/01/01r   r*   r1   r   r4   )r   r`   ra   applyr   r	   r:   r;   )r   r-   rM   rN   r@   r   r   rk   r   test_concat_NaT_dataframes   s    

	z-TestDatetimeConcat.test_concat_NaT_dataframestz1tz2rT   Z20150101c                    s   t tjgtjgg fdd}t |gfdd}t||gdd}t ttjtj|gdddgd}|fdd} kr|t}t	|| d S )	Nc                    s   | j  S rg   rh   rj   )rr   r   r   rl      rm   zNTestDatetimeConcat.test_concat_NaT_dataframes_all_NaT_axis_0.<locals>.<lambda>c                    s   | j  S rg   rh   rj   rs   r   r   rl      rm   r   r4   r   r1   c                    s   | j  S rg   rh   rj   rt   r   r   rl      rm   )
r   r`   ra   rp   r	   r   astyperJ   r:   r;   )r   rr   rs   rT   rM   rN   r   r@   r   )rr   rs   r   )test_concat_NaT_dataframes_all_NaT_axis_0   s    " 
z<TestDatetimeConcat.test_concat_NaT_dataframes_all_NaT_axis_0c                 C   s   t ttjtjgj|}t ttjgj|dgd}t ttjtjgj|ttjtjgj|d}t||gdd}t|| d S )Nr   r   )r   r   r4   )	r   r   r`   ra   rP   ri   r	   r:   r;   r   rr   rs   rM   rN   r@   r   r   r   r   )test_concat_NaT_dataframes_all_NaT_axis_1   s    z<TestDatetimeConcat.test_concat_NaT_dataframes_all_NaT_axis_1c                 C   s   t tjtjgj|}ttd|dgtd|dggddgd}ttjtjtd|dtd|dg}||krv|t}t	||g}t
|| d S )Nrn   rk   ro   r   r*   r1   )r   r`   ra   rP   ri   r   r   ru   rJ   r	   r:   r;   rw   r   r   r   (test_concat_NaT_series_dataframe_all_NaT   s$    


z;TestDatetimeConcat.test_concat_NaT_series_dataframe_all_NaT)__name__
__module____qualname__r   r(   rB   rH   rW   rf   pytestmarkparametrizerq   r`   ra   r   rv   rx   ry   r   r   r   r   r      s$   A%
r   c                	   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
ddd Zdd Zej	ddejejej	jdddgdd Zdd ZdS )TestTimezoneConcatc                 C   s  t tddddd}t tdd}t |d |d	 |d |d	 gd
d}t||gdd}t|| t tddddd}t ddg}t |d |d	 |d |d	 gd
d}t||gdd}t|| ttdd	d	gg}|d jd|d< ttdd	dgg}|d jd|d< t||g}|d j	dks2t
ttdd	d	gg}|d jd|d< ttdd	dgg}|d jd|d< t||g}|d j	dkst
ttdd	d	gtdd	dgg}|d jd|d< ttdd	dgg}|d jd|d< t||g}|d j	dkst
ttdd	d	gg}|d jd|d< ttdd	dgtdd	dgg}|d jd|d< t||g}|d j	dkst
d S )NrX   rY   rZ   r6   r\   
2012-01-01z
2012-01-02r   r   rJ   rK   Tr]   r0   r3   i  r   zdatetime64[ns, UTC]zEurope/Londonzdatetime64[ns, Europe/London]r*   )r   r
   r	   r:   rb   r   r   rP   ri   rL   r   )r   rd   re   r@   r   rM   rN   r   r   r   test_concat_tz_series  sD    $$  z(TestTimezoneConcat.test_concat_tz_seriesc                 C   s   t dtj dt dtj dg}t dtj dt dtj dg}tt|t|gdd}t|t||  |jdkst	d S )	Nr)   rk   
2011-02-01r   z
2012-02-01Tr]   zdatetime64[ns, tzlocal()])
r   dateutilr-   Ztzlocalr	   r   r:   rb   rL   r   r   rd   re   r   r   r   r   test_concat_tz_series_tzlocalT  s    z0TestTimezoneConcat.test_concat_tz_series_tzlocalc                 C   s   t dddt dddg}tdtdg}tt|t|gdd}t|t|| d	d
 tjdddtjdddg}tt|t|gdd}t|t|| d	d
 d S )Nr)   r[   rk   r   z1 dayz2 dayTr]   rJ   rK   z2011-03Mr5   z2011-04)r   r`   Z	Timedeltar	   r   r:   rb   ZPeriodr   r   r   r   'test_concat_tz_series_with_datetimelikec  s    

z:TestTimezoneConcat.test_concat_tz_series_with_datetimelikec                 C   sR   t tdddtddddtdd}t|j |j gd	d
}t|| d S )NZ20130102r[   rk   Z20130603ZCETAB   r1   r   r4   )	r   r   r%   r	   r   Zto_framer   r:   r;   )r   r>   rA   r   r   r   test_concat_tz_framer  s    

	z'TestTimezoneConcat.test_concat_tz_framec           	      C   s   t dd d}t ddd}t ddd}td|gi}td|gi}td|gi}t||gjdd}td||gitd}t|| t||gjdd}td||gitd}t|| t||gjdd}td||gi}t|| d S )	N
2015-01-01rk   r6   ESTr   T)ZdroprK   )r   r   r	   Zreset_indexrJ   r:   r;   )	r   ts1ts2ts3r'   r>   rA   resultsr@   r   r   r   test_concat_multiple_tzs  s    z+TestTimezoneConcat.test_concat_multiple_tzsz1ignore:Timestamp.freq is deprecated:FutureWarningc                 C   s   t tdddtdddtdddgdddgdddgdd	d
gd}|d dd |d< |ddg}tdddgd ddd}tdddgd dd}t||g}t dddgd dd	d
gd d|ddgd}t||g}t	
|| d S )NrI   r   r   r*   r   r   Cr_   r      )rP   r3   cdrP   c                 S   s   t | ddS )N
US/Pacificrk   )r   )r   r   r   r   rl     rm   zCTestTimezoneConcat.test_concat_multiindex_with_tz.<locals>.<lambda>r3   z
2014-01-01z
2014-01-02z
2014-01-03r   )r-   name)r   )r   r   r   r   r7   )r   r   rp   Z	set_indexr   r   r   rQ   r	   r:   r;   )r   r   Zexp_idx1Zexp_idx2r?   r@   r   r   r   r   test_concat_multiindex_with_tz  s4    


    z1TestTimezoneConcat.test_concat_multiindex_with_tzc                 C   sz   t ddgd}td|i}t||d}t||gddd}tt|t| t jt jgt| d}t|| d S )Nr   r   r6   r   r   T)r8   r^   )	r`   Zto_datetimeri   r   r	   rE   ra   r:   r;   )r   tsr0   r3   r   r@   r   r   r   test_concat_tz_not_aligned  s    $z-TestTimezoneConcat.test_concat_tz_not_alignedt1r   z*GH23037 incorrect dtype when concatenating)reason)Zmarksc           	      C   sx   t |dd}t ddd}t ddd}t||gg}t|gg}t||g}t||g|tjggddgd}t|| d S )Nr6   rk   r   r   r1   )r   r   r	   r`   ra   r:   r;   )	r   r   r   r   r   r'   r>   r   r@   r   r   r   test_concat_tz_NaT  s    z%TestTimezoneConcat.test_concat_tz_NaTc                 C   s>   t ttddddt g}ttdddd}t|| d S )N2000r   r6   )r   r-   )r	   r   r
   r:   r;   )r   r   r@   r   r   r   test_concat_tz_with_empty  s
    z,TestTimezoneConcat.test_concat_tz_with_emptyN)rz   r{   r|   r   r   r   r   r   r}   r~   filterwarningsr   r   r   paramr`   ra   Zxfailr   r   r   r   r   r   r     s*   8


r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestPeriodConcatc                 C   sp   t tjddgdd}t tjddgdd}t |d |d |d |d gd	d
}t||gdd}t|| d S )N
2015-11-01
2015-12-01r!   r5   
2015-10-01
2016-01-01r   r   z	Period[D]rK   Tr]   )r   r`   PeriodIndexr	   r:   rb   rc   r   r   r   test_concat_period_series  s
    $z*TestPeriodConcat.test_concat_period_seriesc                 C   s~   t tjddgdd}t tjddgdd}t |d |d	 |d |d	 gd
d}t||gdd}t|| |jd
ksztd S )Nr   r   r!   r5   r   r   r   r   r   rJ   rK   Tr]   )r   r`   r   r	   r:   rb   rL   r   rc   r   r   r   'test_concat_period_multiple_freq_series  s    $z8TestPeriodConcat.test_concat_period_multiple_freq_seriesc                 C   sd  t tjddgdd}t tjddgdd}t |d |d |d |d gdd	}t||gd
d}t|| |jdksztt tjddgdd}t tddg}t |d |d |d |d gdd	}t||gd
d}t|| |jdkstt tjddgdd}t ddg}t |d |d |d |d gdd	}t||gd
d}t|| |jdks`td S )Nr   r   r!   r5   r   r   r   rJ   rK   Tr]   r   r   )	r   r`   r   r	   r:   rb   rL   r   r   rc   r   r   r   test_concat_period_other_series  s$    $$$z0TestPeriodConcat.test_concat_period_other_seriesN)rz   r{   r|   r   r   r   r   r   r   r   r     s   r   c                  C   sZ   t tddd} td| i}t||g}t|jd d | t|jdd  | d S )Nr   rT   )unitr   )r   r<   Zaranger   r	   r:   r;   r   )r   r   r   r   r   r   test_concat_timedelta64_block  s
    r   c                  C   s   t dditdtjfgd} t dditdtjfdtjfgd}t| |gdd}t dtjgdd	tdtjfdtjfg}t	|| d S )
Nr0   r   r1   r3   r   r    r4   g      ?r9   )
r   r   from_tuplesr`   ra   r	   r<   r=   r:   r;   )leftrightr   r@   r   r   r   #test_concat_multiindex_datetime_nat  s      r   )r   rP   r   Znumpyr<   r}   Zpandasr`   r   r   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingr:   r   r   r   r   r   r   r   r   r   <module>   s   ,   I(
