a
    Pf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   d/var/www/ai-form-bot/venv/lib/python3.9/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 )
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   s`   t g ddd}tdg di|d}| }|d jtdksDJ |d}t|j| d S )N)l            l           l   
        r!   r"   r   r   r   r   r%   Zuint64)	r	   r   r+   r$   r(   r*   r,   assert_index_equalr%   r.   idxr/   r1   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sDJ |d}t|j| d S )N20130101r   
US/Easternperiodstzr!   r"   r   r3   r4   zdatetime64[ns, US/Eastern])	r	   r   r   r+   r$   r*   r,   r5   r%   r6   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   Dr7   r<   freqr=   r#   r   r   CrA   Ear   r4   )r7   rH   r   r   )r   r   ranger+   r,   r-   )r.   Ztz_aware_fixturer=   r7   r/   expectedr1   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sTJ d S )Nz
2012-06-02
   r;   r   r%   )r   r   r(   randomdefault_rngstandard_normallenr+   r*   r%   r=   )r.   r=   Zdrr/   Z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"   rL   )rU   yrV   r4   )	r   Zfrom_breaksr(   aranger   r*   r,   r-   r+   )r.   r7   originalr1   rJ   Z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 ]2\}\}}|	|}|| }	t
|t||	  qRd 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 sJJ t
|| | g d}|jddd}| }|d= |jdgdd}t
|| d S )NTZfuture_stackr   r!   barfirstsecondlevel_0FZcheck_nameslevel_1r%   r"   r!   )exactr   r%   r   r   r   r   Zinplacer&   append)stackr   r%   namesr+   	enumeratezipr   codesZtaker,   r5   r	   assert_series_equalr   valuescopyr#   rI   rP   r   r*   r-   )r.   float_frameZstackedrh   	delevelediZlevZlevel_codesrm   r#   Z
deleveled2Zrdfexpr/   resetrR   rQ   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 sVJ |jdd
}|d u snJ |jjd u s~J d S )Nr   r   r      r@            r   r   rE   rA   r   rU   r"   r   r%   Tr&   rd   )r   r	   rI   r+   r%   r#   )r.   r/   rt   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 )Nrv   rx   r|   r   r   r   r   levelr   T)r   r'   rE   rA   )r   rE   rA   )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 g dg dgg dd}tjtdd& ||jddgd	 W d    n1 sV0    Y  tjtd
d& ||jg dd	 W d    n1 s0    Y  d S )Nrv   rx   r|   r   z(L|l)evel \(?E\)?matchr   rF   r   zToo many levelsr3   )r   pytestraisesKeyErrorr*   r+   
IndexError)r.   r   r/   r   r   r   test_reset_index_level_missing   s
    4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szJ d S )	N        rL   r   gQ#@timer"   speed)r%   r#   )	r(   rW   sqrtr   r	   r   r+   r$   float64)r.   r   s1r/   rs   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   )rU   rV   zc                 S   s   g | ]
}|gqS r   r   ).0rU   r   r   r   
<listcomp>       zBTestResetIndex.test_reset_index_multiindex_col.<locals>.<listcomp>rH   r"   )r   r   c)meanmedianr   r   )rH   r   r   r   )r   r   r   r   col_fill)rH   r   r   r   r   blah	col_levelr   )r   r   r   r   r3   drh   r   )r   r   )r(   rM   rN   rO   astypeobjectZhstackr   r	   r+   r,   r-   r   from_arraysrI   )r.   valsr7   fullr/   rR   rQ   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rH   r   r   r   r   r   r   r   r   rE   r   r   r   r   r3   皙?g@)	r   r(   nanrM   rN   r*   r+   r,   r-   )r.   r/   rR   r   r   r   test_reset_index_multiindex_nan.  s6    

 z.TestResetIndex.test_reset_index_multiindex_nanr#   Nr!   r   g      @ry   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sJ t g dg dg|d}t|| d S )Nr   r   r   rw   z1/1/2013z1/2/2013r   r   r}   r%   i  r   datetime64[ns])r   r   r   )r   r   rw   r   )r   r   r%   r#   r+   r	   r   
isinstancestrr   r$   r   r,   r-   )r.   r#   r/   r1   itemr   rJ   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   rc   )r   r   r+   r   r%   r,   r-   )r.   r/   r1   rJ   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 sV0    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 s0    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 s0    Y  | dgjddd}t|| d S )Nr   r   )cannot insert \('A', ''\), already existsr   )r   r   r   r   )r_   r   r   )r   r   )ZaxisTre   z0Item must have length equal to number of levels.)rE   r   rq   )r   rH   r   )r   r   rq   r   r   )rE   r   ii)rE   r   r   r   zFcol_fill=None is incompatible with incomplete column name \('C', 'c'\))r   r   rE   r   )rename_axisr+   r,   r-   r   r   
ValueErrorr*   r   r   r   pdconcat)r.   r   r1   msgZidx_colrJ   r   r0   r   r   r   #test_reset_index_multiindex_columns  s>    ,04z2TestResetIndex.test_reset_index_multiindex_columnsflagFTallow_duplicatesc           	      C   s   | d}|j|d}|rl|rl|j|d}ddgddgddgg}tg dg dgt|d	}t|| nL|sz|rzd
}nd}tj	t
|d |j|d W d    n1 s0    Y  d S )Nr   Z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   )	r.   r   r   r   r/   r1   r   rJ   r   r   r   r   (test_reset_index_duplicate_columns_allow  s    
z7TestResetIndex.test_reset_index_duplicate_columns_allowc                 C   sT   | d}|j|d}d}tjt|d |  W d    n1 sF0    Y  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 d    n1 s00    Y  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_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 )Nr?   r@   rA   idx1rB   idx2r)   r#   r$   r$   rD   rG   r4   )r   r   rH   r   r   )r   r	   rI   r   r   r   r(   rW   r,   r-   r+   )r.   tz_naive_fixturer=   r   r   r7   r/   rJ   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 )Nr?   r@   rA   r   rB   r   r)   r   z1/1/2012ZMSzEurope/Parisidx3r   rD   rG   r4   )r   r   r   rH   r   r   )r   r	   rI   r   r   r   r(   rW   r+   r,   r-   )
r.   r   r=   r   r   r   r7   r/   rJ   r1   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 )Nr9   r   r;   rH   r   ry   r)   r   r   r}   za a a b b b)r_   ra   rH   r   )r   r   from_productr   r(   rW   reshapesplitrf   r+   r,   r-   )r.   r   r=   dtir7   r/   rJ   r1   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 )Nr9   r   Mr<   rC   abcmonthfeaturer   	   r)   r   r   rH   r%   r   z2013-01rC   z2013-02z2013-03r   )r   r   rH   r   )r   r   r   period_rangelistr   r(   rW   r   ZPeriodr+   r,   r-   )r.   r7   r/   rJ   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|g dd}ttjd	d
g d|d}|	 }t
|d sfJ t|d svJ d S )Nr!   r\   rL            ?r   )Zprm0prm1prm2r   r   )r{   r   r   r}   r   r   )r   r   r   r   r   r(   rM   rN   rO   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(J |jj|jjks<J d S )NTr&   )r+   rP   r   r%   r#   )r.   Z/multiindex_year_month_day_dataframe_random_dataZymdrp   r   r   r   test_reset_index_with_dropH  s    z)TestResetIndex.test_reset_index_with_dropzix_data, exp_datarT      )rH   r   rU   
2020-01-01{   r   c                 C   sF   t j|ddgd}tdddgi|d}| }t|}t|| d S )NrH   r   r   rU   rT   r   r4   )r   r   r   r+   r,   r-   )r.   Zix_dataZexp_dataZixr1   rJ   r   r   r   test_reset_index_nat_multiindexQ  s
    z.TestResetIndex.test_reset_index_nat_multiindexrk   )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   rH   r   coldatar%   r   )
categoriesr   rw   )r_   ra   r   r_   ra   )r   r   rI   rP   r   r   Z
from_codesr+   r,   r-   r*   )r.   rk   r%   r   r/   rJ   resr   r   r   :test_rest_index_multiindex_categorical_with_missing_valuesk  s    zITestResetIndex.test_rest_index_multiindex_categorical_with_missing_values)%__name__
__module____qualname__r2   r8   r>   rK   r   markparametrizerS   rY   ru   r~   r   r   r   r   r   r   Z	Timedeltar   r   r   r   r   r   r   r   r   r   r   r   r   NaTr   r   r   r   r   r   r    $   sz   
L

	8%

2

	 
	 r    zarray, dtyperH   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   r4   string)r_   ra   Zlevel_2)r   r   r   r+   Zdtypesr   r   r(   r)   r   r,   rl   )arrayr$   using_infer_stringr7   r1   rJ   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   rw   rH   r   r   r   r   r   r   abcdr   startr   stepr}   r   r)   )r   DatetimeIndexr   r   r   r+   r   r   r   r,   r-   )r   r7   r/   r1   rJ   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
< | r|d d|d< t	
|| d S )Nr   r   r   g      $@rH   )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   r/   r1   rJ   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-01rA   )rC   r<   r   )idtstamprH   )r   r  r  r  )r  z
2015-07-02r   r   )r$   r#   )r  rH   r4   )rI   r   r   r   r   r   locr*   r+   r   r,   r-   )r7   r  r/   r1   Zexp_dtirJ   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   ZYearr"   r3   r   )r   r   r   )r   r   r   r   r   )	r   r(   eyer	   r   r+   r
   r,   r-   )r/   r1   rJ   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%   rm   r,   rl   )ro   r1   rJ   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 )NTrZ   r   r[   r]   r^   	new_first
new_secondr   Fr`   )rg   r   r%   rh   r+   r,   rl   )ro   
stacked_dfrh   r1   rJ   r   r   r   "test_reset_index_rename_multiindex  s    r  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 sZ0    Y  tjtd
d |jdgd	 W d    n1 s0    Y  d S )NTrZ   r   )r]   r^   z-Index names must be str or 1-dimensional listr   r  r  r   zlist index out of range)rg   r   r   r   r   r+   r   )ro   r  r   r   r   test_errorreset_index_rename  s    0r  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 )Nr@   rL   r   Fr"   )
r   rI   r%   r#   r+   r   r,   rl   r   r-   )Zresult_seriesZexpected_seriesZresult_frameZexpected_framer   r   r   !test_reset_index_false_index_name  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,   Zfixturer   r    r   r   r   r   ZPeriodDtyper   r   r  r  r
  r  r  r  r  r   r   r   r   <module>   s>   8
    g



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