U
    f/e_                  	   @   s   d dl m Z  d dlmZ d dlZd dlZd dlmZm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mZ d dlmZ G dd dZejdd	d
gefe
jdddde
jddfgdd Zdd Zdd Z dd Z!dd Z"dS )    )datetime)productN)is_float_dtypeis_integer_dtype)
CategoricalCategoricalIndex	DataFrameIndexIntervalIndex
MultiIndex
RangeIndex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	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dddeded d!d"d#gd$d% Zd&d' Zd(d) Zejd*d+d, Zd-d. Zd/d0 Zd1d2 Zejd3ejd4fejdfgejejgd4dgd5d6gd7fejd4fed8dfgejed8gd4dgd5d6gd7fejd4fed9d:dfgejed9d:gd4dgd5d6gd7fgd;d< Zejd=d>d>d4d4gd>d4d>d4ggd>d>d?d4gd>d4d>d4ggfd@dA ZdS )BTestResetIndexc                 C   sd   t dddgdd}tdddd	gi|d
}| }|d jtdksHt|d}t|j	| d S )Nl            l           l   
        foonameAr         indexZuint64)
r	   r   reset_indexdtypenpAssertionError	set_indextmassert_index_equalr   selfidxdfresult r%   O/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/frame/methods/test_reset_index.pytest_set_reset   s    
zTestResetIndex.test_set_resetc                 C   sb   t tdddddd}tddd	d
gi|d}| }|d jdksFt|d}t|j	| d S )N20130101   
US/Easternperiodstzr   r   r   r   r   r   r   zdatetime64[ns, US/Eastern])
r	   r   r   r   r   r   r   r   r   r   r    r%   r%   r&   !test_set_index_reset_index_dt64tz)   s    
z0TestResetIndex.test_set_index_reset_index_dt64tzc              	      s   | t ddd dd}ttdddddd	gd
|d}ttdddtdddtdddtdddtdddgtdddddd	gddddgd}|d  fdd|d< t| | d S )N1/1/2011   Dr"   r,   freqr-   r   r   BCEabr     r   r   r)      )r"   r8   r9   r8   r9   columnsc                    s   t |  dS Nr-   r   dr?   r%   r&   <lambda>J       z4TestResetIndex.test_reset_index_tz.<locals>.<lambda>)r   r   ranger   applyr   assert_frame_equalr   )r!   Ztz_aware_fixturer"   r#   expectedr%   r?   r&   test_reset_index_tz5   s"     




z"TestResetIndex.test_reset_index_tzr-   r*   zdateutil/US/Easternc                 C   sR   t dd|d}ttjt||}| d}|jj	}|jj	}||ksNt
d S )Nz
2012-06-02
   r+   r   )r   r   r   randomrandnlenr   r   r   r-   r   )r!   r-   Zdrr#   Zroundtrippedxprsr%   r%   r&   $test_frame_reset_index_tzaware_indexM   s    z3TestResetIndex.test_frame_reset_index_tzaware_indexc                 C   st   t jtddd}t|tddddg }|d}tdtdi|d}t|| | }t|| d S )N   xr   rJ   )rR   yrS   r   )	r
   Zfrom_breaksr   aranger   r   r   rG   r   )r!   r"   originalr$   rH   Zresult2r%   r%   r&   test_reset_index_with_intervalsV   s    
z.TestResetIndex.test_reset_index_with_intervalsc                 C   s  |  d d d }t||d}ddg}||j_| }tt|jj|jjD ]2\}\}}|	|}|| }	t
|t||	  qNd d g|j_| }
t
j|d |
d dd t
j|d |
d dd | }t|jjd	d
}t
|d	 | | }d|d	< | }t|jjdd
}t
|d | d	|j_| }t
|d	 t|j t
j|jttt|dd d|j_| }|jjdkst| d	ddg}|ddg}t
j||dd |d	ddg}t
j|| dd |d	ddg}t
j|| dd |d}| d	dg}t
j||dd | }| }|jdd}|d ks\tt
j||dd | d	ddg}|jddd}| }|d= |jdgdd}t
j||dd d S )Nr   )r   barfirstsecondlevel_0F)Zcheck_nameslevel_1r   r   r   T)exactr=   r   r4   Zinplacedropappend)stackr   r   namesr   	enumerateziplevelscodesZtaker   r   r	   assert_series_equalr   valuescopyr   rE   rM   r=   r   r   rG   )r!   Zfloat_frameZstackedrc   	delevelediZlevZlevel_codesri   r   Z
deleveled2rdfexpr#   resetrO   rN   return_valuer%   r%   r&   test_reset_indexa   sv    
    
zTestResetIndex.test_reset_indexc                 C   s   t ddddgddddggd	d
ddgttdddd}| jjd ksJt|jddjjd ksbt|jdd}|d kszt|jjd kstd S )Nr   r   r)   r;   r0            r   r4   r5   r1   rR   r   r=   r   Tr^   r]   )r   r	   rE   r   r   r   r   )r!   r#   rp   r%   r%   r&   test_reset_index_name   s    
z$TestResetIndex.test_reset_index_namec              
   C   s  t ddddgddddggd	d
ddgd}d	d
gddgfD ]&}|d	d
gj|d d}t||d
 |d	d
gj|d d d}t||d
 |d	d
gj|d}t|| |d	d
gj|dd}t||ddg  |d	j|d d}t|| |d	j|d d d}t|| |d	gj|d dd}t||d
ddg  q8d	d
gd	gfD ]h}tjtdd ||jd	dgd W 5 Q R X tjtdd ||jdddgd W 5 Q R X qpd S )Nr   r   r)   r;   r0   rr   rs   rt   r   r4   r5   r1   r<   r   )levelT)rw   r_   z(L|l)evel \(?E\)?matchr6   zToo many levels)	r   r   r   r   rG   pytestraisesKeyError
IndexError)r!   r#   rf   r$   Zidx_levr%   r%   r&   test_reset_index_level   s*    ( z%TestResetIndex.test_reset_index_levelc                 C   s~   t ddt dd }td|d  d t|dddd}t|}| }|d jt jks^t	| }|d jt jkszt	d S )	Ng        rJ   r   gQ#@timer   speed)r   r   )
r   rT   sqrtr   r	   r   r   r   float64r   )r!   r   s1r#   ro   r%   r%   r&   test_reset_index_right_dtype   s     
 z+TestResetIndex.test_reset_index_right_dtypec                 C   s  t jddt}dddg}t dd |D |f}t|t|ddd	d	d
gdddggd}| }t|dd	d	d
gddddggd}t	
|| |jd d}t|dd	d	d
gddddggd}t	
|| |jddd}t|dd	d	d
gddddggd}t	
|| t|tjdddgdddggddgdd	d	d
gdddggd}|d}t|tdddgdddd	d	d
gddddggd}t	
|| |jdd d}t|ttddddd	d	d
gddddggd}t	
|| |jdddd}t|ttddddd	d	d
gddddggd}t	
|| d S )Nr)   rR   rS   zc                 S   s   g | ]
}|gqS r%   r%   ).0rR   r%   r%   r&   
<listcomp>   s     zBTestResetIndex.test_reset_index_multiindex_col.<locals>.<listcomp>r8   r   r9   cZmeanZmedianr<    col_fillr   Zblah	col_levelr   r   r   rB   rc   )r   r   )r   rK   rL   astypeobjectZhstackr   r	   r   r   rG   r   from_arraysrE   )r!   valsr"   fullr#   rO   rN   r%   r%   r&   test_reset_index_multiindex_col   sh    

    
z.TestResetIndex.test_reset_index_multiindex_colc                 C   s  t dddgddtjgtjdd}|dd	g }t|| t tjddgddd
gtjdd}|dd	g }t|| t dddgddd
gtjddgd}|dd	g }t|| t dddgtjtjtjgtjdd}|dd	g }t|| d S )Nr8   r9   r   r   r   r)   )r   r4   r5   r   r4   r   皙?g@)	r   r   nanrK   Zrandr   r   r   rG   )r!   r#   rO   r%   r%   r&   test_reset_index_multiindex_nan!  s*      $
z.TestResetIndex.test_reset_index_multiindex_nanr   Nr   r   g      @rr   z
2012-12-30UTCr?   
2012-12-31c              	   C   s   d }t |tr|jd k	rt}tddgddggtddddgd	}||j_t	| |
 }W 5 Q R X |d k	rr|nd
}t|tdddtdddg}t |tr|dkr|d}n|jtksttdddgdddgg|d}t|| d S )Nr   r   r)   r;   z1/1/2013z1/2/2013r   r4   ru   r     r   datetime64[ns]r<   )
isinstancer   r-   FutureWarningr   r   r   r   r   assert_produces_warningr   r	   r   strr   r   r   r   rG   )r!   r   warnr#   r$   itemr=   rH   r%   r%   r&   (test_reset_index_with_datetimeindex_cols>  s*    z7TestResetIndex.test_reset_index_with_datetimeindex_colsc                 C   sv   t ddgddggddgtddd}| }t|jts<tt dddgdddggdddgtddd}t|| d S )	Nr   r   r   r4   r   )stopru   r   )r   r   r   r   r   r   r   rG   )r!   r#   r$   rH   r%   r%   r&   test_reset_index_rangeh  s    $z%TestResetIndex.test_reset_index_rangec              	   C   s  ddgddgg}t ddgddggt|d	}|dg d }t|| d
}tjt	|d |d  W 5 Q R X |
dg }t|| t dgdggtdgd	}tj||ddg gdd}|j
dgdd }t|| d}tjt	|d |dg  W 5 Q R X dddgdddgg}t ddgddggt|d	}t dgdggtdgd	}tj||gdd}|dgjdd}t|| tjt	dd |dgjd d W 5 Q R X |dgjddd}t|| d S )Nr   r   r4   r9   r   r   r   r)   r<   z)cannot insert \('A', ''\), already existsrx   )r   r   )rZ   r   )r4   r9   )ZaxisTr`   z0Item must have length equal to number of levels.)r5   r   rl   r8   rl   )r5   r   ii)r5   r   r   r   zFcol_fill=None is incompatible with incomplete column name \('C', 'c'\))r   r   r5   r   )r   r   from_tuplesZrename_axisr   r   rG   rz   r{   
ValueErrorr   pdconcat)r!   rf   r#   r$   msgZidx_colrH   Zdf2r%   r%   r&   #test_reset_index_multiindex_columnst  sF    
 

 
z2TestResetIndex.test_reset_index_multiindex_columnsz1ignore:Timestamp.freq is deprecated:FutureWarningc           	         s  | t ddd dd}ttdddd}t||g}ttjddd	d
ddddgd|d}ttdddtdddtdddtdddtdddgtjddd	tjddd	d
ddddgdddddgd}|d 	 fdd|d< t
| | t dddddd}t|||g}ttjddd	d
ddddgd|d}ttdddtdddtdddtdddtdddgtjddd	tdddtdddtdddtdddtdddgtjddd	d
ddddgd dddddgd}|d 	 fd!d|d< |d 	d"d |d< t
| | tddgt d#d d$g}ttjd%dd	d%ddg|d&}td' td(ddtd(ddtd(ddgd tjd%dd	d)d*d+dgd}|d+ 	 fd,d|d+< | }t
|| d S )-Nr/   r0   r1   idx1r2   idx2int64)r   r   r   r   r4   r5   r6   r7   r   r:   r   r   r)   r;   )r   r   r8   r9   r8   r9   r<   c                    s   t |  dS r>   r@   rA   r?   r%   r&   rC     rD   z:TestResetIndex.test_reset_index_datetime.<locals>.<lambda>z1/1/2012ZMSEurope/Parisidx3i  )r   r   r   r8   r9   c                    s   t |  dS r>   r@   rA   r?   r%   r&   rC     rD   c                 S   s   t | ddS )Nr   r?   r@   rA   r%   r%   r&   rC     rD   r(   r+   rr   ru   za a a b b br   )rZ   r[   r8   rZ   r[   c                    s   t |  dS r>   r@   rA   r?   r%   r&   rC     rD   )r   r	   rE   r   r   r   r   rT   r   rF   r   rG   r   from_productreshapesplit)	r!   Ztz_naive_fixturer   r   r"   r#   rH   r   r$   r%   r?   r&   test_reset_index_datetime  s    





    









  



z(TestResetIndex.test_reset_index_datetimec                 C   s   t jtjddddtdgddgd}ttjd	d
ddd|dgd}ttj	dddgd tj	dddgd  tj	dddgd  dddgd tjd	d
dddddgd}|
 }t|| d S )Nr(   r)   Mr,   r3   abcmonthfeaturer   	   r   r   r   r8   r   r=   z2013-01r3   z2013-02z2013-03r9   r   )r   r   r8   r<   )r   r   r   period_rangelistr   r   rT   r   ZPeriodr   r   rG   )r!   r"   r#   rH   r$   r%   r%   r&   test_reset_index_period  s,      	z&TestResetIndex.test_reset_index_periodc                 C   sz   t tddgddgddg}tj|ddd	gd
}ttjdddddg|d}| }t	|d sft
t|d	 svt
d S )Nr   rW   rJ            ?r   Zprm0Zprm1Zprm2r   rt   r)   r   r4   r5   ru   )r   r   r   r   r   r   rK   rL   r   r   r   r   )r!   Ztuplesr   r#   rk   r%   r%   r&   $test_reset_index_delevel_infer_dtype  s    z3TestResetIndex.test_reset_index_delevel_infer_dtypec                 C   s@   |}|j dd}t|jt|jks(t|jj|jjks<td S )NTr^   )r   rM   r=   r   r   r   )r!   Z/multiindex_year_month_day_dataframe_random_dataZymdrk   r%   r%   r&   test_reset_index_with_drop&  s    z)TestResetIndex.test_reset_index_with_dropzix_data, exp_datar   rQ      )r8   r9   rR   
2020-01-01{   rB   c                 C   sF   t j|ddgd}tdddgi|d}| }t|}t|| d S )Nr8   r9   r   rR   rQ   r   r   )r   r   r   r   r   rG   )r!   Zix_dataZexp_dataixr$   rH   r%   r%   r&   test_reset_index_nat_multiindex/  s
    z.TestResetIndex.test_reset_index_nat_multiindexrg   r   r   c                 C   s   t tddgtddgg|}dtt|i}t||d}ttj|d ddgdtj|d	 ddgdtd
d}| }t	|| |
ddg }t	|| d S )Nr   r4   r8   r9   col)datar   r   )
categoriesr   r;   )rZ   r[   r   rZ   r[   )r   r   rE   rM   r   r   Z
from_codesr   r   rG   r   )r!   rg   r   r   r#   rH   resr%   r%   r&   :test_rest_index_multiindex_categorical_with_missing_valuesI  s      zITestResetIndex.test_rest_index_multiindex_categorical_with_missing_values)__name__
__module____qualname__r'   r.   rI   rz   markparametrizerP   rV   rq   rv   r~   r   r   r   r   Z	Timedeltar   r   r   r   filterwarningsr   r   r   r   NaTr   r   r%   r%   r%   r&   r      sd   
M"8

4

\	 
	 .r   zarray, dtyper8   r9   z	12-1-2000r   zQ-DECr   r   c                 C   sT   t ddgddg| g}t|dd d  j}ttjtj|d}t	
|| d S )Nr   r   g      ?r   r   )rZ   r[   Zlevel_2)r   r   r   r   Zdtypesr   r   r   r   r   rh   )arrayr   r"   r$   rH   r%   r%   r&   6test_reset_index_dtypes_on_empty_frame_with_multiindexe  s    r   c                  C   s   t tdgddggg g gddgd} t| ddgd	}| }ttd
tddddd}|d d|d< |d d|d< t|| d S )Nz2020-07-20 00:00:00r)   r;   r8   r9   )rf   rg   rc   r   rB   r   Zabcdr   r   startr   stepru   r   r   )	r   r   r   r   r   r   r   r   rG   )r"   r#   r$   rH   r%   r%   r&   7test_reset_index_empty_frame_with_datetime64_multiindexw  s     r   c                  C   s   t dgdgtdd} | dddgdg  } |  }t dddgtddd	d
d}|d d|d< |d d|d< t	
|| d S )Ng      $@r8   r   )c1c2c3r   r   r   r   r   r   ru   r   r   )r   r   Zto_datetimeheadgroupbysumr   r   r   r   rG   )r#   r$   rH   r%   r%   r&   Dtest_reset_index_empty_frame_with_datetime64_multiindex_from_groupby  s     r   c                  C   s   t d} tdddd}t| |tdd}tj|jd< |dd	gd}tt dtdd
tj	dddgd	dd}t
|| d S )Nr)   z
2015-07-01r1   )r3   r,   r   )idtstampr8   )r   r   r   r   )r   r8   z
2015-07-02r   r   r   )rE   r   r   r   r   r   locr   r   ZDatetimeIndexr   rG   )r"   r   r#   r$   rH   r%   r%   r&   test_reset_index_multiindex_nat  s    r   c               	   C   sd   t ddddgid} d}tjt|d | dd}W 5 Q R X t ddddgi}t|| d S )Nr8   r   r   r)   zzIn a future version of pandas all arguments of DataFrame\.reset_index except for the argument 'level' will be keyword-onlyrx   F)r   r   r   r   r   r   rG   )r#   r   r$   rH   r%   r%   r&   test_drop_pos_args_deprecation  s    r   )#r   	itertoolsr   Znumpyr   rz   Zpandas.core.dtypes.commonr   r   Zpandasr   r   r   r   r	   r
   r   r   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   ZPeriodDtyper   r   r   r   r   r%   r%   r%   r&   <module>   s2   0    M



