o
    �¨Êh€  ã                   @   s<  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 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$d/d0„ Z%d1d2„ Z&G d3d4„ d4ƒZ'd5d6„ Z(d7d8„ Z)d9d:„ Z*d;d<„ Z+d=d>„ Z,d?d@„ Z-ej dAg dB¢g dC¢g¡dDdE„ ƒZ.dFdG„ Z/dHdI„ Z0dJdK„ Z1dLdM„ Z2dNdO„ Z3dPdQ„ Z4dRdS„ Z5dTdU„ Z6dVdW„ Z7dS )Xé    N)ÚIndexingErrorÚPerformanceWarning)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesc                   C   s   t g d¢gg d¢gdgd�S )zsingle level MultiIndex)ÚfooÚbarÚbazÚqux)r   é   é   é   Úfirst)ÚlevelsÚcodesÚnames)r   © r   r   ú[/var/www/html/env/lib/python3.10/site-packages/pandas/tests/indexing/multiindex/test_loc.pyÚsingle_level_multiindex   s   ÿr   c                  C   sF   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   )é   r   ©Úindex)r   r   ÚnpÚrandomÚdefault_rngÚstandard_normal)r   r   r   r   r   r   Ú%frame_random_data_integer_multi_index   s   r   c                   @   sX  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"d8d9„ Z#d:d;„ Z$d1S )<ÚTestMultiIndexLocc                 C   sV   |}d|j d< |j d dksJ ‚| ¡ }ttdƒƒ|_d|j d< |j d dks)J ‚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 |ƒ}| ||dœ¡}|jddgd�}d}t t¡� t |j| |jdd … ¡ W d   ƒ n1 sNw   Y  |j	dd�}|d u s_J ‚|j| }t
jdgd |d�}t
jd	gd |d�}	tj||	gddgd�}
t dg d¢i|
d�}t ||¡ d S )Ni¼  iX  éÞ   éM  é¼  )r   r   r   r   é   g      @ç      @é   é   )ÚamountÚcolÚnum)r7   r8   r7   r8   )Úkeys)r3   r4   r   T)Úinplacer   ©Údtype©r   r6   )r/   r0   r1   r   )r   ÚastypeÚ	set_indexÚtmÚassert_produces_warningr   Úassert_frame_equalr%   ÚilocÚ
sort_indexr   Úarrayr   Úfrom_arrays)r*   Úany_real_numpy_dtyper<   Údatar-   ÚkeyÚreturn_valueÚresÚcol_arrÚyear_arrr   Úexpectedr   r   r   Útest_loc_getitem_general/   s(   ýÿ
z*TestMultiIndexLoc.test_loc_getitem_generalc                 C   ór   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   ƒ d S 1 s2w   Y  d S ©
Nr   ©r   r   ©r   r   r2   ©r   é   é
   ©r2   r2   rU   ©rU   rV   r4   ©r)   r   z^2$©Úmatch©	r   r   r   r   r   ÚpytestÚraisesÚKeyErrorr%   ©r*   r-   r   r   r   Ú0test_loc_getitem_multiindex_missing_label_raisesL   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   rV   )re   r   é   )Úreindexr   r%   r@   Úassert_series_equal)r*   Ú/multiindex_year_month_day_dataframe_random_dataÚserrN   Úresultr   r   r   Ú/test_loc_getitem_list_of_tuples_with_multiindexW   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   ©rb   r#   ÚCé	   ©r   rH   r<   r   r   ©r   r   r   r   r$   rU   ©rH   r   r<   r   r   )rH   r<   ©r   r   r<   ©r   r<   )
r   Úfrom_productr   r(   r   Úfloat64r%   r@   rh   r   )r*   r   ÚxÚyrN   rk   Úy1Úemptyr   r   r   Útest_loc_getitem_series_   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 )Nrm   rn   rp   rq   r   r   rr   rs   rt   rw   ru   r   )r   rv   r   r(   r   rw   rE   r%   r@   rh   r   Úint64)r*   r   rx   ry   rN   rk   r{   Úscalarr   r   r   Útest_loc_getitem_array~   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   rR   )Úir€   Új)rb   rb   r#   )ÚXr‚   ÚYrY   r   r   r€   ©Úaxisr�   )r€   r‚   ©
r   r   r   r   r   rC   Ú	droplevelr%   r@   rB   ©r*   r-   rN   rk   r   r   r   Útest_loc_multiindex_labelsœ   s"   ý
"
z,TestMultiIndexLoc.test_loc_multiindex_labelsc                 C   sb   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   rR   rS   rT   rW   rX   rY   r   r   r2   r†   rˆ   r   r   r   Útest_loc_multiindex_ints·   s   ý
z*TestMultiIndexLoc.test_loc_multiindex_intsc                 C   rP   rQ   r\   r`   r   r   r   Ú(test_loc_multiindex_missing_label_raisesÁ   s   ý"ÿz:TestMultiIndexLoc.test_loc_multiindex_missing_label_raiseszkey, posr   r2   r   r   r   c                 C   sr   t tj d¡ d¡g d¢g d¢gg d¢g d¢gd�}tjtdd	�� |j|  W d   ƒ d S 1 s2w   Y  d S )
Nr   rR   rS   rT   rW   rX   rY   znot in indexrZ   r\   )r*   rI   Ú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 s+w   Y  tjtdd
�� |jd  W d   ƒ n1 sGw   Y  tjtdd
�� |jd  W d   ƒ d S 1 sdw   Y  d S )NrU   ÚaÚbÚcÚdÚeÚfr   z^\('a', 'b'\)$rZ   ©rŽ   r�   z^\('a', 'd', 'g'\)$)rŽ   r‘   ÚgzToo many indexers)rŽ   r‘   r•   r�   )	r   r(   r   rv   r]   r^   r_   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   ó   g | ]}d t |ƒ ‘qS )Ú	Attribute©Ústr©Ú.0r€   r   r   r   Ú
<listcomp>è   ó    zFTestMultiIndexLoc.test_loc_multiindex_indexer_none.<locals>.<listcomp>r   c                 S   r˜   )ÚValuerš   rœ   r   r   r   rž   é   rŸ   r    gš™™™™™¹?r   )rV   r    g      à?©r)   r4   éÿÿÿÿ©r   r   r   r2   rm   r   )r(   r   rv   r   r   r   r   r   r@   rB   ÚarangeÚreshaper%   )r*   Ú
attributesÚattribute_valuesr   r-   rk   rN   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é   r}   r;   r    ©rŽ   r�   r�   rŽ   r�   r   r2   )r   r$   rU   r4   rf   é   r   )
r   r   r¤   r   rv   r(   r%   r@   rh   rC   )r*   r–   rN   rk   r   r   r   Útest_loc_multiindex_incompleteü   s$   þþz0TestMultiIndexLoc.test_loc_multiindex_incompletec                 C   s:   |}t tj d¡ t|ƒ¡|d�}|jD ]}||  qd S )Nr   r   )r   r   r   r   r   ÚlenÚvalues)r*   r   Ú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$   rU   rŽ   r�   r   )r   r   r   rU   ©rV   é   é   r³   r´   rV   r   )r   rv   r   r   r   r   r   r%   r@   rB   rC   r   )r*   r   r-   rk   rN   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 sD|tu ret	j
tdd�� |j|	df  W d   ƒ d S 1 s^w   Y  d S |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   ÚndarrayrE   Úslice)Úindexer_typer9   r   r   r   Úconvert_nested_indexerF  s
   

zQTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.convert_nested_indexerr²   rm   r}   r;   ÚData©r   r)   rV   r³   r   r   c                 3   s   � | ]
\}}ˆ ||ƒV  qd S r¸   r   )r�   r»   r°   ©r¼   r   r   Ú	<genexpr>Y  s
   € ÿ
ÿzDTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.<genexpr>zas an indexer is not supportedrZ   )r   r   r2   r    ©Únamer   )r   rv   r   r   r¤   r­   ÚtupleÚzipÚsetr]   r^   Ú	TypeErrorr%   r   r@   rh   )r*   r¶   r·   rŽ   r�   r   r-   r9   ÚtypesÚindexerrk   rN   r   r¿   r   Útest_loc_getitem_nested_indexer;  s0   ÿþ
ÿýÿ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Ž   rb   ©r�   rb   r   r   r   r   ©rŽ   )r   Úfrom_tuplesr%   r@   Úassert_equal)r*   Úframe_or_seriesÚmiÚobjrN   r   r   r   Ú)test_multiindex_loc_one_dimensional_tuplej  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%   r@   rB   )r*   rÈ   rÐ   rÑ   rN   r   r   r   Ú-test_multiindex_one_dimensional_tuple_columnsr  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   r2   r   r   r   r2   rŽ   r�   r¾   rÕ   r�   r‘   )r   r   rÕ   rÕ   ©rŽ   r�   r�   r‘   rÓ   )r*   rÈ   Ú	exp_valuerÐ   r-   rN   r   r   r   Ú)test_multiindex_setitem_columns_enlarging{  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 )NÚ20110101r   ©ÚperiodsrŽ   r�   r   r   r„   z
2011-01-01z
2011-01-02©r   r   )r   rv   ÚpdÚ
date_ranger   r   Úconcatr&   r%   r@   rB   r   rg   r   )r*   ÚmidxÚser1Úser2r-   rN   rk   r   r   r   Ú"test_sorted_multiindex_after_unionŠ  s   ÿz4TestMultiIndexLoc.test_sorted_multiindex_after_unionc                 C   st   t t tdƒtdƒtdƒg¡dgd�}|jtjd d …dd d …f  }t t tdƒtdƒg¡dgd�}t ||¡ d S )NÚabÚcdr’   ÚValr¾   r�   )	r   r   rv   r'   r%   r   Ús_r@   rB   )r*   r-   rK   rN   r   r   r   Útest_loc_no_second_level_indexž  s   þÿz0TestMultiIndexLoc.test_loc_no_second_level_indexc                 C   s`   t g d¢g d¢g d¢g d¢dœƒ}tjtdd�� |jd  W d   ƒ d S 1 s)w   Y  d S )	Nrª   )r‘   r’   r“   )r•   Úhr€   )r�   r°   Úl)rÖ   )r   r   ©r   r   )r   r2   z(1, 4)rZ   )r   ©r   r2   )r   r]   r^   r_   r%   r`   r   r   r   Útest_loc_multi_index_key_errorª  s   üÿ"ÿz0TestMultiIndexLoc.test_loc_multi_index_key_error)%Ú__name__Ú
__module__Ú__qualname__r.   rO   ra   rl   r|   r   r‰   rŠ   r‹   r]   Ú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   r   r   #   sD    
,

	ÿÿ)
ÿ
r   zindexer, posrb   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rK| g krKtj	t
t| ƒd�� |j|   W d   ƒ d S 1 sDw   Y  d S | td ƒddgfkrttj	t
dd�� |j|   W d   ƒ d S 1 smw   Y  d S |j|  }t ||¡ d S )Nrn   ©r   r	   r
   Úoner"   r=   rp   r}   r;   r   r   rZ   r   rø   z'bah')r   rv   r   r   r¤   rD   rC   Úsizer]   r^   r_   r›   r%   rº   r@   rh   )rÈ   rŒ   Úidxrj   rN   rk   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¾   r   r   )Úlevelr…   )r   rv   r   r   r   r   r   r(   rD   rg   r%   r@   rB   )rþ   Úmulti_indexr-   rN   rk   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s$J ‚d S )	NÚmeanÚmedian©Úfunctsr  )r  r  ÚfunctionrÂ   rY   )r	  r  )r   r   r  r  r   rÍ   r%   ©r-   rk   rN   r   r   r   Ú=test_loc_getitem_duplicates_multiindex_non_scalar_type_objectê  s   ý
r  c                  C   sp   t t d¡t d¡tj d¡ d¡tj d¡ d¡dœƒ ddg¡} | jd }| jdd d …f }t 	||¡ d S )NrV   r   rØ   rŽ   r�   )r   r   )
r   r   r¤   r   r   r   r?   r%   r@   rh   )r-   rN   rk   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‡   r@   rB   )r   r-   rk   rN   r   r   r   Útest_loc_getitem_int  s
   
r  c                 C   sB   | }t jtdd�� |jd  W d   ƒ d S 1 sw   Y  d S )Nz^3$rZ   r   )r]   r^   r_   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 sw   Y  d|jd< d}| ¡ jd }||ks2J ‚d S )Nz^\('bar', 'three'\)$rZ   ))r	   Úthreer#   r   )r]   r^   r_   r%   rD   )r+   r-   rN   rk   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ÚabcdÚMain)Úanotherrú   r¾   rŽ   Úlabelsr2   ))rb   Ú1)rb   Ú2)r#   r  r#   r   )r   r'   r   rv   r   r%   r@   Úassert_numpy_array_equalr   Úasarrayrõ   r(   rÍ   r&   r¤   rC   rB   )r-   rN   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| sLdnddd�tg d¢ƒd�}t 	||¡ d S )NzGood Thingsro   ÚRz
Bad ThingsÚT)úOkay ThingsÚNr#   )r  r  rö   r  r#   rö   )rU   r2   )Úd1Úd2Úd3Úd4)Úu1Úu2Úu3r=   rY   rî   Úobjectzstring[pyarrow_numpy]r&  )r<   rÂ   r¾   )
r   rõ   r   Úonesr   r   rÍ   r%   r@   rB   )Úusing_infer_stringÚtupsr-   rk   rN   r   r   r   Útest_loc_nan_multiindex9  s2   





ø

ý
ý
ù	r+  c                  C   sŠ   t jdddd�} d}tj| |fdd�}t|dd	�}|jd
 }|j| d dfdf }t |¡s0J ‚t |¡s7J ‚|jd
 }t |¡sCJ ‚d S )NÚ2013Q1Ú2013Q4ÚQ)Úfreq)éW  i®  i  )ÚPeriodÚCVRr=   )	ÚOMSÚOMKÚRESÚ	DRIFT_INDÚ
OEVRIG_INDÚFIN_INDÚVARE_UDÚLOEN_UDÚFIN_UDr¾   ))r,  r0  r3  r   r0  r3  )rß   Úperiod_ranger   rv   r   r%   r   Úisnan)rŽ   r€   rü   r-   rk   Úaltr   r   r   Útest_loc_period_string_indexingW  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-05ÚIdx1ÚIdx2r=   r   r   r   r2   r    r   r$   ÚC1ÚC2©rH   r   r)   r   rÁ   )rß   Úto_datetimer   rv   r   r%   r   Úget_level_valuesr   rÍ   Ú	Timestampr@   rh   )Údt_idxÚm_idxr-   rk   rN   r   r   r   Útest_loc_datetime_mask_slicingw  s   "ÿ"þýrJ  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�   r=   r�   )r   rÂ   )rß   rG  r   r   rÍ   r%   r@   rh   )Údaterj   rk   r   r   r   Ú&test_loc_datetime_series_tuple_slicingŠ  s   
ýrM  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   rN  r   rL  r=   ÚauthorÚpricerD  rÞ   rN  )rÞ   rN  rN  r¾   )r   r   rÍ   r%   r@   rB   )r-   rü   rk   rN   r   r   r   Útest_loc_with_mi_indexer–  s   ÿûýrQ  c                  C   sÒ   t jdddd�} ttdƒ| d�}| ¡ }| |d< |jddd	�}|jjd
ks'J ‚|j | d ¡ |j	| d  }|j
dg  d ¡}t ||¡ |d }|jjd
ksQJ ‚|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(   Úto_framer?   r   r   Úget_locr%   rC   r‡   r@   rB   rh   )Údtirj   r-   Údf2rk   rN   rä   r   r   r   Útest_loc_mi_with_level1_named_0©  s   rX  c                  C   s”   t g d¢g d¢g d¢g d¢g d¢g d¢gd d¡d	�} |  d
dg¡ ¡ }|jdtdƒfd d …f  d¡}|jd jtdƒd d …f }t ||¡ d S )N)z20160525 13:30:00.023ÚMSFTú51.95rZ  )z20160525 13:30:00.048ÚGOOGz720.50z720.93)z20160525 13:30:00.076ÚAAPLz98.55z98.56)z20160525 13:30:00.131r\  ú98.61ú98.62)ú20160525 13:30:00.135rY  z51.92rZ  )r_  r\  r]  r^  ztime,ticker,bid,askú,r¡   ÚtickerÚtimer\  z2016-05-25 13:30:00r   )	r   Úsplitr?   rD   r%   rº   r‡   r@   rB   )r-   rW  rK   rN   r   r   r   Útest_getitem_str_sliceÁ  s   ú÷ rd  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s4J ‚d S )N)z20181101 1100z20181101 1200z20181102 1300z20181102 1400Údatetimerö   )rÂ   r/  )rb   rb   ÚZÚW)r#   ro   r.  ÚFr2   ru   r   rb   r#   g        )	rß   ÚPeriodIndexr   rF   r   r(   r   rw   r%   )ÚpiÚlev2Úlev3rÐ   rj   rk   r   r   r   Ú!test_3levels_leading_period_indexÕ  s   ýrm  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestKeyErrorsWithMultiIndexc                 C   sj   t t d¡ dd¡g d¢d�}| ddg¡}tjtdd	�� |jd
  W d   ƒ d S 1 s.w   Y  d S )Nr4   r2   r   rn   r¡   rb   r#   r  rZ   ©r   r   )	r   r   r¤   r¥   r?   r]   r^   r_   r%   )r*   r-   rW  r   r   r   Ú!test_missing_keys_raises_keyerroræ  s
   "ÿz=TestKeyErrorsWithMultiIndex.test_missing_keys_raises_keyerrorc                 C   sZ   t dt ddggd ¡d�}tjtdd�� |jd  W d   ƒ d S 1 s&w   Y  d S )	Nr¢   r   r   r   r   z\(0, 3\)rZ   )r   r   )r   r   rv   r]   r^   r_   r%   )r*   rj   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 sJw   Y  tjt	|d
�� |j ddtd ƒf¡ W d   ƒ n1 slw   Y  tjt	dd
�� |j
dd d …f  W d   ƒ d S 1 s�w   Y  d S )N©rŽ   rŽ   r�   r�   )r  r  r  Ú3)r�   r‘   r�   r‘   )rú   r"   r  r=   r   ©r2   r   r   z'\('b', '1', slice\(None, None, None\)\)rZ   r�   r  z\('b', '1'\))r�   r  )r   rF   r   rE   r   r   r   r]   r^   r_   r%   rº   r   Úget_locs)r*   rÐ   r-   Úmsgr   r   r   Útest_missing_key_combinationõ  s$   ýúÿÿ"ÿz8TestKeyErrorsWithMultiIndex.test_missing_key_combinationN)rð   rñ   rò   rp  rq  rw  r   r   r   r   rn  å  s    rn  c                 C   s2   | }|d }|d }|j d d }t ||¡ d S )Nrb   )re   r    )r%   r@   rh   )ri   r-   rj   rk   rN   r   r   r   Útest_getitem_loc_commutability	  s
   rx  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   r2   r    )r7   Úind1Úind2ry  rz  r7   r   )rŽ   r   r=   r   ©rÂ   )
r   r   rõ   r?   r%   r   rÍ   r@   rB   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   ƒ d S 1 s(w   Y  d S )Nr£   rØ   r¡   rª   z\(2\.0, 2\.0, 3\.0\)rZ   )ç       @r}  ç      @)r   r?   r]   r^   r_   r%   ©r-   r   r   r   Útest_getitem_non_found_tuple!  s   ÿ"ÿr€  c                  C   sæ   t jddd�} t | g¡}| d¡tddd ƒksJ ‚|  d¡tddd ƒks'J ‚|d d d…  d¡}| d d d…  d¡}||ksAJ ‚| d¡ d¡}|  d¡ d¡}||ksWJ ‚| |¡ d¡}|  | ¡ d¡}t 	| 
¡ d |¡ d S )Nz
2001-01-01éd   rÜ   z2001-01r   é   r   )rß   rà   r   rF   rU  rº   ÚrepeatrS  r@   r  Únonzero)r   rÐ   r%   rN   r   r   r   Útest_get_loc_datetime_index*  s   r…  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   r2   r    r   r$   rU   r   rp   rV   r5   r4   )r   rv   r   r   rE   r%   r@   rB   )rÐ   r-   rÈ   rN   r   r   r   Ú,test_loc_setitem_indexer_differently_ordered@  s   $$$r†  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   r2   r    r   r$   rU   rr  ©r   r   r   r   rŽ   r�   r¾   )rŽ   r�   rŽ   r�   )r   r   r   r   )r   r%   rº   r@   rB   r
  r   r   r   Ú5test_loc_getitem_index_differently_ordered_slice_noneK  s   ýýrˆ  rÈ   )r   r   r$   r   r   r   rU   r$   )r   r   r$   r   r   rU   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   rU   )rN  rÖ   )r   r$   ro  rí   )r   r   )r   rU   )r   r$   rŽ   r¾   )r   r   r   r   r   r   r   r   )r   r   r   r$   r$   r   r   rU   )r  )	r   r   rÍ   r%   rº   r@   rB   r   Úisin)rÈ   r-   rk   rN   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 )Nrx   ry   Úzrª   r=   r‘   r   r   r   r�   r{  )
r   rF   r   r‡   r%   r@   rB   r   r   rh   )rÐ   r-   rN   rk   rj   r   r   r   Ú3test_loc_getitem_drops_levels_for_one_row_dataframeq  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 )
Nrn   r   r   r  r¡   r#   rb   )r    r2   ))r#   r   )r#   r   )rb   r   )rb   r   )	r   rv   r   r   Úzerosr%   rÍ   r@   rB   )Úcolsr-   rk   rN   r   r   r   Ú$test_mi_columns_loc_list_label_order  s   þr�  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   ƒ d S 1 sAw   Y  d S )Nr4   rt  rr  r‡  )ÚOhior�  ÚColorado)ÚGreenÚRedr’  r¾   Úkey1Úkey2ÚstateÚcolorz\[2\] not in indexrZ   r�   r   r‘  )r   r   r¤   r¥   r   r   r)   r]   r^   r_   r%   )r,   r   r   r   Ú$test_mi_partial_indexing_list_raises‹  s   ý"ÿr˜  c                  C   sd   t tdƒt ddgddgg¡d�} tjtdd�� | jd	d
g  W d   ƒ d S 1 s+w   Y  d S )Nr2   r   r   rŽ   r�   r   z\['not' 'found'\] not in indexrZ   ÚnotÚfound)r   r(   r   rv   r]   r^   r_   r%   )r–   r   r   r   Ú(test_mi_indexing_list_nonexistent_raises˜  s   ""ÿr›  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   r2   r$   rU   rŽ   r   r   rb   r#   r¾   r¢   r�   r   )r�   ©r   rb   )r‘   rœ  )rÕ   r}  g      @g      @)r~  r3   g      @g       @)r~  g      ð¿r¢   r¢   r~  )rŽ   rŽ   r�   r‘   )r   r   rv   r%   r   rõ   r@   rB   )rk   rN   r   r   r   Ú'test_mi_add_cell_missing_row_non_uniqueŸ  s$   ý


üø
r�  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ƒs'J ‚| jdgdf jd }|dks8J ‚t|tjƒs@J ‚d S )NrÕ   r   r”   r   r2   r�   r‘   r=   r   )r×   r�   r×   r�   r   )r   r   rF   r%   Ú
isinstancer   r}   rC   )r-   rk   r   r   r   Ú$test_loc_get_scalar_casting_to_float¶  s    ÿ
rŸ  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�   rb   r#   r   r   r=   ru   r{  r   )
r   rv   r   r   rw   r%   rõ   r   r@   rh   )rü   Ús2rk   rN   r   r   r   Ú)test_loc_empty_single_selector_with_namesÃ  s
   
 r¡  c                  C   sh   t g d¢g d¢tdƒdœƒ} |  ddg¡} tjtdd�� | jd	  W d   ƒ d S 1 s-w   Y  d S )
N)r�  r�  éÈ   r¢  é,  r£  )rV   rV   r³   é   r‚  é!   r   rn   rb   r#   z^1$rZ   )r�  r   )r   r(   r?   r]   r^   r_   r%   r  r   r   r   Ú'test_loc_keyerror_rightmost_key_missingÌ  s   ýÿ"ÿr¦  c                  C   s8   t  ddg¡} tddg| d�}|jd }|dksJ ‚d S )NrÖ   )r   )r2   r    r   r   r   )r   rÍ   r   r%   )rÐ   rj   rk   r   r   r   Ú*test_multindex_series_loc_with_tuple_labelÛ  s   
r§  )8Únumpyr   r]   Úpandas.errorsr   r   Úpandasrß   r   r   r   r   Úpandas._testingÚ_testingr@   Úfixturer   r   r   ró   rô   rº   Ú
IndexSlicerý   r  r  r  r  r  r  r  r+  r?  rJ  rM  rQ  rX  rd  rm  rn  rx  r|  r€  r…  r†  rˆ  rŠ  rŒ  r�  r˜  r›  r�  rŸ  r¡  r¦  r§  r   r   r   r   Ú<module>   sx    

   

 ùþ

 $	
	