U
    co                  	   @   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mZmZ d dlmZ e dd 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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IntervalIntervalIndex
MultiIndex
RangeIndexSeries	Timestampcut
date_rangec                  C   s.   ddgddgg} t ddgddggt| d	S )
NA Bbr            columns)r   r   from_tuples)levels r   O/tmp/pip-unpacked-wheel-g7fro6k3/pandas/tests/frame/methods/test_reset_index.pymultiindex_df   s    r   c                   @   sv  e Zd Zd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ej	dddgddggdd Zej	dddgdgg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d0d1 Zd2d3 Zej	d4d5d6gej	d7d5d6gd8d9 Zej	d4d5d6gd:d; Zej	d7d<gd=d> Zejd?d@dA ZdBdC ZdDdE ZdFdG Z ej	dHej!dfej!d'fgej!ej!gdd'gdIdJgdKfej!dfedLd'fgej!edLgdd'gdIdJgdKfej!dfedMdNd'fgej!edMdNgdd'gdIdJgdKfgdOdP Z"ej	dQddddgddddggdddRdgddddggfdSdT Z#d%S )UTestResetIndexc              	   C   sV   t dgtjtdddddd}||jdg}|jdgdd}tj||g  dd	 d S )
NZbrandr   r   fooname)r   dtypeindexTdrop)Zcheck_index_type)	r   npint64r   	set_indexr%   reset_indextmassert_frame_equal)selfdfdf2resultr   r   r   !test_reset_index_empty_rangeindex%   s      z0TestResetIndex.test_reset_index_empty_rangeindexc                 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   
        r!   r"   r   r   r   r   r%   Zuint64)
r	   r   r+   r$   r(   AssertionErrorr*   r,   assert_index_equalr%   r.   idxr/   r1   r   r   r   test_set_reset0   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20130101r   
US/Easternperiodstzr!   r"   r   r   r   r   r3   zdatetime64[ns, US/Eastern])
r	   r   r   r+   r$   r4   r*   r,   r5   r%   r6   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   Dr7   r<   freqr=   r#   r   r   CEar   r3     r   r   r      )r7   rG   r   rG   r   r   c                    s   t |  dS Nr=   r   drK   r   r   <lambda>]       z4TestResetIndex.test_reset_index_tz.<locals>.<lambda>)r   r   ranger   applyr,   r-   r+   )r.   Ztz_aware_fixturer7   r/   expectedr   rK   r   test_reset_index_tzH   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=   r4   )r.   r=   Zdrr/   Zroundtrippedxprsr   r   r   $test_frame_reset_index_tzaware_index`   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"   rU   )r]   yr^   r3   )	r   Zfrom_breaksr(   aranger   r*   r,   r-   r+   )r.   r7   originalr1   rS   Zresult2r   r   r   test_reset_index_with_intervalsi   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
|| |d	ddg}t
||  |d	ddg}t
||  |d}| d	dg}t
|| | }| }|jdd}|d ksLtt
|| | d	ddg}|jddd}| }|d= |jdgdd}t
|| d S )Nr   r!   barfirstsecondlevel_0FZcheck_nameslevel_1r%   r"   r!   T)exactr   r   r   Zinplacer&   append)stackr   r%   namesr+   	enumeratezipr   codesZtaker,   r5   r	   assert_series_equalr   valuescopyr#   rQ   rX   r   r4   r*   r-   )r.   float_frameZstackedrn   	delevelediZlevZlevel_codesrs   r#   Z
deleveled2rdfexpr/   resetrZ   rY   return_valuer   r   r   test_reset_indext   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   rI   r@            r   r   rD   rA   r]   r"   r   r%   Tr&   rj   )r   r	   rQ   r+   r%   r#   r4   )r.   r/   r{   r   r   r   test_reset_index_name   s    
z$TestResetIndex.test_reset_index_namer   r   r   r   r   c                 C   sN  t ddddgddddggd	d
ddg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  d S )Nr   r   r   rI   r@   r}   r~   r   r   r   rD   rA   r   r   levelT)r   r'   )r   r*   r+   r,   r-   )r.   r   r/   r1   r   r   r   test_reset_index_level   s    (z%TestResetIndex.test_reset_index_levelidx_levc              	   C   s   t ddddgddddggd	d
ddgd}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 d S )Nr   r   r   rI   r@   r}   r~   r   r   r   rD   rA   r   z(L|l)evel \(?E\)?matchrE   r   zToo many levelsr   )r   pytestraisesKeyErrorr*   r+   
IndexError)r.   r   r/   r   r   r   test_reset_index_level_missing   s
    ( z-TestResetIndex.test_reset_index_level_missingc                 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 )	N        rU   r   gQ#@timer"   speed)r%   r#   )
r(   r_   sqrtr   r	   r   r+   r$   float64r4   )r.   r   s1r/   rz   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   r]   r^   zc                 S   s   g | ]
}|gqS r   r   ).0r]   r   r   r   
<listcomp>  s     zBTestResetIndex.test_reset_index_multiindex_col.<locals>.<listcomp>rG   r"   r   cZmeanZmedianr   r   col_fillr   Zblah	col_levelr   r   r   rN   rn   )r   r   )r(   rV   rW   astypeobjectZhstackr   r	   r+   r,   r-   r   from_arraysrQ   )r.   valsr7   fullr/   rZ   rY   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 )NrG   r   r   r   r   r   )r   r   rD   r   r   r   皙?g@)	r   r(   nanrV   Zrandr*   r+   r,   r-   )r.   r/   rZ   r   r   r   test_reset_index_multiindex_nan6  s*      $
z.TestResetIndex.test_reset_index_multiindex_nanr#   Nr!   r   g      @r}   z
2012-12-30UTCrK   
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   rI   z1/1/2013z1/2/2013r   r   r   r%     r   datetime64[ns]r   )
isinstancer   r=   FutureWarningr   r   r%   r#   r,   assert_produces_warningr+   r	   r   strr   r$   r   r4   r-   )r.   r#   warnr/   r1   itemr   rS   r   r   r   (test_reset_index_with_datetimeindex_colsS  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   r   r   )stopr   r%   )r   r   r+   r   r%   r4   r,   r-   )r.   r/   r1   rS   r   r   r   test_reset_index_range}  s    $z%TestResetIndex.test_reset_index_rangec              	   C   s  |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   )cannot insert \('A', ''\), already existsr   )r   r   r   r   )rf   r   r   )r   r   )ZaxisTrk   z0Item must have length equal to number of levels.)rD   r   rw   rG   r   r   rw   r   r   )rD   r   ii)rD   r   r   r   zFcol_fill=None is incompatible with incomplete column name \('C', 'c'\))r   r   rD   r   )rename_axisr+   r,   r-   r   r   
ValueErrorr*   r   r   r   pdconcat)r.   r   r1   msgZidx_colrS   r   r0   r   r   r   #test_reset_index_multiindex_columns  sB    
 

 
z2TestResetIndex.test_reset_index_multiindex_columnsflagFTallow_duplicatesc           	   	   C   s   | d}|j|d}|rp|rp|j|d}ddgddgddgg}tdddgd	d	d
ggt|d}t|| n8|s~|r~d}nd}tj	t
|d |j|d W 5 Q R X d S )Nr   Zallows_duplicate_labelsr   r   r   r   r   r   r   r   r   z,Cannot specify 'allow_duplicates=True' when r   r   )r   	set_flagsr+   r   r   r   r,   r-   r   r   r   )	r.   r   r   r   r/   r1   r   rS   r   r   r   r   (test_reset_index_duplicate_columns_allow  s     
 z7TestResetIndex.test_reset_index_duplicate_columns_allowc              	   C   s@   | d}|j|d}d}tjt|d |  W 5 Q R X d S )Nr   r   r   r   )r   r   r   r   r   r+   )r.   r   r   r/   r   r   r   r   *test_reset_index_duplicate_columns_default  s
    
z9TestResetIndex.test_reset_index_duplicate_columns_defaultz	bad valuec              	   C   s*   t jtdd |j|d W 5 Q R X d S )Nzexpected type boolr   r   )r   r   r   r+   )r.   r   r   r   r   r   'test_reset_index_allow_duplicates_check  s    z6TestResetIndex.test_reset_index_allow_duplicates_checkz1ignore: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?   r@   rA   idx1rB   idx2r)   )r#   r$   r$   r   r   rD   rE   rF   r3   rH   r   r   r   rI   )r   r   rG   r   rG   r   r   c                    s   t |  dS rJ   rL   rM   rK   r   r   rO     rP   z:TestResetIndex.test_reset_index_datetime.<locals>.<lambda>z1/1/2012ZMSEurope/Parisidx3i  )r   r   r   rG   r   c                    s   t |  dS rJ   rL   rM   rK   r   r   rO      rP   c                 S   s   t | ddS )Nr   rK   rL   rM   r   r   r   rO   "  rP   r9   r;   r}   r   za a a b b br   )rf   rh   rG   rf   rh   c                    s   t |  dS rJ   rL   rM   rK   r   r   rO   ;  rP   )r   r	   rQ   r   r   r   r(   r_   r   rR   r,   r-   r+   from_productreshapesplit)	r.   Ztz_naive_fixturer   r   r7   r/   rS   r   r1   r   rK   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 )Nr9   r   Mr<   rC   abcmonthfeaturer   	   r)   r   r   rG   r%   r   z2013-01rC   z2013-02z2013-03r   r   )r   r   rG   r   )r   r   r   period_rangelistr   r(   r_   r   ZPeriodr+   r,   r-   )r.   r7   r/   rS   r1   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!   rc   rU            ?r   Zprm0Zprm1Zprm2r   r   r   r   r   rD   r   )r   r   r   r   r   r(   rV   rW   r+   r   r4   r   )r.   Ztuplesr%   r/   rv   r   r   r   $test_reset_index_delevel_infer_dtypeX  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+   rX   r   r4   r%   r#   )r.   Z/multiindex_year_month_day_dataframe_random_dataZymdrv   r   r   r   test_reset_index_with_drop`  s    z)TestResetIndex.test_reset_index_with_dropzix_data, exp_datar\      )rG   r   r]   
2020-01-01{   rN   c                 C   sF   t j|ddgd}tdddgi|d}| }t|}t|| d S )NrG   r   r   r]   r\   r   r3   )r   r   r   r+   r,   r-   )r.   Zix_dataZexp_dataixr1   rS   r   r   r   test_reset_index_nat_multiindexi  s
    z.TestResetIndex.test_reset_index_nat_multiindexrq   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   r   rG   r   col)datar%   r   )
categoriesr   rI   )rf   rh   r   rf   rh   )r   r   rQ   rX   r   r   Z
from_codesr+   r,   r-   r*   )r.   rq   r%   r   r/   rS   resr   r   r   :test_rest_index_multiindex_categorical_with_missing_values  s      zITestResetIndex.test_rest_index_multiindex_categorical_with_missing_values)$__name__
__module____qualname__r2   r8   r>   rT   r   markparametrizer[   ra   r|   r   r   r   r   r   r   r   Z	Timedeltar   r   r   r   r   r   r   filterwarningsr   r   r   r   NaTr   r   r   r   r   r   r    $   sz   
L

	8

2



\	 
	 .r    zarray, dtyperG   r   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   r3   )rf   rh   Zlevel_2)r   r   r   r+   Zdtypesr   r(   r)   r   r,   rr   )arrayr$   r7   r1   rS   r   r   r   6test_reset_index_dtypes_on_empty_frame_with_multiindex  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   rI   rG   r   )r   rq   rn   r   rN   r   Zabcdr   r   startr   stepr   r   r)   )	r   r   r   r+   r   r   r   r,   r-   )r7   r/   r1   rS   r   r   r   7test_reset_index_empty_frame_with_datetime64_multiindex  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      $@rG   r   )c1c2c3r   r   r   r   r   r   r   r   r   )r   r   Zto_datetimeheadgroupbysumr+   r   r   r,   r-   r/   r1   rS   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-01rA   )rC   r<   r   )idtstamprG   )r   r   r   r   )r   rG   z
2015-07-02r   r"   r3   )rQ   r   r   r   r   r   locr*   r+   ZDatetimeIndexr,   r-   )r7   r   r/   r1   rS   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 )NrG   r   r   r   zzIn a future version of pandas all arguments of DataFrame\.reset_index except for the argument 'level' will be keyword-onlyr   F)r   r*   r,   r   r   r+   r-   )r/   r   r1   rS   r   r   r   test_drop_pos_args_deprecation  s    r   c                  C   sz   t tdtddgddtddgdddgd} |  }t dddgdddggtdtddtddgd	}t|| d S )
Nr   r   ZYearr"   r   r   r   r   r   )	r   r(   Zeyer	   r   r+   r
   r,   r-   r   r   r   r   -test_reset_index_interval_columns_object_cast  s      r   c                 C   s\   | j dd}t| jjdd}t|d | | j dd}t| jjdd}t|d | d S )Nnew_namer   r"   r   )r+   r   r%   rs   r,   rr   )ru   r1   rS   r   r   r   test_reset_index_rename  s    r  c                 C   s|   |   d d d }t||d}ddg}||j_| }|jddgd}tj|d |d dd	 tj|d |d dd	 d S )
Nr   rb   rd   re   	new_first
new_secondr   Frg   )rm   r   r%   rn   r+   r,   rr   )ru   
stacked_dfrn   r1   rS   r   r   r   "test_reset_index_rename_multiindex  s    r  c              	   C   sx   |   d d d }t||d}tjtdd |jdddd W 5 Q R X tjtdd |jdgd W 5 Q R X d S )	Nr   )rd   re   z-Index names must be str or 1-dimensional listr   r  r  r   zlist index out of range)rm   r   r   r   r   r+   r   )ru   r  r   r   r   test_errorreset_index_rename  s     r  )+r   	itertoolsr   Znumpyr(   r   Zpandas.core.dtypes.commonr   r   Zpandasr   r   r   r   r	   r
   r   r   r   r   r   r   r   Zpandas._testingZ_testingr,   Zfixturer   r    r   r   r   r   ZPeriodDtyper   r   r   r   r   r   r  r  r  r   r   r   r   <module>   s@   8
      



