a
    oÝEby  ã                   @   sD  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
 d dlmZ d dlmZ ejdd„ ƒZejdd„ ƒZG d	d
„ d
ƒZej dg g fdgedƒfddgg fddgg fdgg fejdd…dgf edddƒfejdd…ddgf edddƒfg¡dd„ ƒZej dg edƒfdgg 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(d)„ Z"d*d+„ Z#d,d-„ Z$d.d/„ Z%d0d1„ Z&d2d3„ Z'G d4d5„ d5ƒZ(d6d7„ Z)d8d9„ Z*d:d;„ Z+d<d=„ Z,d>d?„ Z-d@dA„ Z.ej dBg dC¢g dD¢g¡dEdF„ ƒZ/dGdH„ Z0dIdJ„ Z1dKdL„ Z2dMdN„ Z3dOdP„ Z4dQdR„ Z5dSdT„ Z6dUdV„ Z7dWdX„ Z8dS )Yé    N)ÚPerformanceWarning)Ú	DataFrameÚIndexÚ
MultiIndexÚSeries)ÚIndexingErrorc                   C   s   t g d¢gg d¢gdgd�S )zsingle level MultiIndex)ÚfooÚbarÚbazZqux)r   é   é   é   Úfirst)ÚlevelsÚcodesÚnames)r   © r   r   úi/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/indexing/multiindex/test_loc.pyÚsingle_level_multiindex   s    ÿr   c                  C   sB   ddgg d¢g} g d¢g d¢g}t | |d�}ttj dd¡|d	�S )
Nr   r   ©r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   é   r   ©Úindex)r   r   ÚnpÚrandomÚrandn)r   r   r   r   r   r   Ú%frame_random_data_integer_multi_index   s    r   c                   @   sH  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ej dddgddgfdgg fddgg fg¡dd„ ƒZdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zej d%eeeeejeef¡ej d&eeeeejeef¡d'd(„ ƒƒZd)d*„ Zej d+d,d-g¡d.d/„ ƒZej d0ed1ƒd2fd3ej fg¡d4d5„ ƒZ!d6d7„ Z"d1S )8ÚTestMultiIndexLocc                 C   sV   |}d|j d< |j d dks J ‚| ¡ }ttdƒƒ|_d|j d< |j d dksRJ ‚d S )Né   )©r	   ÚtwoÚBr   é   )r   r   )ÚlocÚcopyÚlistÚrangeÚcolumns)ÚselfÚ multiindex_dataframe_random_dataÚframeÚdfr   r   r   Ú&test_loc_setitem_frame_with_multiindex"   s    

z8TestMultiIndexLoc.test_loc_setitem_frame_with_multiindexc                 C   sö   ddddddœddddddœd	d
d	d	d	dœdœ}t |ƒjddgd�}d}t t¡�, t |j| |jdd … ¡ W d   ƒ n1 s„0    Y  |jdd�}|d u s¦J ‚|j| }t	j
dgd d	gd gddgd�}t dg d¢i|d�}t ||¡ d S )Ni¼  iX  éÞ   éM  é¼  )r   r   r   r   é   g      @ç      @éÜ  iÛ  )ÚamountÚcolÚyearr4   r5   )Úkeys)r1   r2   r   T)Zinplacer   ©r   r3   )r-   r.   r/   r   )r   Ú	set_indexÚtmÚassert_produces_warningr   Úassert_frame_equalr#   ÚilocÚ
sort_indexr   Úfrom_arrays)r(   Údatar+   ÚkeyZreturn_valueÚresr   Úexpectedr   r   r   Útest_loc_getitem_general-   s    ý:
"z*TestMultiIndexLoc.test_loc_getitem_generalc                 C   sl   t tj dd¡g d¢g d¢gg d¢g d¢gd�}tjtdd�� |jd	  W d   ƒ n1 s^0    Y  d S ©
Nr   ©r   r   r0   ©r   é   é
   ©r0   r0   rG   ©rG   rH   é   ©r'   r   z^2$©Úmatchr   ©r   r   r   r   ÚpytestÚraisesÚKeyErrorr#   ©r(   r+   r   r   r   Ú0test_loc_getitem_multiindex_missing_label_raisesF   s    ýzBTestMultiIndexLoc.test_loc_getitem_multiindex_missing_label_raisesc                 C   s:   |d }|  |jdd… ¡}|jddg }t ||¡ d S )NÚAé1   é3   )éÐ  r   rH   )rX   r   é   )Úreindexr   r#   r9   Úassert_series_equal)r(   Ú/multiindex_year_month_day_dataframe_random_dataÚserrB   Úresultr   r   r   Ú/test_loc_getitem_list_of_tuples_with_multiindexQ   s    zATestMultiIndexLoc.test_loc_getitem_list_of_tuples_with_multiindexc                 C   s   t  g d¢g d¢g¡}t|tdƒtjd�}tddgƒ}tg d¢t  ddgg d¢g¡tjd�}|j| }t ||¡ |jddg }t ||¡ tddgdd	gd
�}|j| }t ||¡ tg tjd�}tg t |j	g g gtjd�tjd�}|j| }t ||¡ d S )N©r   r   r   ©rU   r!   ÚCé	   ©r   r?   Údtyper   r   ©r   r   r   r   r"   rG   ©r?   r   re   r   r   )r?   re   ©r   r   re   ©r   re   )
r   Úfrom_productr   r&   r   Úfloat64r#   r9   r[   r   )r(   r   ÚxÚyrB   r^   Úy1Úemptyr   r   r   Útest_loc_getitem_seriesY   s.    ý

ý
z)TestMultiIndexLoc.test_loc_getitem_seriesc                 C   sð   t  g d¢g d¢g¡}t|tdƒtjd�}t ddg¡}tg d¢t  ddgg d¢g¡tjd�}|j| }t 	||¡ t g ¡}tg t |j
g g gtjd	�d
d�}|j| }t 	||¡ t d¡}tg d¢g d¢tjd�}|j| }t 	||¡ d S )Nr`   ra   rc   rd   r   r   rf   rg   rh   rk   ri   r   )r   rj   r   r&   r   rk   Úarrayr#   r9   r[   r   Úint64)r(   r   rl   rm   rB   r^   ro   Zscalarr   r   r   Útest_loc_getitem_arrayx   s,    ý

ý


z(TestMultiIndexLoc.test_loc_getitem_arrayc                 C   s  t tj dd¡g d¢g d¢gg d¢g d¢gd�}|jddg  d¡}|jd }t ||¡ |jd d …d	gf jddd
�}|jd d …df }t ||¡ |jd	gd	gf  d¡jddd
�}|jd jd d …df }t ||¡ |jddg }|jd }t ||¡ d S )Nr   )Úirt   Új)rU   rU   r!   )ÚXrv   ÚYrL   r   r   rt   r   ©Úaxisru   )rt   rv   ©	r   r   r   r   r<   Ú	droplevelr#   r9   r;   ©r(   r+   rB   r^   r   r   r   Útest_loc_multiindex_labels–   s"    ý
"
z,TestMultiIndexLoc.test_loc_multiindex_labelsc                 C   s^   t tj dd¡g d¢g d¢gg d¢g d¢gd�}|jddg  d¡}|jd	 }t ||¡ d S )
Nr   rE   rF   rI   rJ   rL   r   r   r0   rz   r|   r   r   r   Útest_loc_multiindex_ints±   s    ý
z*TestMultiIndexLoc.test_loc_multiindex_intsc                 C   sl   t tj dd¡g d¢g d¢gg d¢g d¢gd�}tjtdd�� |jd	  W d   ƒ n1 s^0    Y  d S rD   rO   rS   r   r   r   Ú(test_loc_multiindex_missing_label_raises»   s    ýz:TestMultiIndexLoc.test_loc_multiindex_missing_label_raiseszkey, posr   r0   r   r   r   c                 C   sl   t tj dd¡g d¢g d¢gg d¢g d¢gd�}tjtdd�� |j|  W d   ƒ n1 s^0    Y  d S )	Nr   rE   rF   rI   rJ   rL   znot in indexrM   rO   )r(   r@   Úposr+   r   r   r   Ú&test_loc_multiindex_list_missing_labelÅ   s    ýz8TestMultiIndexLoc.test_loc_multiindex_list_missing_labelc                 C   sÔ   t tdƒt ddgddgddgg¡d�}tjtd	d
�� |jd  W d   ƒ n1 sV0    Y  tjtdd
�� |jd  W d   ƒ n1 sŽ0    Y  tjtdd
�� |jd  W d   ƒ n1 sÆ0    Y  d S )NrG   ÚaÚbÚcÚdÚeÚfr   z^\('a', 'b'\)$rM   ©r‚   rƒ   z^\('a', 'd', 'g'\)$)r‚   r…   ÚgzToo many indexers)r‚   r…   r‰   ru   )	r   r&   r   rj   rP   rQ   rR   r#   r   )r(   Úsr   r   r   Ú(test_loc_multiindex_too_many_dims_raisesÑ   s    þ((z:TestMultiIndexLoc.test_loc_multiindex_too_many_dims_raisesc                 C   sÊ   dd„ t dƒD ƒ}dd„ t dƒD ƒ}t ||g¡}dtj dd¡ d }t||d	�}|| }t ||¡ tt 	d
¡ 
dd¡t g d¢g d¢g¡d�}|jddgfd d …f }|jddg }t ||¡ d S )Nc                 S   s   g | ]}d t |ƒ ‘qS )Ú	Attribute©Ústr©Ú.0rt   r   r   r   Ú
<listcomp>ã   ó    zFTestMultiIndexLoc.test_loc_multiindex_indexer_none.<locals>.<listcomp>r   c                 S   s   g | ]}d t |ƒ ‘qS )ÚValuer�   r�   r   r   r   r‘   ä   r’   r   gš™™™™™¹?rH   g      à?©r'   rK   éÿÿÿÿ©r   r   r   r0   r`   r   r   )r&   r   rj   r   r   r   r   r9   r;   ÚarangeÚreshaper#   )r(   Ú
attributesZattribute_valuesr   r+   r^   rB   r   r   r   Ú test_loc_multiindex_indexer_noneß   s    þz2TestMultiIndexLoc.test_loc_multiindex_indexer_nonec                 C   sþ   t tjddd�t tdƒg d¢g¡ƒ}|jd d …dd…f }|jdd	…dd…f }t ||¡ |jd d	…dd…f }t ||¡ |jdd …dd…f }t ||¡ t tjddd�t tdƒg d¢g¡ƒ}|j	g d
¢ }|jdd	d…dd…f }t ||¡ d S )Né   rr   ©re   r   ©r‚   rƒ   r„   r‚   r„   r   r0   )r   r"   rG   rK   rY   é   r   )
r   r   r—   r   rj   r&   r#   r9   r[   r<   )r(   rŠ   rB   r^   r   r   r   Útest_loc_multiindex_incomplete÷   s$    þþz0TestMultiIndexLoc.test_loc_multiindex_incompletec                 C   s4   |}t tj t|ƒ¡|d�}|jD ]}||  q"d S )Nr   )r   r   r   r   ÚlenÚvalues)r(   r   Zsingle_levelrŠ   Úkr   r   r   Útest_get_loc_single_level  s    
z+TestMultiIndexLoc.test_get_loc_single_levelc                 C   s  t  g d¢ddgg¡}ttj dd¡||ƒ}|jdd…d d …f }|}t ||¡ t  g d¢ddgg¡}ttj dd¡||ƒ}|jdd…d d …f }|j	d	d … }t ||¡ |jd
d d …f }|j	dd	… }ddg|_
t ||¡ |jd d …d
f }|d
 }t ||¡ d S )N)r   r"   rG   r‚   rƒ   r   rG   ©rH   é   é   r¥   r¦   r   rH   r   )r   rj   r   r   r   r   r#   r9   r;   r<   r   )r(   r   r+   r^   rB   r   r   r   Útest_loc_getitem_int_slice  s"    
z,TestMultiIndexLoc.test_loc_getitem_int_sliceÚindexer_type_1Úindexer_type_2c                    sø   dd„ ‰ g d¢}g d¢}t  ||g¡}ttjt|ƒdd�|dgd�}d	d
gddgf}||f}t‡ fdd„t||ƒD ƒƒ}	|tu sˆ|tu rÂt	 
t¡� |j|	df }
W d   ƒ qÐ1 s¶0    Y  n|j|	df }
tg d¢dt  |¡d�}t	 |
|¡ d S )Nc                 S   s,   | t jkrt  |¡S | tkr$t|Ž S | |ƒS ©N)r   Úndarrayrq   Úslice)Úindexer_typer6   r   r   r   Úconvert_nested_indexer?  s
    

zQTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.convert_nested_indexerr¤   r`   rr   rœ   ZData©r   r'   rH   r¥   r   r   c                 3   s   | ]\}}ˆ ||ƒV  qd S rª   r   )r�   r­   r¢   ©r®   r   r   Ú	<genexpr>R  s   ÿzDTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.<genexpr>)r   r   r0   r   ©Únamer   )r   rj   r   r   r—   r    ÚtupleÚzipÚsetr9   r:   ÚFutureWarningr#   r   r[   )r(   r¨   r©   r‚   rƒ   r   r+   r6   ÚtypesÚindexerr^   rB   r   r°   r   Útest_loc_getitem_nested_indexer4  s(    ÿþ.ÿz1TestMultiIndexLoc.test_loc_getitem_nested_indexerc                 C   sH   t  ddg¡}|ddg|d�}d|jd< |ddg|d�}t ||¡ d S )N©r‚   rU   ©rƒ   rU   r   r   r   r   ©r‚   )r   Úfrom_tuplesr#   r9   Zassert_equal)r(   Zframe_or_seriesÚmiÚobjrB   r   r   r   Ú)test_multiindex_loc_one_dimensional_tuplea  s
    
z;TestMultiIndexLoc.test_multiindex_loc_one_dimensional_tupler¹   r½   r‚   c                 C   sP   t  ddg¡}tddg|d�}d|j|d d …f< tddg|d�}t ||¡ d S )Nr»   r¼   r   r   r   r   ©r   r¾   r   r#   r9   r;   )r(   r¹   r¿   rÀ   rB   r   r   r   Ú-test_multiindex_one_dimensional_tuple_columnsi  s
    z?TestMultiIndexLoc.test_multiindex_one_dimensional_tuple_columnszindexer, exp_valueNç      ð?©r   r   c                 C   sp   t  ddg¡}tddgddgg|ddgd	�}d
|j|ddgf< tg d¢dd||gg|g d¢d	�}t ||¡ d S )NrÅ   ©r   r0   r   r   r   r0   r‚   rƒ   r¯   rÄ   r„   r…   )r   r   rÄ   rÄ   ©r‚   rƒ   r„   r…   rÂ   )r(   r¹   Z	exp_valuer¿   r+   rB   r   r   r   Ú)test_multiindex_setitem_columns_enlargingr  s    ýz;TestMultiIndexLoc.test_multiindex_setitem_columns_enlargingc                 C   sÔ   t  tjddd�tddgƒg¡}td|d�}td|d d… d�}tj||gdd�}| ¡ }|jd	d
… }t	 
||¡ t||dœƒ}|jd	d
… }t	 
||¡ tj|| |j¡gdd�}|jd	d
… }t	 
||¡ d S )NZ20110101r   ©Úperiodsr‚   rƒ   r   r   rx   z
2011-01-01z
2011-01-02©r   r   )r   rj   ÚpdÚ
date_ranger   r   Úconcatr$   r#   r9   r;   r   rZ   r   )r(   ZmidxZser1Úser2r+   rB   r^   r   r   r   Ú"test_sorted_multiindex_after_union�  s    ÿz4TestMultiIndexLoc.test_sorted_multiindex_after_union)#Ú__name__Ú
__module__Ú__qualname__r,   rC   rT   r_   rp   rs   r}   r~   r   rP   ÚmarkÚparametrizer�   r‹   rš   rŸ   r£   r§   r%   r´   r¶   r¬   r   r«   r   r   rº   rÁ   rÃ   ÚnanrÈ   rÐ   r   r   r   r   r   !   s>   

,
ÿÿ'
ÿ
r   zindexer, posrU   r   ÚDÚEr   r   Úbahc                 C   sú   t jg d¢g d¢gddgd�}ttjddd�|d	� ¡ }|j| }|jd
kr’| g kr’tj	t
t| ƒd�� |j|   W d   ƒ qö1 s†0    Y  ndd }d}| td ƒddgfkr²t}tj||d�� |j|  }W d   ƒ n1 sà0    Y  t ||¡ d S )Nra   ©r   r	   r
   Úoner    r7   rc   rr   rœ   r   r   rM   z!MultiIndex with a nested sequencer   rÙ   )r   rj   r   r   r—   r=   r<   ÚsizerP   rQ   rR   rŽ   r#   r¬   r·   r9   r:   r[   )r¹   r€   Úidxr]   rB   ÚwarnÚmsgr^   r   r   r   Ú7test_loc_getitem_duplicates_multiindex_missing_indexers–  s    ÿ
*(rà   Úcolumns_indexerc                 C   s|   t  g d¢ddgf¡}ttj dd¡tdƒ|d�}|jddd	�}ttdƒ| g ¡d d�}|j	d d …| f }t
 ||¡ d S )
NrÚ   ÚalphaÚbetar   r   r¯   r   r   )Úlevelry   )r   rj   r   r   r   r   r&   r=   rZ   r#   r9   r;   )rá   Zmulti_indexr+   rB   r^   r   r   r   Ú4test_loc_getitem_duplicates_multiindex_empty_indexerº  s    rå   c                  C   sL   t tjtjgddggt ddg¡ddgd�} | jd }tj}||ksHJ ‚d S )	NÚmeanÚmedian©Úfunctsræ   )ré   rç   Úfunctionr³   rL   )rê   rè   )r   r   ræ   rç   r   r¾   r#   ©r+   r^   rB   r   r   r   Ú=test_loc_getitem_duplicates_multiindex_non_scalar_type_objectÇ  s    ý
rì   c                  C   sd   t t d¡t d¡tj d¡tj d¡dœƒ ddg¡} | jd }| jdd d …f }t ||¡ d S )NrH   rÇ   r‚   rƒ   )r   r   )	r   r   r—   r   r   r8   r#   r9   r[   )r+   rB   r^   r   r   r   Ú!test_loc_getitem_tuple_plus_sliceÔ  s    

üÿù
rí   c                 C   s8   | }|j d }|dd … }|j d¡|_t ||¡ d S )Nr   éýÿÿÿr   )r#   r   r{   r9   r;   )r   r+   r^   rB   r   r   r   Útest_loc_getitem_intã  s
    
rï   c                 C   s@   | }t jtdd�� |jd  W d   ƒ n1 s20    Y  d S )Nz^3$rM   r   )rP   rQ   rR   r#   )r   r+   r   r   r   Ú%test_loc_getitem_int_raises_exceptionë  s    rð   c                 C   sh   | }t jtdd�� |jd  W d   ƒ n1 s20    Y  d|jd< d}| ¡ jd }||ksdJ ‚d S )Nz^\('bar', 'three'\)$rM   ))r	   Úthreer!   r   )rP   rQ   rR   r#   r=   )r)   r+   rB   r^   r   r   r   Ú test_loc_getitem_lowerdim_cornerñ  s    (
rò   c                  C   s¾   t dtdƒt dgdg¡d�} d| d< | j| jd d …df< t t 	| d ¡t 	| j¡¡ t tj
tdƒt g d	¢¡d�} |  ¡ }t d¡| jd d …d
f< t d¡|jd d …df< t | |¡ d S )NÚstringÚabcdZMain)ZanotherrÛ   r¯   r‚   Úlabelsr0   ))rU   Ú1)rU   Ú2)r!   rö   r!   r   )r   r%   r   rj   r   r#   r9   Úassert_numpy_array_equalr   ZasarrayrÖ   r&   r¾   r$   r—   r<   r;   )r+   rB   r   r   r   Ú$test_loc_setitem_single_column_sliceÿ  s"    ýýrù   c               
   C   s¼   ddt jfddt jfddt jfddt jfdddd	t jfdd
t jfg} tt  d¡tg d¢ƒtj| g d¢d�d�}|jd jd }tt  d¡tt jgddd�tg d¢dd�d�}t 	||¡ d S )NzGood Thingsrb   ÚRz
Bad ThingsÚT)úOkay ThingsÚNr!   )rü   rý   r×   rü   r!   r×   )rG   r0   )Zd1Zd2Zd3Zd4)Úu1Úu2Úu3r7   rL   )r   r0   Úobjectr   )re   r³   rœ   r¯   )
r   rÖ   r   Zonesr   r   r¾   r#   r9   r;   )Ztupsr+   r^   rB   r   r   r   Útest_loc_nan_multiindex  s*    





ø

ýýr  c                  C   sr   t jdddd�} d}tj| |fdd�}t|dd	�}|jd
 }|j| d dfdf }t |¡s`J ‚t |¡snJ ‚d S )NÚ2013Q1Z2013Q4ÚQ)Úfreq)éW  i®  i  )ZPeriodZCVRr7   )	ÚOMSZOMKZRESZ	DRIFT_INDZ
OEVRIG_INDZFIN_INDZVARE_UDZLOEN_UDZFIN_UDr¯   ))r  r  r  r   r  r  )rÌ   Zperiod_ranger   rj   r   r#   r   Úisnan)r‚   rt   rÝ   r+   r^   Zaltr   r   r   Útest_loc_period_string_indexing0  s    þ
r	  c                  C   s°   t  ddg¡} tj| | gddgd�}tddgdd	gd
dgddgg|ddgd�}|j| d |j d¡dkfdf }tdgdtj	t  
d¡t  
d¡fgddgd�d�}t ||¡ d S )Nz
2017-05-04z
2017-05-05ZIdx1ZIdx2r7   r   r   r   r0   r   r   r"   ZC1ZC2©r?   r   r'   r   r²   )rÌ   Úto_datetimer   rj   r   r#   r   Zget_level_valuesr   r¾   Ú	Timestampr9   r[   )Zdt_idxZm_idxr+   r^   rB   r   r   r   Útest_loc_datetime_mask_slicingQ  s    "ÿ"þýr  c                  C   sP   t  d¡} tdtjd| fgddgd�dd�}|jd d …| gf }t ||¡ d S )NÚ2000r   r‚   rƒ   r7   r„   )r   r³   )rÌ   r  r   r   r¾   r#   r9   r[   )Údater]   r^   r   r   r   Ú&test_loc_datetime_series_tuple_slicingd  s    
ýr  c                  C   sª   t ddgddgddgddggtjg d¢dd	gd
�ddgd�} tjddgdd	gd
�}| j|d d …f }t ddgddgddggtjg d¢dd	gd
�ddgd�}t ||¡ d S )Nr‚   r   r   rƒ   r„   r   )rË   )r   r   ©r   r   r  r   r  r7   ÚauthorZpricer
  rË   r  )rË   r  r  r¯   )r   r   r¾   r#   r9   r;   )r+   rÝ   r^   rB   r   r   r   Útest_loc_with_mi_indexerp  s    ÿûýr  c                  C   sÒ   t jdddd�} ttdƒ| d�}| ¡ }| |d< |jddd	�}|jjd
ksNJ ‚|j | d ¡ |j	| d  }|j
dg  d ¡}t ||¡ |d }|jjd
ks¢J ‚|j	| d  }|j
dg  d ¡}t ||¡ d S )Nz
2016-01-01r   z
US/Pacific)rÊ   Útzr   r   r   T)Úappend)Nr   )rÌ   rÍ   r   r&   Zto_framer8   r   r   Úget_locr#   r<   r{   r9   r;   r[   )Zdtir]   r+   Údf2r^   rB   rÏ   r   r   r   Útest_loc_mi_with_level1_named_0ƒ  s    r  c                 C   s|   | ddddƒ}t j|dgd�}| ddg¡ ¡ }|jdtd	ƒfd d …f  d
¡}|jd jtd	ƒd d …f }t ||¡ d S )Nr˜   Úmerger?   zquotes2.csvÚtime)Zparse_datesZtickerZAAPLz2016-05-25 13:30:00r   )	rÌ   Zread_csvr8   r=   r#   r¬   r{   r9   r;   )ÚdatapathÚpathr+   r  rA   rB   r   r   r   Útest_getitem_str_slice›  s     r  c                  C   sl   t jg d¢ddd�} g d¢}g d¢}t | ||g¡}ttdƒ|tjd�}|j| d	 d
df }|dkshJ ‚d S )N)z20181101 1100z20181101 1200z20181102 1300z20181102 1400Údatetimer!   )r³   r  )rU   rU   ÚZÚW)r!   rb   r  ÚFr0   ri   r   rU   g        )	rÌ   ZPeriodIndexr   r>   r   r&   r   rk   r#   )ÚpiZlev2Zlev3r¿   r]   r^   r   r   r   Ú!test_3levels_leading_period_index¦  s    ýr#  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestKeyErrorsWithMultiIndexc                 C   sh   t t d¡ dd¡g d¢d�}| ddg¡}tjtdd	�� |jd
  W d   ƒ n1 sZ0    Y  d S )NrK   r0   r   ra   r”   rU   r!   rö   rM   ©r   r   )	r   r   r—   r˜   r8   rP   rQ   rR   r#   )r(   r+   r  r   r   r   Ú!test_missing_keys_raises_keyerror·  s    z=TestKeyErrorsWithMultiIndex.test_missing_keys_raises_keyerrorc                 C   sX   t dt ddggd ¡d�}tjtdd�� |jd  W d   ƒ n1 sJ0    Y  d S )	Nr•   r   r   r   r   z\(0, 3\)rM   )r   r   )r   r   rj   rP   rQ   rR   r#   )r(   r]   r   r   r   Ú!test_missing_key_raises_keyerror2¿  s    z=TestKeyErrorsWithMultiIndex.test_missing_key_raises_keyerror2c                 C   s$  t jt g d¢¡t g d¢¡t g d¢¡gg d¢d�}ttj dd¡|d�}d	}tjt	|d
��, |j
ddtd ƒfd d …f  W d   ƒ n1 s�0    Y  tjt	|d
��& |j ddtd ƒf¡ W d   ƒ n1 sÔ0    Y  tjt	dd
��" |j
dd d …f  W d   ƒ n1 �s0    Y  d S )N©r‚   r‚   rƒ   rƒ   )rö   r÷   r÷   Ú3)r„   r…   r„   r…   )rÛ   r    rñ   r7   r0   r   r   z'\('b', '1', slice\(None, None, None\)\)rM   rƒ   rö   z\('b', '1'\))rƒ   rö   )r   r>   r   rq   r   r   ZrandrP   rQ   rR   r#   r¬   r   Zget_locs)r(   r¿   r+   rß   r   r   r   Útest_missing_key_combinationÆ  s    ýú:4z8TestKeyErrorsWithMultiIndex.test_missing_key_combinationN)rÑ   rÒ   rÓ   r&  r'  r*  r   r   r   r   r$  ¶  s   r$  c                 C   s2   | }|d }|d }|j d d }t ||¡ d S )NrU   )rX   r   )r#   r9   r[   )r\   r+   r]   r^   rB   r   r   r   Útest_getitem_loc_commutabilityÚ  s
    r+  c                  C   sš   t g d¢ddtjgg d¢dœƒ ddg¡} | jdg }t dd	gitjd
gddgd�d�}t ||¡ | jd }t dd	git	d	gdd�d�}t ||¡ d S )N)r   r   r   r‚   r…   )r   r0   r   )r4   Úind1Úind2r,  r-  r4   r   )r‚   r   r7   r   ©r³   )
r   r   rÖ   r8   r#   r   r¾   r9   r;   r   rë   r   r   r   Útest_loc_with_nanâ  s    ÿþÿ
r/  c                  C   s\   t g d¢gg d¢d� g d¢¡} tjtdd�� | jd  W d   ƒ n1 sN0    Y  d S )Nr–   rÇ   r”   r�   z\(2\.0, 2\.0, 3\.0\)rM   )ç       @r0  ç      @)r   r8   rP   rQ   rR   r#   ©r+   r   r   r   Útest_getitem_non_found_tupleò  s
    ÿr3  c                  C   sæ   t jddd�} t | g¡}| d¡tddd ƒks4J ‚|  d¡tddd ƒksNJ ‚|d d d…  d¡}| d d d…  d¡}||ks‚J ‚| d¡ d¡}|  d¡ d¡}||ks®J ‚| |¡ d¡}|  | ¡ d¡}t 	| 
¡ d |¡ d S )Nz
2001-01-01éd   rÉ   z2001-01r   é   r   )rÌ   rÍ   r   r>   r  r¬   Úrepeatr  r9   rø   Znonzero)r   r¿   r#   rB   r   r   r   Útest_get_loc_datetime_indexû  s    r7  c                  C   sž   t  ddgddgg¡} tddgddgdd	gd
dgg| d�}dddgf}t ddgddgg¡|j|d d …f< tddgddgdd	gd
dgg| d�}t ||¡ d S )Nr‚   rƒ   r   r   r   r   r0   r   r   r"   rG   r   rc   rH   é   rK   )r   rj   r   r   rq   r#   r9   r;   )r¿   r+   r¹   rB   r   r   r   Ú,test_loc_setitem_indexer_differently_ordered  s    $$$r9  c                  C   sš   t ddgddgddgddggg d	¢g d
¢gddgd�} | jtd ƒddgfd d …f }t ddgddgddgddggg d¢g d¢gddgd�}t ||¡ d S )Nr   r   r   r0   r   r   r"   rG   r(  ©r   r   r   r   r‚   rƒ   r¯   )r‚   rƒ   r‚   rƒ   )r   r   r   r   )r   r#   r¬   r9   r;   rë   r   r   r   Ú5test_loc_getitem_index_differently_ordered_slice_none  s    ýýr;  r¹   )r   r   r"   r   r   r   rG   r"   )r   r   r"   r   r   rG   c                 C   s–   t dgd t g d¢¡dgd�}|jtd ƒ| fd d …f }t dgd g d¢g d¢gdgd�}t ||¡ |j|jj| dd�d d …f }t ||¡ d S )	Nr   rG   )r  rÅ   )r   r"   r%  )r   r   )r   r   )r   rG   )r   r"   r‚   r¯   )r   r   r   r   r   r   r   r   )r   r   r   r"   r"   r   r   rG   )rä   )	r   r   r¾   r#   r¬   r9   r;   r   Úisin)r¹   r+   r^   rB   r   r   r   Ú@test_loc_getitem_index_differently_ordered_slice_none_duplicates,  s     ÿûýr=  c                  C   s¨   t jdgdgdggg d¢d�} tddgi| d�}| dd	g¡}|jdd d …df }t ||¡ tdg| d�}|jdd d …df }tdgtdgd
d�d�}t 	||¡ d S )Nrl   rm   Úzr�   r7   r…   r   r   r   rƒ   r.  )
r   r>   r   r{   r#   r9   r;   r   r   r[   )r¿   r+   rB   r^   r]   r   r   r   Ú3test_loc_getitem_drops_levels_for_one_row_dataframeB  s    r?  c                  C   sj   t  g d¢ddgg¡} tt d¡| d�}|jd d …ddgf }tt d¡t  g d	¢¡d�}t ||¡ d S )
Nra   r   r   )r   r   r”   r!   rU   )r   r0   ))r!   r   )r!   r   )rU   r   )rU   r   )	r   rj   r   r   Zzerosr#   r¾   r9   r;   )Úcolsr+   r^   rB   r   r   r   Ú$test_mi_columns_loc_list_label_orderP  s    þrA  c                  C   sŽ   t t d¡ d¡g d¢g d¢gg d¢g d¢gd�} dd	g| j_d
dg| j_tjt	dd��" | j
ddgdf  W d   ƒ n1 s€0    Y  d S )NrK   )r0   r   r(  r:  )ÚOhiorB  ÚColorado)ÚGreenÚRedrD  r¯   Úkey1Úkey2ÚstateÚcolorz\[2\] not in indexrM   rƒ   r   rC  )r   r   r—   r˜   r   r   r'   rP   rQ   rR   r#   )r*   r   r   r   Ú$test_mi_partial_indexing_list_raises\  s    ýrJ  c                  C   sb   t tdƒt ddgddgg¡d�} tjtdd�� | jd	d
g  W d   ƒ n1 sT0    Y  d S )Nr0   r   r   r‚   rƒ   r   z\['not' 'found'\] not in indexrM   ÚnotÚfound)r   r&   r   rj   rP   rQ   rR   r#   )rŠ   r   r   r   Ú(test_mi_indexing_list_nonexistent_raisesi  s    "rM  c                  C   s¤   t g d¢g d¢gddgt ddgddgg¡d�} d	| jd
< d| jd< d| jd< t g d¢g d¢g d¢dtjtjtjggg d¢t ddgddgg¡d�}t | |¡ d S )N)r   r   r   r   )r   r0   r"   rG   r‚   r   r   rU   r!   r¯   r•   r„   r   )r„   ©r   rU   )r…   rN  )rÄ   r0  g      @g      @)r1  r1   g      @g       @)r1  g      ð¿r•   r•   r1  )r‚   r‚   r„   r…   )r   r   rj   r#   r   rÖ   r9   r;   )r^   rB   r   r   r   Ú'test_mi_add_cell_missing_row_non_uniquep  s$    ý


üø
rO  c                  C   s„   t dddœtjdgdggddgd�d	�} | jd
 }|dks>J ‚t|tjƒsNJ ‚| jdgdf jd }|dkspJ ‚t|tjƒs€J ‚d S )NrÄ   r   rˆ   r   r0   r„   r…   r7   r   )rÆ   rƒ   rÆ   rƒ   r   )r   r   r>   r#   Ú
isinstancer   rr   r<   )r+   r^   r   r   r   Ú$test_loc_get_scalar_casting_to_float‡  s     ÿ
rQ  c                  C   sf   t jddgddggddgd�} t| tjd�}|jd }ttjtjgtddgdd	�d
�}t 	||¡ d S )Nr‚   rƒ   rU   r!   r   r   r7   ri   r.  r   )
r   rj   r   r   rk   r#   rÖ   r   r9   r[   )rÝ   Ús2r^   rB   r   r   r   Ú)test_loc_empty_single_selector_with_names”  s
    
 rS  c                  C   sf   t g d¢g d¢tdƒdœƒ} |  ddg¡} tjtdd�� | jd	  W d   ƒ n1 sX0    Y  d S )
N)r4  r4  éÈ   rT  é,  rU  )rH   rH   r¥   é   r5  é!   r   ra   rU   r!   z^1$rM   )r4  r   )r   r&   r8   rP   rQ   rR   r#   r2  r   r   r   Ú'test_loc_keyerror_rightmost_key_missing�  s    ýÿrX  c                  C   s8   t  ddg¡} tddg| d�}|jd }|dks4J ‚d S )NrÅ   )r   )r0   r   r   r   r   )r   r¾   r   r#   )r¿   r]   r^   r   r   r   Ú*test_multindex_series_loc_with_tuple_label¬  s    
rY  )9Únumpyr   rP   Zpandas.errorsr   ZpandasrÌ   r   r   r   r   Zpandas._testingZ_testingr9   Zpandas.core.indexingr   Zfixturer   r   r   rÔ   rÕ   r¬   Z
IndexSlicerà   rå   rì   rí   rï   rð   rò   rù   r  r	  r  r  r  r  r  r#  r$  r+  r/  r3  r7  r9  r;  r=  r?  rA  rJ  rM  rO  rQ  rS  rX  rY  r   r   r   r   Ú<module>   sv   

  w

 ùþ

!$	
	