o
    ҷh_p                  	   @   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   ^/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/frame/methods/test_reset_index.pymultiindex_df   s   r   c                   @   sZ  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d?d@ ZdAdB ZdCdD ZdEdF Zej	dGej dfej d'fgej ej gdd'gdHdIgdJfej dfedKd'fgej edKgdd'gdHdIgdJfej dfedLdMd'fgej edLdMgdd'gdHdIgdJfgdNdO Z!ej	dPg dQg dRgg dSg dRgfdTdU Z"d%S )V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_tzF   s"   




z"TestResetIndex.test_reset_index_tzr@   r=   zdateutil/US/Easternc                 C   sX   t dd|d}ttjdt||}| d}|j	j
}|j	j
}||ks*J d S )Nz
2012-06-02
   r>   r   r&   )r   r   r*   randomdefault_rngstandard_normal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[   )rf   yrg   r6   )	r   from_breaksr*   aranger   r,   r.   r/   r-   )r0   r:   originalr3   rY   result2r   r   r   test_reset_index_with_intervalsg   s   
z.TestResetIndex.test_reset_index_with_intervalsc                 C   s  |j dd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 )NTfuture_stackr   r"   barfirstsecondlevel_0Fcheck_nameslevel_1r&   r#   r"   )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   resetrc   rb   return_valuer   r   r   test_reset_indexr   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   rf   r#   r   r&   Tr'   ry   )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*   ri   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   )r   r   )rf   rg   zc                 S   s   g | ]}|gqS r   r   ).0rf   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\   r]   r^   astypeobjecthstackr   r	   r-   r.   r/   r   from_arraysrV   )r0   valsr:   fullr1   rc   rb   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dg }t|| t tjd	d
gg dtjd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dg }t|| d S )NrK   r   r   r   r   r   r   r   r   rH   r   r   r   r   r5   皙?g@)	r   r*   nanr\   r]   r,   r-   r.   r/   )r0   r1   rc   r   r   r   test_reset_index_multiindex_nan4  s6   

 z.TestResetIndex.test_reset_index_multiindex_nanr$   Nr"   r   g      @r   z
2012-12-30UTCrP   
2012-12-31c                 C   s   t ddgddggtddddgd	}||j_| }|d ur |nd
}t|tdddtdddg}t|tr@|dkr@|	d}n|j
tksGJ 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   )r   r   r&   r$   r-   r	   r   
isinstancestrr   r%   r   r.   r/   )r0   r$   r1   r3   itemr   rY   r   r   r   (test_reset_index_with_datetimeindex_colsY  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   rx   )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   )rs   r   r   )r   r   )axisTr{   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   zYCannot specify 'allow_duplicates=True' when 'self.flags.allows_duplicate_labels' is Falser   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_checkc           	         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   )rs   rv   rK   rv   c                    rN   rO   rQ   rR   rP   r   r   rT   <  rU   )r   r	   rV   r   r   r   r*   ri   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*   ri   r   Periodr-   r.   r/   )r0   r:   r1   rY   r3   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|g dd}ttjd	d
g d|d}|	 }t
|d s3J t|d s;J d S )Nr"   rp   r[            ?r   )prm0prm1prm2r   r   )r   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_dtypeY  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_drope  s   z)TestResetIndex.test_reset_index_with_dropzix_data, exp_datare      )rK   r   rf   
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   rf   re   r  r6   )r   r   r   r-   r.   r/   )r0   ix_dataexp_dataixr3   rY   r   r   r   test_reset_index_nat_multiindexn  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   )rs   rv   r
  rs   rv   )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parametrizerd   rl   r   r   r   r   r   r   r   r   	Timedeltar   r   r   r   r   r   r   r   r   r   r  NaTr	  r  r   r   r   r   r    $   sx    
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   )rs   rv   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   r/  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   &r2  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   r4  c                 C   s   | j dd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 )NTrm   r   ro   rq   rr   	new_first
new_secondr   Frt   )r}   r   r&   r~   r-   r.   r   )r   
stacked_dfr~   r3   rY   r   r   r   "test_reset_index_rename_multiindex  s   r8  c                 C   s   | j dd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 sLw   Y  d S )NTrm   r   )rq   rr   z-Index names must be str or 1-dimensional listr   r5  r6  r   zlist index out of range)r}   r   r   r   r   r-   r   )r   r7  r   r   r   test_errorreset_index_rename  s   "r9  c                  C   s   t tddtddd} d| j_|   t tddttdddd}t| | ttddtddd}d|j_|  ttddttdddd}t	|| d S )NrC   r[   r   r  Fr#   )
r   rV   r&   r$   r-   r   r.   r   r   r/   )result_seriesexpected_seriesresult_frameexpected_framer   r   r   !test_reset_index_false_index_name  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)  r/  r2  r4  r8  r9  r>  r   r   r   r   <module>   sB    8
     



