o
    Û­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ÚbazÚqux)r   é   é   é   Úfirst)ÚlevelsÚcodesÚnames)r   © r   r   úf/var/www/html/CropPilot/venv/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                   @   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sJ ‚| ¡ }ttdƒƒ|_|r+|d d … }d|j d< |j d dks9J ‚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 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)r9   r:   r9   r:   )Úkeys)r5   r6   r   T)Úinplacer   ©Údtype©r   r8   )r1   r2   r3   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_general7   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   r4   ©r   é   é
   ©r4   r4   rW   ©rW   rX   r6   ©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   rX   )rg   r   é   )Úreindexr   r&   rB   Úassert_series_equal)r+   Ú/multiindex_year_month_day_dataframe_random_dataÚserrP   Ú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   ©rd   r$   ÚCé	   ©r   rJ   r>   r   r   ©r   r   r   r   r%   rW   ©rJ   r   r>   r   r   )rJ   r>   ©r   r   r>   ©r   r>   )
r   Úfrom_productr   r)   r   Úfloat64r&   rB   rj   r   )r+   r   ÚxÚyrP   rm   Ú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 )Nro   rp   rr   rs   r   r   rt   ru   rv   ry   rw   r   )r   rx   r   r)   r   ry   rG   r&   rB   rj   r   Úint64)r+   r   rz   r{   rP   rm   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   rT   )Úir‚   Új)rd   rd   r$   )ÚXr„   ÚYr[   r   r   r‚   ©Úaxisrƒ   )r‚   r„   ©
r   r   r   r   r   rE   Ú	droplevelr&   rB   rD   ©r+   r/   rP   rm   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   rT   rU   rV   rY   rZ   r[   r   r   r4   rˆ   rŠ   r   r   r   Útest_loc_multiindex_ints¿   s   ý
z*TestMultiIndexLoc.test_loc_multiindex_intsc                 C   rR   rS   r^   rb   r   r   r   Ú(test_loc_multiindex_missing_label_raisesÉ   s   ý"ÿz:TestMultiIndexLoc.test_loc_multiindex_missing_label_raiseszkey, posr   r4   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   rT   rU   rV   rY   rZ   r[   znot in indexr\   r^   )r+   rK   Ú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 )NrW   ÚaÚbÚcÚdÚeÚfr   z^\('a', 'b'\)$r\   ©r�   r‘   z^\('a', 'd', 'g'\)$)r�   r“   ÚgzToo many indexers)r�   r“   r—   rƒ   )	r   r)   r   rx   r_   r`   ra   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   )rX   r!   g      à?©r*   r6   éÿÿÿÿ©r   r   r   r4   ro   r   )r)   r   rx   r   r   r   r   r   rB   rD   ÚarangeÚreshaper&   )r+   Ú
attributesÚattribute_valuesr   r/   rm   rP   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   r4   )r   r%   rW   r6   rh   é   r   )
r   r   r¦   r   rx   r)   r&   rB   rj   rE   )r+   r˜   rP   rm   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%   rW   r�   r‘   r   )r   r   r   rW   ©rX   é   é   rµ   r¶   rX   r   )r   rx   r   r   r   r   r   r&   rB   rD   rE   r   )r+   r   r/   rm   rP   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   ÚndarrayrG   Úslice)Úindexer_typer;   r   r   r   Úconvert_nested_indexerN  s
   

zQTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.convert_nested_indexerr´   ro   r   r=   ÚData©r   r*   rX   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 supportedr\   )r   r   r4   r!   ©Únamer   )r   rx   r   r   r¦   r¯   ÚtupleÚzipÚsetr_   r`   Ú	TypeErrorr&   r   rB   rj   )r+   r¸   r¹   r�   r‘   r   r/   r;   ÚtypesÚindexerrm   rP   r   rÁ   r   Útest_loc_getitem_nested_indexerC  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�   rd   ©r‘   rd   r   r   r   r   ©r�   )r   Úfrom_tuplesr&   rB   Úassert_equal)r+   Úframe_or_seriesÚmiÚobjrP   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&   rB   rD   )r+   rÊ   rÒ   rÓ   rP   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   r4   r   r   r   r4   r�   r‘   rÀ   r×   r’   r“   )r   r   r×   r×   ©r�   r‘   r’   r“   rÕ   )r+   rÊ   Ú	exp_valuerÒ   r/   rP   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   rx   ÚpdÚ
date_ranger   r   Úconcatr'   r&   rB   rD   r   ri   r   )r+   ÚmidxÚser1Úser2r/   rP   rm   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   rx   r(   r&   r   Ús_rB   rD   )r+   r/   rM   rP   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   r4   z(1, 4)r\   )r   ©r   r4   )r   r_   r`   ra   r&   rb   r   r   r   Útest_loc_multi_index_key_error²  s   üÿ"ÿz0TestMultiIndexLoc.test_loc_multi_index_key_error)&Ú__name__Ú
__module__Ú__qualname__r_   ÚmarkÚfilterwarningsÚparametrizer0   rQ   rc   rn   r~   r�   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   #   sH    

,

	ÿÿ)
ÿ
r   zindexer, posrd   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 )Nrp   ©r   r	   r
   Úoner#   r?   rr   r   r=   r   r   r\   r   rû   z'bah')r   rx   r   r   r¦   rF   rE   Úsizer_   r`   ra   r�   r&   r¼   rB   rj   )rÊ   rŽ   Úidxrl   rP   rm   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   rx   r   r   r   r   r   r)   rF   ri   r&   rB   rD   )r  Úmulti_indexr/   rP   rm   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Ä   r[   )r  r
  )r   r   r  r	  r   rÏ   r&   ©r/   rm   rP   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 )NrX   r   rÚ   r�   r‘   )r   r   )
r   r   r¦   r   r   r   rA   r&   rB   rj   )r/   rP   rm   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‰   rB   rD   )r   r/   rm   rP   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$r\   r   )r_   r`   ra   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'\)$r\   ))r	   Úthreer$   r   )r_   r`   ra   r&   rF   )r,   r/   rP   rm   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�   Úlabelsr4   ))rd   Ú1)rd   Ú2)r$   r  r$   r   )r   r(   r   rx   r   r&   rB   Úassert_numpy_array_equalr   Úasarrayrø   r)   rÏ   r'   r¦   rE   rD   )r/   rP   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 Thingsrq   ÚRz
Bad ThingsÚT)úOkay ThingsÚNr$   )r!  r"  rù   r!  r$   rù   )rW   r4   )Úd1Úd2Úd3Úd4)Úu1Úu2Úu3r?   r[   rð   Úobjectr�   r)  )r>   rÄ   rÀ   )
r   rø   r   Úonesr   r   rÏ   r&   rB   rD   )Úusing_infer_stringÚtupsr/   rm   rP   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 |¡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/  r3  r6  r   r3  r6  )rá   Úperiod_ranger   rx   r   r&   r   Úisnan)r�   r‚   rÿ   r/   rm   Úaltr   r   r   Útest_loc_period_string_indexing_  s   þ

rB  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   r4   r!   r   r%   ÚC1ÚC2©rJ   r   r*   r   rÃ   )rá   Úto_datetimer   rx   r   r&   r   Úget_level_valuesr   rÏ   Ú	TimestamprB   rj   )Údt_idxÚm_idxr/   rm   rP   r   r   r   Útest_loc_datetime_mask_slicing  s   "ÿ"þýrM  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á   rJ  r   r   rÏ   r&   rB   rj   )Údaterl   rm   r   r   r   Ú&test_loc_datetime_series_tuple_slicing’  s   
ýrP  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   rQ  r   rO  r?   ÚauthorÚpricerG  rà   rQ  )rà   rQ  rQ  rÀ   )r   r   rÏ   r&   rB   rD   )r/   rÿ   rm   rP   r   r   r   Útest_loc_with_mi_indexerž  s   ÿûýrT  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_framerA   r   r   Úget_locr&   rE   r‰   rB   rD   rj   )Údtirl   r/   Údf2rm   rP   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.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.135r\  z51.92r]  )rb  r_  r`  ra  ztime,ticker,bid,askú,r£   ÚtickerÚtimer_  z2016-05-25 13:30:00r   )	r   ÚsplitrA   rF   r&   r¼   r‰   rB   rD   )r/   rZ  rM   rP   r   r   r   Útest_getitem_str_sliceÉ  s   ú÷ rg  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Ä   r2  )rd   rd   ÚZÚW)r$   rq   r1  ÚFr4   rw   r   rd   r$   g        )	rá   ÚPeriodIndexr   rH   r   r)   r   ry   r&   )ÚpiÚlev2Úlev3rÒ   rl   rm   r   r   r   Ú!test_3levels_leading_period_indexÝ  s   ýrp  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 )Nr6   r4   r   rp   r£   rd   r$   r  r\   ©r   r   )	r   r   r¦   r§   rA   r_   r`   ra   r&   )r+   r/   rZ  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\)r\   )r   r   )r   r   rx   r_   r`   ra   r&   )r+   rl   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   ©r4   r   r   z'\('b', '1', slice\(None, None, None\)\)r\   r‘   r  z\('b', '1'\))r‘   r  )r   rH   r   rG   r   r   r   r_   r`   ra   r&   r¼   r   Úget_locs)r+   rÒ   r/   Úmsgr   r   r   Útest_missing_key_combinationý  s$   ýúÿÿ"ÿz8TestKeyErrorsWithMultiIndex.test_missing_key_combinationN)rò   ró   rô   rs  rt  rz  r   r   r   r   rq  í  s    rq  c                 C   s2   | }|d }|d }|j d d }t ||¡ d S )Nrd   )rg   r!   )r&   rB   rj   )rk   r/   rl   rm   rP   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   r4   r!   )r9   Úind1Úind2r|  r}  r9   r   )r�   r   r?   r   ©rÄ   )
r   r   rø   rA   r&   r   rÏ   rB   rD   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\)r\   )ç       @r€  ç      @)r   rA   r_   r`   ra   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   rH   rX  r¼   ÚrepeatrV  rB   r  Únonzero)r   rÒ   r&   rP   r   r   r   Útest_get_loc_datetime_index2  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   r4   r!   r   r%   rW   r   rr   rX   r7   r6   )r   rx   r   r   rG   r&   rB   rD   )rÒ   r/   rÊ   rP   r   r   r   Ú,test_loc_setitem_indexer_differently_orderedH  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   r4   r!   r   r%   rW   ru  ©r   r   r   r   r�   r‘   rÀ   )r�   r‘   r�   r‘   )r   r   r   r   )r   r&   r¼   rB   rD   r  r   r   r   Ú5test_loc_getitem_index_differently_ordered_slice_noneS  s   ýýr‹  rÊ   )r   r   r%   r   r   r   rW   r%   )r   r   r%   r   r   rW   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   rW   )rQ  rØ   )r   r%   rr  rï   )r   r   )r   rW   )r   r%   r�   rÀ   )r   r   r   r   r   r   r   r   )r   r   r   r%   r%   r   r   rW   )r  )	r   r   rÏ   r&   r¼   rB   rD   r   Úisin)rÊ   r/   rm   rP   r   r   r   Ú@test_loc_getitem_index_differently_ordered_slice_none_duplicatesc  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 )Nrz   r{   Úzr¬   r?   r“   r   r   r   r‘   r~  )
r   rH   r   r‰   r&   rB   rD   r   r   rj   )rÒ   r/   rP   rm   rl   r   r   r   Ú3test_loc_getitem_drops_levels_for_one_row_dataframey  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 )
Nrp   r   r   r  r£   r$   rd   )r!   r4   ))r$   r   )r$   r   )rd   r   )rd   r   )	r   rx   r   r   Úzerosr&   rÏ   rB   rD   )Úcolsr/   rm   rP   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 )Nr6   rw  ru  rŠ  )ÚOhior“  ÚColorado)ÚGreenÚRedr•  rÀ   Úkey1Úkey2ÚstateÚcolorz\[2\] not in indexr\   r‘   r   r”  )r   r   r¦   r§   r   r   r*   r_   r`   ra   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 )Nr4   r   r   r�   r‘   r   z\['not' 'found'\] not in indexr\   ÚnotÚfound)r   r)   r   rx   r_   r`   ra   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   r4   r%   rW   r�   r   r   rd   r$   rÀ   r¤   r’   r   )r’   ©r   rd   )r“   rŸ  )r×   r€  g      @g      @)r�  r5   g      @g       @)r�  g      ð¿r¤   r¤   r�  )r�   r�   r’   r“   )r   r   rx   r&   r   rø   rB   rD   )rm   rP   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   r4   r’   r“   r?   r   )rÙ   r‘   rÙ   r‘   r   )r   r   rH   r&   Ú
isinstancer   r   rE   )r/   rm   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‘   rd   r$   r   r   r?   rw   r~  r   )
r   rx   r   r   ry   r&   rø   r   rB   rj   )rÿ   Ús2rm   rP   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¦  )rX   rX   rµ   é   r…  é!   r   rp   rd   r$   z^1$r\   )r„  r   )r   r)   rA   r_   r`   ra   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   )r4   r!   r   r   r   )r   rÏ   r   r&   )rÒ   rl   rm   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Ú_testingrB   Úfixturer   r   r   rõ   r÷   r¼   Ú
IndexSlicer   r  r  r  r  r  r  r  r.  rB  rM  rP  rT  r[  rg  rp  rq  r{  r  rƒ  rˆ  r‰  r‹  r�  r�  r’  r›  rž  r   r¢  r¤  r©  rª  r   r   r   r   Ú<module>   sx    

    

 ùþ

 $	
	