U
    *ifb                  	   @   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 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S )    )datetime)productN)is_float_dtypeis_integer_dtype)CategoricalCategoricalIndex	DataFrameIndexIntervalIntervalIndex
MultiIndex
RangeIndexSeries	Timestampcut
date_rangec                   @   s  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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/d0 Zd1d2 Zd3d4 Zej	d5ejd6fejdfgejejgd6dgd7d8gd9fejd6fed:dfgejed:gd6dgd7d8gd9fejd6fed;d<dfgejed;d<gd6dgd7d8gd9fgd=d> Zej	d?d@d@d6d6gd@d6d@d6ggd@d@dAd6gd@d6d@d6ggfdBdC ZdS )D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      fooname)columnsdtypeindexTdrop)Zcheck_index_type)	r   npint64r   	set_indexr   reset_indextmassert_frame_equal)selfdfdf2result r&   ^/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/frame/methods/test_reset_index.py!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   Ar   r      r   Zuint64)
r	   r   r   r   r   AssertionErrorr   r    assert_index_equalr   r"   idxr#   r%   r&   r&   r'   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_dt64tz6   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/   r5   freqr6   r   r)   BCEabr+     r   r*   r2      )r/   rA   rB   rA   rB   r   c                    s   t |  dS Nr6   r   drG   r&   r'   <lambda>W       z4TestResetIndex.test_reset_index_tz.<locals>.<lambda>)r   r   ranger   applyr    r!   r   )r"   Ztz_aware_fixturer/   r#   expectedr&   rG   r'   test_reset_index_tzB   s"     




z"TestResetIndex.test_reset_index_tzr6   r3   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
   r4   r   )r   r   r   randomrandnlenr   r   r   r6   r,   )r"   r6   Zdrr#   Zroundtrippedxprsr&   r&   r'   $test_frame_reset_index_tzaware_indexZ   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   rQ   )rY   yrZ   r+   )	r   Zfrom_breaksr   aranger   r   r    r!   r   )r"   r/   originalr%   rO   Zresult2r&   r&   r'   test_reset_index_with_intervalsc   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ziplevelscodesZtaker    r-   r	   assert_series_equalr   valuescopyr   rM   rT   r   r,   r   r!   )r"   Zfloat_frameZstackedrh   	delevelediZlevZlevel_codesrn   r   Z
deleveled2rdfexpr#   resetrV   rU   return_valuer&   r&   r'   test_reset_indexn   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*   r2   rD   r9            r)   r=   r>   r:   rY   r   r   r   Tr   rd   )r   r	   rM   r   r   r   r,   )r"   r#   ru   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*   r2   rD   r9   rw   rx   ry   r)   r=   r>   r:   rE   r   )levelT)r|   r   z(L|l)evel \(?E\)?matchr?   zToo many levels)	r   r   r   r    r!   pytestraisesKeyError
IndexError)r"   r#   rk   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 )	N        rQ   r*   gQ#@timer   speed)r   r   )
r   r[   sqrtr   r	   r   r   r   float64r,   )r"   r   s1r#   rt   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 )Nr2   rY   rZ   zc                 S   s   g | ]
}|gqS r&   r&   ).0rY   r&   r&   r'   
<listcomp>   s     zBTestResetIndex.test_reset_index_multiindex_col.<locals>.<listcomp>rA   r   rB   cZmeanZmedianrE    col_fillr   Zblah	col_levelr   r   r*   rJ   rh   )r   r   )r   rR   rS   astypeobjectZhstackr   r	   r   r    r!   r   from_arraysrM   )r"   valsr/   fullr#   rV   rU   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 )NrA   rB   r   r   r   r2   )r)   r=   r>   r)   r=   r*   皙?g@)	r   r   nanrR   Zrandr   r   r    r!   )r"   r#   rV   r&   r&   r'   test_reset_index_multiindex_nan-  s*      $
z.TestResetIndex.test_reset_index_multiindex_nanr   Nr   r*   g      @rw   z
2012-12-30UTCrG   
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*   r2   rD   z1/1/2013z1/2/2013r)   r=   rz   r     r   datetime64[ns]rE   )
isinstancer   r6   FutureWarningr   r   r   r   r    assert_produces_warningr   r	   r   strr   r   r   r,   r!   )r"   r   warnr#   r%   itemr   rO   r&   r&   r'   (test_reset_index_with_datetimeindex_colsJ  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*   )stoprz   r   )r   r   r   r   r   r,   r    r!   )r"   r#   r%   rO   r&   r&   r'   test_reset_index_ranget  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   r=   rB   r   r*   r   r2   rE   z)cannot insert \('A', ''\), already existsr}   )r)   r   )ra   r   )r=   rB   )ZaxisTre   z0Item must have length equal to number of levels.)r>   r   rq   rA   rq   )r>   r   ii)r>   r   r   r   zFcol_fill=None is incompatible with incomplete column name \('C', 'c'\))r   r   r>   r   )r   r   from_tuplesZrename_axisr   r    r!   r   r   
ValueErrorr   pdconcat)r"   rk   r#   r%   msgZidx_colrO   r$   r&   r&   r'   #test_reset_index_multiindex_columns  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 )-Nr8   r9   r:   idx1r;   idx2r   )r   r   r   r)   r=   r>   r?   r@   r+   rC   r   r*   r2   rD   )r   r   rA   rB   rA   rB   rE   c                    s   t |  dS rF   rH   rI   rG   r&   r'   rK     rL   z:TestResetIndex.test_reset_index_datetime.<locals>.<lambda>z1/1/2012ZMSEurope/Parisidx3i  )r   r   r   rA   rB   c                    s   t |  dS rF   rH   rI   rG   r&   r'   rK     rL   c                 S   s   t | ddS )Nr   rG   rH   rI   r&   r&   r'   rK     rL   r1   r4   rw   rz   za a a b b br   )ra   rb   rA   ra   rb   c                    s   t |  dS rF   rH   rI   rG   r&   r'   rK     rL   )r   r	   rM   r   r   r   r   r[   r   rN   r    r!   r   from_productreshapesplit)	r"   Ztz_naive_fixturer   r   r/   r#   rO   r   r%   r&   rG   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 )Nr1   r2   Mr5   r<   abcmonthfeaturer   	   r   r   r   rA   r   r   z2013-01r<   z2013-02z2013-03rB   r   )r   r   rA   rE   )r   r   r   period_rangelistr   r   r[   r   ZPeriodr   r    r!   )r"   r/   r#   rO   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   r^   rQ            ?r   Zprm0Zprm1Zprm2r   ry   r2   r)   r=   r>   rz   )r   r   r   r   r   r   rR   rS   r   r   r,   r   )r"   Ztuplesr   r#   rp   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   rT   r   r,   r   r   )r"   Z/multiindex_year_month_day_dataframe_random_dataZymdrp   r&   r&   r'   test_reset_index_with_drop2  s    z)TestResetIndex.test_reset_index_with_dropzix_data, exp_datar   rX      )rA   rB   rY   
2020-01-01{   rJ   c                 C   sF   t j|ddgd}tdddgi|d}| }t|}t|| d S )NrA   rB   r   rY   rX   r   r+   )r   r   r   r   r    r!   )r"   Zix_dataZexp_dataZixr%   rO   r&   r&   r'   test_reset_index_nat_multiindex;  s
    z.TestResetIndex.test_reset_index_nat_multiindexrl   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)   r=   rA   rB   col)datar   r   )
categoriesr   rD   )ra   rb   r   ra   rb   )r   r   rM   rT   r   r   Z
from_codesr   r    r!   r   )r"   rl   r   r   r#   rO   resr&   r&   r'   :test_rest_index_multiindex_categorical_with_missing_valuesU  s      zITestResetIndex.test_rest_index_multiindex_categorical_with_missing_values) __name__
__module____qualname__r(   r0   r7   rP   r   markparametrizerW   r]   rv   r{   r   r   r   r   r   Z	Timedeltar   r   r   r   filterwarningsr   r   r   r   NaTr   r   r&   r&   r&   r'   r      sf   
L"8

4

\	 
	 .r   zarray, dtyperA   rB   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+   )ra   rb   Zlevel_2)r   r   r   r   Zdtypesr   r   r   r   r    rm   )arrayr   r/   r%   rO   r&   r&   r'   6test_reset_index_dtypes_on_empty_frame_with_multiindexq  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:00r2   rD   rA   rB   )rk   rl   rh   r   rJ   r   abcdr   r   startr   steprz   r   r   )	r   r   r   r   r   r   r   r    r!   )r/   r#   r%   rO   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      $@rA   r   )c1c2c3r   r   r   r   r   r   rz   r   r   )r   r   to_datetimeheadgroupbysumr   r   r   r    r!   r#   r%   rO   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 )Nr2   z
2015-07-01r:   )r<   r5   r   )idtstamprA   )r*   r   r   r   )r   rA   z
2015-07-02r   r   r+   )rM   r   r   r   r   r   locr   r   ZDatetimeIndexr    r!   )r/   r   r#   r%   rO   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 )NrA   r   r*   r2   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   r%   rO   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   rE   )	r   r   eyer	   r   r   r
   r    r!   r   r&   r&   r'   -test_reset_index_interval_columns_object_cast  s      r   )&r   	itertoolsr   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    r   r   r   r   r   ZPeriodDtyper   r   r   r   r   r   r&   r&   r&   r'   <module>   s4   8    W



