o
    5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   a/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/frame/methods/test_reset_index.pymultiindex_df   s   r   c                   @   sf  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	dQg dRg dSgg dTg dSgfdUdV Z#d%S )W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 )
Nbrandr   r   fooname)r   dtypeindexTdrop)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   s`   t g ddd}tdg di|d}| }|d jtdks"J |d}t|j| d S )N)l            l           l   
        r"   r#   r   r   r   r   r&   uint64)	r	   r   r-   r%   r*   r,   r.   assert_index_equalr&   r0   idxr1   r3   r   r   r   test_set_reset0   s   
zTestResetIndex.test_set_resetc                 C   s`   t tdddddd}tdg di|d	}| }|d jd
ks"J |d}t|j| d S )N20130101r   
US/Easternperiodstzr"   r#   r   r5   r6   zdatetime64[ns, US/Eastern])	r	   r   r   r-   r%   r,   r.   r8   r&   r9   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g d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g ddg dd}|d  fdd|d< t| | d S )N1/1/2011   Dr:   r?   freqr@   r$   r   r   CrD   Ear   r6     r   r   r      )r:   rK   r   r   c                       t |  dS Nr@   r   drP   r   r   <lambda>]       z4TestResetIndex.test_reset_index_tz.<locals>.<lambda>)r   r   ranger   applyr.   r/   r-   )r0   tz_aware_fixturer:   r1   expectedr   rP   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s'J d S )Nz
2012-06-02
   r>   r&   )
r   r   r*   randomrandnlenr-   r,   r&   r@   )r0   r@   drr1   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#   r[   )re   yrf   r6   )	r   from_breaksr*   aranger   r,   r.   r/   r-   )r0   r:   originalr3   rY   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 ]\}\}}|	|}|| }	t
|t||	  q'd 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sJ | g d}|ddg}t
|| |g d}t
||  |g d}t
||  |d}| d	dg}t
|| | }| }|jdd}|d u s"J t
|| | g d}|jddd}| }|d= |jdgdd}t
|| d S )Nr   r"   barfirstsecondlevel_0Fcheck_nameslevel_1r&   r#   r"   T)exactr   r&   r   r   r   r   inplacer'   append)stackr   r&   namesr-   	enumeratezipr   codestaker.   r8   r	   assert_series_equalr   valuescopyr$   rV   r^   r   r,   r/   )r0   float_framestackedr{   	deleveledilevlevel_codesr   r$   
deleveled2rdfexpr1   resetrb   ra   return_valuer   r   r   test_reset_indext   sn   

zTestResetIndex.test_reset_indexc                 C   s   t g dg dgg dttdddd}| jjd u sJ |jdd	jjd u s+J |jdd
}|d u s7J |jjd u s?J d S )Nr   r   r   rM   rC            r   r   rH   rD   r   re   r#   r   r&   Tr'   rv   )r   r	   rV   r-   r&   r$   )r0   r1   r   r   r   r   test_reset_index_name   s   z$TestResetIndex.test_reset_index_namer   r   r   r   r   c                 C   s@  t g dg dgg d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||g d  d S )Nr   r   r   r   r   r   r   levelr   T)r   r(   rH   rD   )r   rH   rD   )r   r,   r-   r.   r/   )r0   r   r1   r3   r   r   r   test_reset_index_level   s   z%TestResetIndex.test_reset_index_levelidx_levc                 C   s   t g dg dgg dd}tjtdd ||jddgd	 W d    n1 s+w   Y  tjtd
d ||jg dd	 W d    d S 1 sNw   Y  d S )Nr   r   r   r   z(L|l)evel \(?E\)?matchr   rI   r   zToo many levelsr5   )r   pytestraisesKeyErrorr,   r-   
IndexError)r0   r   r1   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/J | }|d jt jks=J d S )	N        r[   r   gQ#@timer#   speed)r&   r$   )	r*   rh   sqrtr   r	   r   r-   r%   float64)r0   r   s1r1   r   r   r   r   test_reset_index_right_dtype   s   z+TestResetIndex.test_reset_index_right_dtypec                 C   s  t jddt}g d}t dd |D |f}t|t|ddg dg dgd	}| }t|g d
g dgd	}t	
|| |jd d}t|g d
g dgd	}t	
|| |jddd}t|g dg dgd	}t	
|| t|tjg dg dgddgdg dg dgd	}|d}t|tg dddg d
g dgd	}t	
|| |jdd d}t|ttdddg d
g dgd	}t	
|| |jdddd}t|ttdddg dg dgd	}t	
|| d S )Nr   )re   rf   zc                 S   s   g | ]}|gqS r   r   ).0re   r   r   r   
<listcomp>  s    zBTestResetIndex.test_reset_index_multiindex_col.<locals>.<listcomp>rK   r#   )r   r   c)meanmedianr   r   )rK   r   r   r   )r   r   r   r   col_fill)rK   r   r   r   r   blah	col_levelr   )r   r   r   r   r5   rS   r{   )r   r   )r*   r\   r]   astypeobjecthstackr   r	   r-   r.   r/   r   from_arraysrV   )r0   valsr:   fullr1   rb   ra   r   r   r   test_reset_index_multiindex_col   sb   

z.TestResetIndex.test_reset_index_multiindex_colc                 C   s  t g dddtjgtjdd}|ddg }t|| t tjdd	gg d
tjdd}|ddg }t|| t g dg d
tjddgd}|ddg }t|| t g dtjtjtjgtjdd}|ddg }t|| d S )NrK   r   r   r   r   r   r   r   rH   r   r   r   r   r5   皙?g@)	r   r*   nanr\   randr,   r-   r.   r/   )r0   r1   rb   r   r   r   test_reset_index_multiindex_nan6  s*    
z.TestResetIndex.test_reset_index_multiindex_nanr$   Nr"   r   g      @r   z
2012-12-30UTCrP   
2012-12-31c                 C   s   d }t |tr|jd urt}tddgddggtddddgd	}||j_t	| |
 }W d    n1 s8w   Y  |d urC|nd
}t|tdddtdddg}t |trc|dkrc|d}n|jtksjJ tg dg dg|d}t|| d S )Nr   r   r   rM   z1/1/2013z1/2/2013r   r   r   r&     r   datetime64[ns])r   r   r   )r   r   rM   r   )
isinstancer   r@   FutureWarningr   r   r&   r$   r.   assert_produces_warningr-   r	   r   strr   r%   r   r/   )r0   r$   warnr1   r3   itemr   rY   r   r   r   (test_reset_index_with_datetimeindex_colsS  s,   
z7TestResetIndex.test_reset_index_with_datetimeindex_colsc                 C   sp   t ddgddggddgtddd}| }t|jtsJ t g dg d	gg d
tddd}t|| d S )Nr   r   r   r   r   )stopr   )r   r   r   )r   r   r   ru   )r   r   r-   r   r&   r.   r/   )r0   r1   r3   rY   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 d    n1 s+w   Y  |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 d    n1 sw   Y  g dg d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 d    n1 sw   Y  | dgjddd}t|| d S )Nr   r   )cannot insert \('A', ''\), already existsr   )r   r   r   r   )rp   r   r   )r   r   )axisTrx   z0Item must have length equal to number of levels.)rH   r   r   )r   rK   r   )r   r   r   r   r   )rH   r   ii)rH   r   r   r   zFcol_fill=None is incompatible with incomplete column name \('C', 'c'\))r   r   rH   r   )rename_axisr-   r.   r/   r   r   
ValueErrorr,   r   r   r   pdconcat)r0   r   r3   msgidx_colrY   r   r2   r   r   r   #test_reset_index_multiindex_columns  sD   
z2TestResetIndex.test_reset_index_multiindex_columnsflagFTallow_duplicatesc           	      C   s   | d}|j|d}|r7|r7|j|d}ddgddgddgg}tg dg dgt|d	}t|| d S |s>|r>d
}nd}tj	t
|d |j|d W d    d S 1 sYw   Y  d S )Nr   allows_duplicate_labelsr   r   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   )	r0   r   r   r   r1   r3   r   rY   r   r   r   r   (test_reset_index_duplicate_columns_allow  s    
"z7TestResetIndex.test_reset_index_duplicate_columns_allowc                 C   sV   | d}|j|d}d}tjt|d |  W d    d S 1 s$w   Y  d S )Nr   r   r   r   )r   r   r   r   r   r-   )r0   r   r   r1   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 d    d S 1 sw   Y  d S )Nzexpected type boolr   r   )r   r   r   r-   )r0   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	g d
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	g d
dg dd}|d 	 fdd|d< t
| | t dddddd}t|||g}ttjddd	g d
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	g d
dg d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&g d&d}|d' 	 fd(d|d'< | }t
|| d S ))NrB   rC   rD   idx1rE   idx2r+   )r$   r%   r%   rG   rJ   r6   rL   r   r   r   rM   )r   r   rK   r   r   c                    rN   rO   rQ   rR   rP   r   r   rT     rU   z:TestResetIndex.test_reset_index_datetime.<locals>.<lambda>z1/1/2012MSEurope/Parisidx3i  )r   r   r   rK   r   c                    rN   rO   rQ   rR   rP   r   r   rT      rU   c                 S   s   t | ddS )Nr   rP   rQ   rR   r   r   r   rT   "  rU   rK   r   r<   r>   r   r   za a a b b br   )rp   rs   rK   rs   c                    rN   rO   rQ   rR   rP   r   r   rT   ;  rU   )r   r	   rV   r   r   r   r*   rh   r   rW   r.   r/   r-   from_productreshapesplit)	r0   tz_naive_fixturer   r   r:   r1   rY   r   r3   r   rP   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  g dd tjd	d
ddg dd}|
 }t|| d S )Nr<   r   Mr?   rF   abcmonthfeaturer   	   r+   r   r   rK   r&   r   z2013-01rF   z2013-02z2013-03r   )r   r   rK   r   )r   r   r   period_rangelistr   r*   rh   r   Periodr-   r.   r/   )r0   r:   r1   rY   r3   r   r   r   test_reset_index_period?  s(   
	z&TestResetIndex.test_reset_index_periodc                 C   sv   t tddgddgddg}tj|g dd}ttjd	d
g d|d}| }t	|d s1J t
|d s9J d S )Nr"   rm   r[            ?r   )prm0prm1prm2r   r   r   r   r   r   r   )r   r   r   r   r   r*   r\   r]   r-   r   r   )r0   tuplesr&   r1   r   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J |jj|jjksJ d S )NTr'   )r-   r^   r   r&   r$   )r0   /multiindex_year_month_day_dataframe_random_dataymdr   r   r   r   test_reset_index_with_drop`  s   z)TestResetIndex.test_reset_index_with_dropzix_data, exp_datard      )rK   r   re   
2020-01-01{   rS   c                 C   sF   t j|ddgd}tdddgi|d}| }t|}t|| d S )NrK   r   r   re   rd   r  r6   )r   r   r   r-   r.   r/   )r0   ix_dataexp_dataixr3   rY   r   r   r   test_reset_index_nat_multiindexi  s
   z.TestResetIndex.test_reset_index_nat_multiindexr~   )r   r   r   r   )r   r   r   r   )r   r   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   rK   r   col)datar&   r   )
categoriesr   rM   )rp   rs   r  rp   rs   )r   r   rV   r^   r   r   
from_codesr-   r.   r/   r,   )r0   r~   r&   r  r1   rY   resr   r   r   :test_rest_index_multiindex_categorical_with_missing_values  s   zITestResetIndex.test_rest_index_multiindex_categorical_with_missing_values)$__name__
__module____qualname__r4   r;   rA   rZ   r   markparametrizerc   rk   r   r   r   r   r   r   r   r   	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, dtyperK   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   r6   )rp   rs   level_2)r   r   r   r-   dtypesr   r*   r+   r   r.   r   )arrayr%   r:   r3   rY   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   rM   rK   r   )r   r~   r{   r   rS   r   abcdr   r   startr   stepr   r   r+   )	r   r   r   r-   r   r   r   r.   r/   )r:   r1   r3   rY   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 g d	tddd
dd}|d d|d< |d d|d< t	
|| d S )Ng      $@rK   r  )c1c2c3r   r#  r$  r"  )r#  r$  r"  r   r  r   r   r   )r   r   to_datetimeheadgroupbysumr-   r   r   r.   r/   r1   r3   rY   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	g dd	dd}t
|| d S )Nr   
2015-07-01rD   )rF   r?   r   )idtstamprK   )r   r-  r,  r-  )r,  rK   )r+  z
2015-07-02r  r#   r6   )rV   r   r   r   r   r  locr,   r-   DatetimeIndexr.   r/   )r:   r-  r1   r3   rY   r   r   r   test_reset_index_multiindex_nat  s   r0  c                  C   st   t dg did} d}tjt|d | dd}W d    n1 s%w   Y  t dg di}t|| d S )NrK   )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/   )r1   r   r3   rY   r   r   r   test_drop_pos_args_deprecation  s   r1  c                  C   st   t tdtddgddtddgg dd} |  }t g dg dgtdtd	dtddgd
}t|| d S )Nr   r   Yearr#   r5   r   )r   r   r   )r   r   r   r   r   )	r   r*   eyer	   r   r-   r
   r.   r/   r)  r   r   r   -test_reset_index_interval_columns_object_cast  s   &r4  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&   r   r.   r   )r   r3   rY   r   r   r   test_reset_index_rename  s   r6  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   rl   rn   ro   	new_first
new_secondr   Frq   )rz   r   r&   r{   r-   r.   r   )r   
stacked_dfr{   r3   rY   r   r   r   "test_reset_index_rename_multiindex  s   r:  c                 C   s   |   d d d }t||d}tjtdd |jdddd W d    n1 s+w   Y  tjtdd |jdgd W d    d S 1 sJw   Y  d S )	Nr   )rn   ro   z-Index names must be str or 1-dimensional listr   r7  r8  r   zlist index out of range)rz   r   r   r   r   r-   r   )r   r9  r   r   r   test_errorreset_index_rename  s   "r;  )+r   	itertoolsr   numpyr*   r   pandas.core.dtypes.commonr   r   pandasr   r   r   r   r	   r
   r   r   r   r   r   r   r   pandas._testing_testingr.   fixturer   r    r  r  r   r   PeriodDtyper  r!  r*  r0  r1  r4  r6  r:  r;  r   r   r   r   <module>   s@    8
    



