a
    é´«j�  ã                   @   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ÚbazZqux)r   é   é   é   Úfirst)ÚlevelsÚcodesÚnames)r   © r   r   úh/var/www/html/laksyashrimp/venv/lib/python3.9/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                   @   sv  e Zd Zej d¡ej ddd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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/d0d1g¡d2d3„ ƒZ ej d4ed5ƒd6fd7ej!fg¡d8d9„ ƒZ"d:d;„ Z#d<d=„ Z$d>d?„ Z%d5S )@ÚTestMultiIndexLocz.ignore:Setting a value on a view:FutureWarningÚhas_refTFc                 C   sv   |}|r|d d … }d|j d< |j d dks0J ‚| ¡ }ttdƒƒ|_|rV|d 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_datar   ÚframeÚviewÚ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 sœ0    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)r8   r9   r8   r9   )Úkeys)r4   r5   r   T)Zinplacer   ©Údtype©r   r7   )r0   r1   r2   r   )r   ZastypeÚ	set_indexÚtmZassert_produces_warningr   Úassert_frame_equalr%   ÚilocÚ
sort_indexr   Úarrayr   Úfrom_arrays)r*   Zany_real_numpy_dtyper<   Údatar.   ÚkeyZreturn_valueÚresZcol_arrZyear_arrr   Úexpectedr   r   r   Útest_loc_getitem_general7   s&    ý:
z*TestMultiIndexLoc.test_loc_getitem_generalc                 C   sp   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 sb0    Y  d S ©
Nr   ©r   r   ©r   r   r3   ©r   é   é
   ©r3   r3   rN   ©rN   rO   r5   ©r)   r   z^2$©Úmatch©	r   r   r   r   r   ÚpytestÚraisesÚKeyErrorr%   ©r*   r.   r   r   r   Ú0test_loc_getitem_multiindex_missing_label_raisesT   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   rO   )r^   r   é   )Úreindexr   r%   r?   Úassert_series_equal)r*   Ú/multiindex_year_month_day_dataframe_random_dataÚserrH   Úresultr   r   r   Ú/test_loc_getitem_list_of_tuples_with_multiindex_   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   ©r[   r#   ÚCé	   ©r   rE   r<   r   r   ©r   r   r   r   r$   rN   ©rE   r   r<   r   r   )rE   r<   ©r   r   r<   ©r   r<   )
r   Úfrom_productr   r(   r   Úfloat64r%   r?   ra   r   )r*   r   ÚxÚyrH   rd   Úy1Úemptyr   r   r   Útest_loc_getitem_seriesg   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 )Nrf   rg   ri   rj   r   r   rk   rl   rm   rp   rn   r   )r   ro   r   r(   r   rp   rC   r%   r?   ra   r   Úint64)r*   r   rq   rr   rH   rd   rt   Z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   rK   )Úirx   Új)r[   r[   r#   )ÚXrz   ÚYrR   r   r   rx   ©Úaxisry   )rx   rz   ©
r   r   r   r   r   rA   Ú	droplevelr%   r?   r@   ©r*   r.   rH   rd   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   rK   rL   rM   rP   rQ   rR   r   r   r3   r~   r€   r   r   r   Útest_loc_multiindex_ints¿   s    ý
z*TestMultiIndexLoc.test_loc_multiindex_intsc                 C   sp   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 sb0    Y  d S rJ   rU   rY   r   r   r   Ú(test_loc_multiindex_missing_label_raisesÉ   s    ýz:TestMultiIndexLoc.test_loc_multiindex_missing_label_raiseszkey, posr   r3   r   r   r   c                 C   sp   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 sb0    Y  d S )
Nr   rK   rL   rM   rP   rQ   rR   znot in indexrS   rU   )r*   rF   Ú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 )NrN   ÚaÚbÚcÚdÚeÚfr   z^\('a', 'b'\)$rS   ©r†   r‡   z^\('a', 'd', 'g'\)$)r†   r‰   ÚgzToo many indexers)r†   r‰   r�   ry   )	r   r(   r   ro   rV   rW   rX   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©Ú.0rx   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š™™™™™¹?r   )rO   r    g      à?©r)   r5   éÿÿÿÿ©r   r   r   r3   rf   r   )r(   r   ro   r   r   r   r   r   r?   r@   ÚarangeÚreshaper%   )r*   Ú
attributesZattribute_valuesr   r.   rd   rH   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é   rv   r;   r    ©r†   r‡   rˆ   r†   rˆ   r   r3   )r   r$   rN   r5   r_   é   r   )
r   r   r›   r   ro   r(   r%   r?   ra   rA   )r*   rŽ   rH   rd   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   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$   rN   r†   r‡   r   )r   r   r   rN   ©rO   é   é   r¨   r©   rO   r   )r   ro   r   r   r   r   r   r%   r?   r@   rA   r   )r*   r   r.   rd   rH   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	j
tdd�� |j|	df  W d   ƒ n1 sº0    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   ÚndarrayrC   Úslice)Úindexer_typer:   r   r   r   Úconvert_nested_indexerN  s
    

zQTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.convert_nested_indexerr§   rf   rv   r;   ZData©r   r)   rO   r¨   r   r   c                 3   s   | ]\}}ˆ ||ƒV  qd S r­   r   )r”   r°   r¥   ©r±   r   r   Ú	<genexpr>a  s   ÿzDTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.<genexpr>zas an indexer is not supportedrS   )r   r   r3   r    ©Únamer   )r   ro   r   r   r›   r£   ÚtupleÚzipÚsetrV   rW   Ú	TypeErrorr%   r   r?   ra   )r*   r«   r¬   r†   r‡   r   r.   r:   ÚtypesÚindexerrd   rH   r   r³   r   Útest_loc_getitem_nested_indexerC  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†   r[   ©r‡   r[   r   r   r   r   ©r†   )r   Úfrom_tuplesr%   r?   Zassert_equal)r*   Zframe_or_seriesÚmiÚobjrH   r   r   r   Ú)test_multiindex_loc_one_dimensional_tupler  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?   r@   )r*   r¼   rÂ   rÃ   rH   r   r   r   Ú-test_multiindex_one_dimensional_tuple_columnsz  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   r3   r   r   r   r3   r†   r‡   r²   rÇ   rˆ   r‰   )r   r   rÇ   rÇ   ©r†   r‡   rˆ   r‰   rÅ   )r*   r¼   Z	exp_valuerÂ   r.   rH   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 )NZ20110101r   ©Úperiodsr†   r‡   r   r   r|   z
2011-01-01z
2011-01-02©r   r   )r   ro   ÚpdÚ
date_ranger   r   Úconcatr&   r%   r?   r@   r   r`   r   )r*   ZmidxZser1Úser2r.   rH   rd   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Š   ZValr²   rˆ   )	r   r   ro   r'   r%   r   Zs_r?   r@   )r*   r.   rG   rH   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   ƒ n1 sP0    Y  d S )	Nr    )r‰   rŠ   r‹   )r�   Úhrx   )ry   r¥   Úl)rÈ   )r   r   ©r   r   )r   r3   z(1, 4)rS   )r   ©r   r3   )r   rV   rW   rX   r%   rY   r   r   r   Útest_loc_multi_index_key_error²  s    üÿz0TestMultiIndexLoc.test_loc_multi_index_key_error)&Ú__name__Ú
__module__Ú__qualname__rV   ÚmarkÚfilterwarningsÚparametrizer/   rI   rZ   re   ru   rw   r�   r‚   rƒ   r…   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   #   sF   


,
	ÿÿ)
ÿ
r   zindexer, posr[   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  nd| td ƒddgfkràtj	t
dd�� |j|   W d   ƒ qö1 sÔ0    Y  n|j|  }t ||¡ d S )Nrg   ©r   r	   r
   Úoner"   r=   ri   rv   r;   r   r   rS   r   rå   z'bah')r   ro   r   r   r›   rB   rA   ÚsizerV   rW   rX   r’   r%   r¯   r?   ra   )r¼   r„   Úidxrc   rH   rd   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   ro   r   r   r   r   r   r(   rB   r`   r%   r?   r@   )rë   Zmulti_indexr.   rH   rd   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¶   rR   )rõ   ró   )r   r   rñ   rò   r   rÁ   r%   ©r.   rd   rH   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 )NrO   r   rÊ   r†   r‡   )r   r   )
r   r   r›   r   r   r   r>   r%   r?   ra   )r.   rH   rd   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?   r@   )r   r.   rd   rH   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$rS   r   )rV   rW   rX   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'\)$rS   ))r	   Úthreer#   r   )rV   rW   rX   r%   rB   )r+   r.   rH   rd   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†   Úlabelsr3   ))r[   Ú1)r[   Ú2)r#   r  r#   r   )r   r'   r   ro   r   r%   r?   Úassert_numpy_array_equalr   Zasarrayrâ   r(   rÁ   r&   r›   rA   r@   )r.   rH   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| s˜dnddd�tg d¢ƒd�}t 	||¡ d S )NzGood Thingsrh   ÚRz
Bad ThingsÚT)úOkay ThingsÚNr#   )r  r  rã   r  r#   rã   )rN   r3   )Zd1Zd2Zd3Zd4)Úu1Úu2Úu3r=   rR   rÚ   Úobjectr’   r  )r<   r¶   r²   )
r   râ   r   Zonesr   r   rÁ   r%   r?   r@   )Zusing_infer_stringZtupsr.   rd   rH   r   r   r   Útest_loc_nan_multiindexA  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 |¡s`J ‚t |¡snJ ‚|jd
 }t |¡s†J ‚d S )NÚ2013Q1Z2013Q4ÚQ)Úfreq)éW  i®  i  )ZPeriodZCVRr=   )	Ú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   ro   r   r%   r   Úisnan)r†   rx   ré   r.   rd   Zaltr   r   r   Útest_loc_period_string_indexing_  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Idx2r=   r   r   r   r3   r    r   r$   ZC1ZC2©rE   r   r)   r   rµ   )rÏ   Úto_datetimer   ro   r   r%   r   Zget_level_valuesr   rÁ   Ú	Timestampr?   ra   )Zdt_idxZm_idxr.   rd   rH   r   r   r   Útest_loc_datetime_mask_slicing  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‡   r=   rˆ   )r   r¶   )rÏ   r  r   r   rÁ   r%   r?   ra   )Údaterc   rd   r   r   r   Ú&test_loc_datetime_series_tuple_slicing’  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  r=   ÚauthorZpricer  rÎ   r  )rÎ   r  r  r²   )r   r   rÁ   r%   r?   r@   )r.   ré   rd   rH   r   r   r   Útest_loc_with_mi_indexerž  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_framer>   r   r   Úget_locr%   rA   r   r?   r@   ra   )Zdtirc   r.   Údf2rd   rH   rÒ   r   r   r   Útest_loc_mi_with_level1_named_0±  s    r#  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.95r%  )z20160525 13:30:00.048Z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.135r$  z51.92r%  )r)  r&  r'  r(  ztime,ticker,bid,askú,r˜   ZtickerÚtimer&  z2016-05-25 13:30:00r   )	r   Úsplitr>   rB   r%   r¯   r   r?   r@   )r.   r"  rG   rH   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  )r[   r[   ÚZÚW)r#   rh   r  ÚFr3   rn   r   r[   r#   g        )	rÏ   ZPeriodIndexr   rD   r   r(   r   rp   r%   )ÚpiZlev2Zlev3rÂ   rc   rd   r   r   r   Ú!test_3levels_leading_period_indexÝ  s    ýr3  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 )Nr5   r3   r   rg   r˜   r[   r#   r  rS   ©r   r   )	r   r   r›   rœ   r>   rV   rW   rX   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\)rS   )r   r   )r   r   ro   rV   rW   rX   r%   )r*   rc   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ü   r=   r   ©r3   r   r   z'\('b', '1', slice\(None, None, None\)\)rS   r‡   r  z\('b', '1'\))r‡   r  )r   rD   r   rC   r   r   r   rV   rW   rX   r%   r¯   r   Zget_locs)r*   rÂ   r.   Úmsgr   r   r   Útest_missing_key_combinationý  s    ýú:4z8TestKeyErrorsWithMultiIndex.test_missing_key_combinationN)rÜ   rÝ   rÞ   r6  r7  r<  r   r   r   r   r4  í  s   r4  c                 C   s2   | }|d }|d }|j d d }t ||¡ d S )Nr[   )r^   r    )r%   r?   ra   )rb   r.   rc   rd   rH   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   r3   r    )r8   Úind1Úind2r>  r?  r8   r   )r†   r   r=   r   ©r¶   )
r   r   râ   r>   r%   r   rÁ   r?   r@   r   rö   r   r   r   Útest_loc_with_nan  s    ÿþÿ
rA  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\)rS   )ç       @rB  ç      @)r   r>   rV   rW   rX   r%   ©r.   r   r   r   Útest_getitem_non_found_tuple)  s
    ÿrE  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   rD   r!  r¯   Úrepeatr   r?   r  Znonzero)r   rÂ   r%   rH   r   r   r   Útest_get_loc_datetime_index2  s    rI  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   r3   r    r   r$   rN   r   ri   rO   r6   r5   )r   ro   r   r   rC   r%   r?   r@   )rÂ   r.   r¼   rH   r   r   r   Ú,test_loc_setitem_indexer_differently_orderedH  s    $$$rJ  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   r3   r    r   r$   rN   r8  ©r   r   r   r   r†   r‡   r²   )r†   r‡   r†   r‡   )r   r   r   r   )r   r%   r¯   r?   r@   rö   r   r   r   Ú5test_loc_getitem_index_differently_ordered_slice_noneS  s    ýýrL  r¼   )r   r   r$   r   r   r   rN   r$   )r   r   r$   r   r   rN   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   rN   )r  rÈ   )r   r$   r5  rÙ   )r   r   )r   rN   )r   r$   r†   r²   )r   r   r   r   r   r   r   r   )r   r   r   r$   r$   r   r   rN   )rï   )	r   r   rÁ   r%   r¯   r?   r@   r   Úisin)r¼   r.   rd   rH   r   r   r   Ú@test_loc_getitem_index_differently_ordered_slice_none_duplicatesc  s     ÿûýrN  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 )Nrq   rr   Úzr    r=   r‰   r   r   r   r‡   r@  )
r   rD   r   r   r%   r?   r@   r   r   ra   )rÂ   r.   rH   rd   rc   r   r   r   Ú3test_loc_getitem_drops_levels_for_one_row_dataframey  s    rP  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 )
Nrg   r   r   rî   r˜   r#   r[   )r    r3   ))r#   r   )r#   r   )r[   r   )r[   r   )	r   ro   r   r   Zzerosr%   rÁ   r?   r@   )Úcolsr.   rd   rH   r   r   r   Ú$test_mi_columns_loc_list_label_order‡  s    þrR  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 )Nr5   r:  r8  rK  )ÚOhiorS  ÚColorado)ÚGreenÚRedrU  r²   Úkey1Úkey2ÚstateÚcolorz\[2\] not in indexrS   r‡   r   rT  )r   r   r›   rœ   r   r   r)   rV   rW   rX   r%   )r,   r   r   r   Ú$test_mi_partial_indexing_list_raises“  s    ýr[  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 )Nr3   r   r   r†   r‡   r   z\['not' 'found'\] not in indexrS   ÚnotÚfound)r   r(   r   ro   rV   rW   rX   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   r3   r$   rN   r†   r   r   r[   r#   r²   r™   rˆ   r   )rˆ   ©r   r[   )r‰   r_  )rÇ   rB  g      @g      @)rC  r4   g      @g       @)rC  g      ð¿r™   r™   rC  )r†   r†   rˆ   r‰   )r   r   ro   r%   r   râ   r?   r@   )rd   rH   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ƒsNJ ‚| jdgdf jd }|dkspJ ‚t|tjƒs€J ‚d S )NrÇ   r   rŒ   r   r3   rˆ   r‰   r=   r   )rÉ   r‡   rÉ   r‡   r   )r   r   rD   r%   Ú
isinstancer   rv   rA   )r.   rd   r   r   r   Ú$test_loc_get_scalar_casting_to_float¾  s     ÿ
rb  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‡   r[   r#   r   r   r=   rn   r@  r   )
r   ro   r   r   rp   r%   râ   r   r?   ra   )ré   Ús2rd   rH   r   r   r   Ú)test_loc_empty_single_selector_with_namesË  s
    
 rd  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)rF  rF  éÈ   re  é,  rf  )rO   rO   r¨   é   rG  é!   r   rg   r[   r#   z^1$rS   )rF  r   )r   r(   r>   rV   rW   rX   r%   rD  r   r   r   Ú'test_loc_keyerror_rightmost_key_missingÔ  s    ýÿri  c                  C   s8   t  ddg¡} tddg| d�}|jd }|dks4J ‚d S )NrÈ   )r   )r3   r    r   r   r   )r   rÁ   r   r%   )rÂ   rc   rd   r   r   r   Ú*test_multindex_series_loc_with_tuple_labelã  s    
rj  )8Únumpyr   rV   Zpandas.errorsr   r   ZpandasrÏ   r   r   r   r   Zpandas._testingZ_testingr?   Zfixturer   r   r   rß   rá   r¯   Z
IndexSlicerê   rð   r÷   rø   rú   rû   rý   r  r  r  r  r  r  r#  r-  r3  r4  r=  rA  rE  rI  rJ  rL  rN  rP  rR  r[  r^  r`  rb  rd  ri  rj  r   r   r   r   Ú<module>   sv   

    

 ùþ

 $	
	