o
    ŀgm                  	   @   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/myenv/lib/python3.10/site-packages/pandas/tests/frame/methods/test_reset_index.pymultiindex_df   s   r   c                   @   sj  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dGdH Z dIdJ Z!ej	dKej"dfej"d'fgej"ej"gdd'gdLdMgdNfej"dfedOd'fgej"edOgdd'gdLdMgdNfej"dfedPdQd'fgej"edPdQgdd'gdLdMgdNfgdRdS Z#ej	dTg dUg dVgg dWg dVgfdXdY Z$d%S )Z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                 C   sh   |}t ddd|dd}ttdg dd|d}t|tdg dd	g d	d
}| }t|| d S )N1/1/2011   Dr:   r?   freqr@   r$   r   r   CrD   Ear   r6   )r:   rK   r   r   )r   r   ranger-   r.   r/   )r0   tz_aware_fixturer@   r:   r1   expectedr3   r   r   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_indexX   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#   rP   )r[   yr\   r6   )	r   from_breaksr*   aranger   r,   r.   r/   r-   )r0   r:   originalr3   rN   result2r   r   r   test_reset_index_with_intervalsa   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$   rL   rT   r   r,   r/   )r0   float_framestackedrs   	deleveledilevlevel_codesry   r$   
deleveled2rdfexpr1   resetrX   rW   return_valuer   r   r   test_reset_indexl   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      rC            r   r   rH   rD   r   r[   r#   r   r&   Tr'   rn   )r   r	   rL   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        rP   r   gQ#@timer#   speed)r&   r$   )	r*   r^   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   )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>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   drs   r   )r   r   )r*   rQ   rR   rS   astypeobjecthstackr   r	   r-   r.   r/   r   from_arraysrL   )r0   valsr:   fullr1   rX   rW   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*   nanrQ   rR   r,   r-   r.   r/   )r0   r1   rX   r   r   r   test_reset_index_multiindex_nan.  s6   

 z.TestResetIndex.test_reset_index_multiindex_nanr$   Nr"   r   g      @r   z
2012-12-30UTC)r@   
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   r   z1/1/2013z1/2/2013r   r   r   r&   i  r   datetime64[ns])r   r   r   )r   r   r   r   )r   r   r&   r$   r-   r	   r   
isinstancestrr   r%   r   r.   r/   )r0   r$   r1   r3   itemr   rN   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   rm   )r   r   r-   r   r&   r.   r/   )r0   r1   r3   rN   r   r   r   test_reset_index_rangew  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   )rh   r   r   )r   r   )axisTrp   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_colrN   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   rN   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                 C   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jddd	tjddd	g d
dg dd}t	|
 | d S )NrB   rC   rD   idx1rE   idx2r+   r$   r%   r%   rG   rJ   r6   )r   r   rK   r   r   )r   r	   rL   r   r   r   r*   r^   r.   r/   r-   )r0   tz_naive_fixturer@   r   r   r:   r1   rN   r   r   r   test_reset_index_datetime  s"   
z(TestResetIndex.test_reset_index_datetimec           
      C   s   |}t ddd|dd}ttdddd}t d	dd
ddd}t|||g}ttjdddg dd|d}t|tjddd|tjdddg ddg dd}| }	t	
|	| d S )NrB   rC   rD   r   rE   r   r+   r   z1/1/2012MSzEurope/Parisidx3r   rG   rJ   r6   )r   r   r   rK   r   r   )r   r	   rL   r   r   r   r*   r^   r-   r.   r/   )
r0   r   r@   r   r   r   r:   r1   rN   r3   r   r   r   test_reset_index_datetime2  s,   

z)TestResetIndex.test_reset_index_datetime2c                 C   s   |}t dd|d}tddg|g}ttjddddd	dg|d
}td ||tjddddg dd}|	 }t
|| d S )Nr<   r   r>   rK   r   r   r+   r   r   r   za a a b b b)rh   rk   rK   r   )r   r   from_productr   r*   r^   reshapesplitrq   r-   r.   r/   )r0   r   r@   dtir:   r1   rN   r3   r   r   r   test_reset_index_datetime3  s   z)TestResetIndex.test_reset_index_datetime3c                 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*   r^   r   Periodr-   r.   r/   )r0   r:   r1   rN   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"   re   rP            ?r   )prm0prm1prm2r   r   )r   r   r   r   r   r   )r   r   r   r   r   r*   rQ   rR   rS   r-   r   r   )r0   tuplesr&   r1   r}   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J |jj|jjksJ d S )NTr'   )r-   rT   r   r&   r$   )r0   /multiindex_year_month_day_dataframe_random_dataymdr}   r   r   r   test_reset_index_with_dropH  s   z)TestResetIndex.test_reset_index_with_dropzix_data, exp_datarZ      )rK   r   r[   
2020-01-01{   r   c                 C   sF   t j|ddgd}tdddgi|d}| }t|}t|| d S )NrK   r   r   r[   rZ   r   r6   )r   r   r   r-   r.   r/   )r0   ix_dataexp_dataixr3   rN   r   r   r   test_reset_index_nat_multiindexQ  s
   z.TestResetIndex.test_reset_index_nat_multiindexrv   )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   r   )rh   rk   r  rh   rk   )r   r   rL   rT   r   r   
from_codesr-   r.   r/   r,   )r0   rv   r&   r  r1   rN   resr   r   r   :test_rest_index_multiindex_categorical_with_missing_valuesk  s   zITestResetIndex.test_rest_index_multiindex_categorical_with_missing_values)%__name__
__module____qualname__r4   r;   rA   rO   r   markparametrizerY   ra   r   r   r   r   r   r   r   r   	Timedeltar   r   r   r   r   r   r   r   r   r   r   r   r   NaTr  r	  r   r   r   r   r    $   s|    
L

	8%

2

	 
	 r    zarray, dtyperK   r   z	12-1-2000r   zQ-DECr   r   c                 C   sd   t ddgddg| g}t|dd d  j}|r |tkr d}ttjtj	|d}t
|| d S )Nr   r   g      ?r   r6   string)rh   rk   level_2)r   r   r   r-   dtypesr   r   r*   r+   r   r.   rx   )arrayr%   using_infer_stringr:   r3   rN   r   r   r   6test_reset_index_dtypes_on_empty_frame_with_multiindex  s   r  c                  C   s   t jdgdd} tj| ddggddgdd 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:00M8[ns]r   r   r   rK   r   r   r   r   r   r   abcdr   startr   stepr   r   r+   )r   DatetimeIndexr   r   r   r-   r   r   r   r.   r/   )r   r:   r1   r3   rN   r   r   r   7test_reset_index_empty_frame_with_datetime64_multiindex  s   "r  c                 C   s   t jdgdd}tdgdg|d}|ddd	gd
g  }| }tg dtddddd}|d	 d|d	< |d
 d|d
< | rO|d d|d< t	
|| d S )Nr   r  r   g      $@rK   )c1c2c3r   r  r   r  )r  r   r  r   r  r   r   r   zstring[pyarrow_numpy])r   r  r   headgroupbysumr-   r   r   r.   r/   )r  r   r1   r3   rN   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j	g d
dd	d}tt dtdd|d}t
|| d S )Nr   
2015-07-01rD   )rF   r?   r   )idtstamprK   )r   r'  r&  r'  )r%  z
2015-07-02r  r  )r%   r$   )r&  rK   r6   )rL   r   r   r   r   r  locr,   r-   r  r.   r/   )r:   r'  r1   r3   exp_dtirN   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/   )r1   r3   rN   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&   ry   r.   rx   )r{   r3   rN   r   r   r   test_reset_index_rename  s   r/  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 )NTrb   r   rd   rf   rg   	new_first
new_secondr   Fri   )rr   r   r&   rs   r-   r.   rx   )r{   
stacked_dfrs   r3   rN   r   r   r   "test_reset_index_rename_multiindex  s   r3  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 )NTrb   r   )rf   rg   z-Index names must be str or 1-dimensional listr   r0  r1  r   zlist index out of range)rr   r   r   r   r   r-   r   )r{   r2  r   r   r   test_errorreset_index_rename  s   "r4  c                  C   s   t tddtdd} d| j_|   t tddttddd}t| | ttddtdd}d|j_|  ttddttddd}t	|| d S )NrC   rP   r  Fr#   )
r   rL   r&   r$   r-   r   r.   rx   r   r/   )result_seriesexpected_seriesresult_frameexpected_framer   r   r   !test_reset_index_false_index_name  s   r9  )+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*  r-  r/  r3  r4  r9  r   r   r   r   <module>   s@    8
    g



