o
    5cwj                     @   sj   d dl Zd dlZd dlmZ d dlZd dlmZmZm	Z	m
Z
mZ d dlmZ d dlmZ G dd dZdS )    N)UnsortedIndexError)	DataFrameIndex
MultiIndexSeries	Timestamp)_mklblc                   @   s
  e Z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d Zdd Zdd Zdd Zdd Zejddedddedddfdedddedddfdedd dedd!dfdedd dedd!dfdeddd"eddd"fdeddd"eddd"fdedd d"edd!d"fdedd d"edd!d"fd#edddedddfd#ed$ddedddfd#edd%dedd!dfd#ed$d%dedd!dfd#eddd"eddd"fd#ed$dd"eddd"fd#edd%d"edd!d"fd#ed$d%d"edd!d"fgd&d' ZdS )(TestMultiIndexSlicersc           	      C   s:  t tddtddtddtddg}ttt| |d	}|jt	d
dt	d ddgfd d f }|jdd |j
jD  }t|| |jdd |j
jD  }|jt	d
dt	d t	ddfd d f }t|| t jg dddgd}t jg dddgd}ttjddddd||d}|jddjdd}|jt	d t	d fd d f }t|| |jt	d t	d ft	d t	d ff }t|| |jd d t	d t	d ff }t|| |jt	d dgfd d f }|jddg }t|| |jt	d dfd d f }|jddg }t|| |jd d t	d d gff }|jd d ddgf }t|| |jt	d dft	d d gff }|jddgddgf }t|| |jd! }tg d"g d#d$tg d%dd&td'd gdd&d}t|| |jt	d ddgfd d f }|jg d( }t|| ttt| |d	}|jd
dd d ddgf }|jd)d |j
jD  }t|| |jt	d |jd d d*f dkfd d f }|jddg }t|| d+}tjt|d, |jt	d td-d.gfd d f  W d    n	1 sw   Y  tjtd/d, |jt	d dgf  W d    n	1 s/w   Y  |j
jdks=J |jddd0}|j
jdksMJ d1}tjt|d, |jt	d t	d'fd d f  W d    n	1 sqw   Y  |jt	d |jd d d*f dkfd d f }t||jddgd d f  d S )2NA   B   C   D   indexA1A3C1C3c                 S   H   g | ] \}}}}|d ks|dks|dkr|dks|dkr||||fqS r   A2r   r   r    .0abcdr   r   a/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/indexing/multiindex/test_slice.py
<listcomp>   $    
zITestMultiIndexSlicers.test_per_axis_per_level_getitem.<locals>.<listcomp>c                 S   sP   g | ]$\}}}}|d ks|dks|dkr|dks |dks |dkr||||fqS )r   r   r   r   C2r   r   r   r   r   r"   r#   ,   s(    
			)r
      )r
   r   )r
      )r   r'   onetwonames)r   foor   bar)r   r.   )r   bahlvl0lvl1   int64dtyper   columnsr   axisr'   r(   r.   r
   r   )r'   r   	   )r   r      )r0   r.   )r'   r   r(   namer0   )r   r'   r(   c                 S   r   r   r   r   r   r   r"   r#   t   r$   r/   zLcannot index with a boolean indexer that is not the same length as the indexmatchTFz\[1\] not in index)levelr;   z_MultiIndex slicing requires the index to be lexsorted: slicing on levels \[1\], lexsort depth 0)r   from_productr   r   nparangelento_numpylocslicer   valuestmassert_frame_equalfrom_tuplesreshape
sort_indexilocr   r   assert_series_equalpytestraises
ValueErrorarrayKeyError_lexsort_depthr   )	selfixdfresultexpectedr   r9   smsgr   r   r"   test_per_axis_per_level_getitem   s   "&(& 
,& ,"z5TestMultiIndexSlicers.test_per_axis_per_level_getitemc                 C   s  t g dg dg dg ddg d }|jjrJ t ddgddgd	d	gd	d
gdg d }|jtd td d	fd d f }t|| |j	d	ddd}t|| t g dg dg dg ddg d }|jjrxJ t ddgddgd	d	gd	d
gdg d }|jtd td d	fd d f }|jjrJ t|| g d}t
|}tdg| |g}td	g| |d}| }|jtd tdf }td	g|d  |d d d }t|| d S )N)r.   r.   r.   r.   )r   r   r   r   )r'   r   r'   r(   )r'   r   r(   r   )r
   r   r   r   )r
   r   r   r.   r   r'   r(   r   F)rC   
drop_level)r'   r   r'   r   )r'   r   r(   r   r      r   r>   r=   
         re         rg   r4            @ rk   r   i )r   	set_indexrP   r   	is_uniquerI   rJ   rL   rM   xsrG   r   from_arraysr   rR   )rY   r[   r]   r\   intsnidxr   r   r"   "test_multiindex_slicers_non_unique   sZ   
 
 
 
 "z8TestMultiIndexSlicers.test_multiindex_slicers_non_uniquec                    s  dd l   fddtdD }ddg}tj||gddgd	}ttjd
dddd|tdd}t	j
}|jg dddgf }|jttdtdtddftddf }t|| |j|tdtd |dd ftddf }t|| |jttdtddftddf }t|| |jtddtddftddf }t|| |j|dd df|d f }t|| d S )Nr   c              
      s,   g | ]}  d ddddd j|d qS )i  r'   re   )days)datetime	timedelta)r   irv   r   r"   r#      s    zNTestMultiIndexSlicers.test_multiindex_slicers_datetimelike.<locals>.<listcomp>rb   r'   r   date	frequencyr+   0   r5   r6   r   ABCDr8   )r   r   r   z2012-01-01 12:12:12z2012-01-03 12:12:12r
   r   )r
   r   )rv   ranger   rD   r   rE   rF   rO   listpd
IndexSlicerQ   rI   rJ   r   rL   rM   )rY   datesfreqr   r[   rs   r]   r\   r   ry   r"   $test_multiindex_slicers_datetimelike   sj   
	
		z:TestMultiIndexSlicers.test_multiindex_slicers_datetimelikec                 C   s  t dgd dgd  dgd  g dd g dg dd	}t|d
 |d
< |g d}| }|jtdd d f }|jdd }t	|| |jtdd d f }|}t	|| |jtd tddfd d f }|jg d }t	|| |jtd td tddfd d f }|jg d }t	|| |jtdtdfd d f }|jg d }t	|| |jtd tdfd d f }|}t	|| |jtd tddtdfd d f }|jg d }t	|| |jtd td tddfd d f }|jg d }t	|| d S )NA0r   r   r   )B0r   B1r   B2r(   )
2013-06-11
2013-07-02
2013-07-09
2013-07-30
2013-08-06r   r   r   r   r   
2013-09-03z
2013-10-01r   r   r   )   #   rg   r=   r   (   ri   r   r   r   r'   r   r(   r   r   )r
   r   DATEVALUESr   )r
   r   r   r   rc   r   r   )	r   r(   r   r   r>   r=   re   rf   rg   2013070220130709)r'   r   rb   r   re   r   )r   r'   r   rb   rc   rd   r   )r   r(   r   r   r>   r=   re   rf   20130701)
r   r   to_datetimerm   rP   rI   rJ   rQ   rL   rM   )rY   r[   df1r\   r]   r   r   r"   test_multiindex_slicers_edges;  sD   
 &&&z3TestMultiIndexSlicers.test_multiindex_slicers_edgesc                 C   sd  t j}ttddtddtddtddg}tjg ddd	gd
}ttjt	|t	| dd
t	|t	|f||d}|jtddtd ddgfd d f }|jdd |jjD  }t|| |j|ddd d ddgf d d f }t|| |jtd td ddgfd d f }|jdd |jjD  }t|| |j|d d d d ddgf d d f }t|| d}tjt|d |jddtdff  W d    n1 sw   Y  t|jdtd dff |jd jd d ddgf  |jdd}|jdtd dff  |jtd td ddgftd dff  d|jddd d d d ddgf< d S )Nr
   r   r   r   r   r   r-   r2   r3   r+   r5   r6   r8   r   r   r   r   c                 S   r   r   r   r   r   r   r"   r#     r$   zNTestMultiIndexSlicers.test_per_axis_per_level_doc_examples.<locals>.<listcomp>c                 S   0   g | ]\}}}}|d ks|dkr||||fqS r   r   r   r   r   r   r"   r#         
z_MultiIndex slicing requires the index to be lexsorted: slicing on levels \[1\], lexsort depth 1rA   r   r.   r   r'   r:   i)r   r   r   rD   r   rN   r   rE   rF   rG   rO   rI   rJ   r   rK   rL   rM   rS   rT   r   rQ   rP   )rY   rs   r   r9   r[   r\   r]   r_   r   r   r"   $test_per_axis_per_level_doc_examples  sZ   "&($(.(&z:TestMultiIndexSlicers.test_per_axis_per_level_doc_examplesc              	   C   s  t tddtddtddtddg}t jg ddd	gd
}ttjt|t| ddt|t|f||d	 j	dd}|j
ddddd d ddgf }|j
dd |jjD  }t|| |j
ddd d d d ddgf }|j
dd |jjD  }t|| |j
ddd d df }|j
d d td dff }t|| |j
ddd d df }|j
d d td dff }t|| dD ]0}d| d}tjt|d |j
|dd d d d ddgf  W d    n1 sw   Y  qd S )Nr
   r   r   r   r   r   r-   r2   r3   r+   r5   r6   r8   r'   r:   r   r   r   r   r   c                 S   r   r   r   r   r   r   r"   r#     r$   zATestMultiIndexSlicers.test_loc_axis_arguments.<locals>.<listcomp>r   c                 S   r   r   r   r   r   r   r"   r#     r   r.   r9   )r}   r   r.   zNo axis named z for object type DataFramerA   )r   rD   r   rN   r   rE   rF   rG   rO   rP   rI   r   rK   rL   rM   rJ   rS   rT   rU   )rY   r   r9   r[   r\   r]   rx   r_   r   r   r"   test_loc_axis_arguments  sZ   """$z-TestMultiIndexSlicers.test_loc_axis_argumentsc                 C   sf   t tdddtg dg dgd}|jddd	d
 }|jd d d df }t	|| d S )N   r(   r=   a1a2a3b1b2b3r9   r'   r:   r   r   )
r   rE   rF   rO   r   rD   rI   rQ   rL   rM   rY   r[   r\   r]   r   r   r"   ?test_loc_axis_single_level_multi_col_indexing_multiindex_col_df  s   zUTestMultiIndexSlicers.test_loc_axis_single_level_multi_col_indexing_multiindex_col_dfc                 C   sl   t tdddtg dg dgd}|jddd	 }|jd d d df }g d|_t	
|| d S )
Nr   r(   r=   r   r   r   r'   r:   r   )r   rE   rF   rO   r   rD   rI   rQ   r9   rL   rM   r   r   r   r"   @test_loc_axis_single_level_single_col_indexing_multiindex_col_df   s   
zVTestMultiIndexSlicers.test_loc_axis_single_level_single_col_indexing_multiindex_col_dfc                 C   sT   t tdddg dd}|jddd }ttg ddd	}t|| d S )
Nr=   r(   )r   r   r    r   r'   r:   r   )r   r(   rb   r?   )	r   rE   rF   rO   rI   r   rV   rL   rR   r   r   r   r"   *test_loc_ax_single_level_indexer_simple_df-  s   z@TestMultiIndexSlicers.test_loc_ax_single_level_indexer_simple_dfc           	      C   s  t j}tjg dddgd}tjg dddgd}ttjdd	d
dd||d}|jddjdd}|	 }d|j
td td fd d f< |	 }d|jd d d d f< t|| |	 }d|j
ddd d d d f< |	 }d|jd d d d f< t|| |	 }d|j
td td ftd td ff< |	 }d|jd d d d f< t|| |	 }d|j
d d td td ff< |	 }d|jd d d d f< t|| |	 }d|j
td dgfd d f< |	 }d|jddg< t|| |	 }d|j
td dfd d f< |	 }d|jddg< t|| |	 }d|j
ddd d df< |	 }d|jddg< t|| |	 }d|j
d d td dgff< |	 }d|jd d ddgf< t|| |	 }d|j
td dftd dgff< |	 }d|jddgddgf< t|| |	 }d|j
|d d df |d d dgf f< |	 }d|jddgddgf< t|| |	 }d|j
d< |	 }d|jddddf< t|| |	 }tjddgddggd	d
|j
td dftd dgff< |	 }d|jddgddgf< t|| |	 }d}tjt|d" tjdgddggd	d
|j
td dftd dgff< W d    n	1 s>w   Y  d}tjt|d tjg dd	d
|j
td dftd dgff< W d    n	1 sow   Y  |	 }|j
td dftd dgff d |j
td dftd dgff< |	 }|jddgddgf d |jddgddgf< t|| |	 }|j
td dftd dgff  |j
td dftd dgff 9  < |	 }|jddgddgf  |jddgddgf 9  < t|| |j
td dftd dgff 	 }d|j
d d df< |	 }|j
td dftd dgff  |9  < |	 }|jddgddgf  |jddgddgf 9  < t|| d S )Nr&   r)   r*   r+   r-   r2   r3   r4   r5   r6   r   r8   r   r:   r'   d   r(   r.   r<   r   z)setting an array element with a sequence.rA   z@Must have equal len keys and value when setting with an iterable)r   r   r   r   r   rc   )r    r1   )r   r   r   rN   r   rE   rF   rO   rP   copyrI   rJ   rQ   rL   rM   rV   rS   rT   rU   )	rY   rs   r   r9   df_origr[   r]   r_   rhsr   r   r"   test_per_axis_per_level_setitem6  s   & (
"$$",$0$(0z5TestMultiIndexSlicers.test_per_axis_per_level_setitemc                 C   s  t tdttdtdg}tj}t	||d d d |d d d  t	||dd d |dd d  t	||dd d |dd d  t	||d dd |d dd  t	||d dd |d dd  t	||dd	d |dd
d  t	||dd	d |dd
d  t	||ddd |dd
d  t	||ddd |dd
d  t	||d	dd |d d  t	||dd d |dd d  t	||d dd |d dd  t	||ddd |ddd  d S )N   abcder   r}   r!      )r!   rd   r   r(   )r   r   )r    r   rc   r=   )er   r4   )
r   rE   rF   r   rD   r   r   r   rL   !assert_indexing_slices_equivalent)rY   serSLCr   r   r"   0test_multiindex_label_slicing_with_negative_step  s&   """"""""" ""zFTestMultiIndexSlicers.test_multiindex_label_slicing_with_negative_stepc                 C   s   g d}t |tdg}tttd|dgd}|jtj	d d ddf d d f }|jd }tttdd	dgtdd	d
}t
|| |jd }tttdddgtdd	d
}t
|| d S )N)r   r   r    r!   i  i  Testr8      F   r   G   )r9   r   r!   i  i#  )r   rD   rE   rF   r   r   r   rI   r   r   rL   rM   )rY   r   rs   r[   df_slicer\   r]   r   r   r"   !test_multiindex_slice_first_level  s   $
 
z7TestMultiIndexSlicers.test_multiindex_slice_first_levelc                 C   s   |}|d }|dd  }| |jdd  }t|| |d  }d|dd < d|jdd < t|j|j |dd  }| |jdd  }t|| d S )Nr
   r   r   )reindexr   rL   rR   r   rK   assert_numpy_array_equalrM   )rY   /multiindex_year_month_day_dataframe_random_dataymdr^   r\   r]   expr   r   r"   test_int_series_slicing  s   z-TestMultiIndexSlicers.test_int_series_slicingzdtype, loc, ilocintNr}   r(   r'   r   rl   strr!   r   c                 C   s   t dtdd| }t|gd }td|dgd}tj}|j|d d f }|j|| d d f }	|j||d d f d d f }
|j|d d |f d d f }t	
|	| t	
|
| t	
|| d S )Nr   r   )r   r   r   g      ?r
   r8   )r   r   r   rp   r   r   r   rQ   rI   rL   rM   )rY   r7   rI   rQ   labelsmir[   r   r]   result_get_locresult_get_locs_level_0result_get_locs_level_1r   r   r"    test_loc_slice_negative_stepsize  s   z6TestMultiIndexSlicers.test_loc_slice_negative_stepsize)__name__
__module____qualname__r`   rt   r   r   r   r   r   r   r   r   r   r   r   rS   markparametrizerJ   r   r   r   r   r"   r	      sJ     UCJLC	 r	   )numpyrE   rS   pandas.errorsr   pandasr   r   r   r   r   r   pandas._testing_testingrL   pandas.tests.indexing.commonr   r	   r   r   r   r"   <module>   s    