U
    ¾mœdD{  ã                   @   sP  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 dAdBddCdDdddEdCgdBddCdDddEgg¡dFdG„ ƒZ.dHdI„ Z/dJdK„ Z0dLdM„ Z1dNdO„ Z2dPdQ„ Z3dRdS„ Z4dTdU„ Z5dVdW„ Z6dXdY„ Z7dS )Zé    N)ÚIndexingErrorÚPerformanceWarning)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesc                   C   s$   t ddddggddddggd	gd
�S )zsingle level MultiIndexÚfooÚbarÚbazZquxr   é   é   é   Úfirst)ÚlevelsÚcodesÚnames)r   © r   r   úb/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/indexing/multiindex/test_loc.pyÚsingle_level_multiindex   s
      ÿr   c                  C   sT   ddgdddgg} ddddddgddddddgg}t | |d�}ttj dd¡|d�S )Nr   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                   @   sP  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#d1S ):ÚTestMultiIndexLocc                 C   sV   |}d|j d< |j d dks t‚| ¡ }ttdƒƒ|_d|j d< |j d dksRt‚d S )Né   )©r	   ÚtwoÚBr   é   )r   r   )ÚlocÚAssertionErrorÚ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 5 Q R X |j	dd�}|d ksªt
‚|j| }tjdgd |d�}tjd	gd |d�}	tj||	gddgd�}
t ddddgi|
d�}t ||¡ d S )Ni¼  iX  éÞ   iM  i¼  )r   r   r   r   é   g      @ç      @é   é   )ÚamountÚcolÚnum)r3   r4   r3   r4   )Úkeys)r/   r0   r   T)Zinplacer   ©Údtype©r   r2   r   )r   ZastypeÚ	set_indexÚtmZassert_produces_warningr   Úassert_frame_equalr"   ÚilocÚ
sort_indexr#   r   Úarrayr   Úfrom_arrays)r(   Zany_real_numpy_dtyper7   Údatar+   ÚkeyZreturn_valueÚresZcol_arrZyear_arrr   Úexpectedr   r   r   Útest_loc_getitem_general/   s&    ý&
z*TestMultiIndexLoc.test_loc_getitem_generalc              	   C   s`   t tj dd¡dddgdddggdddgdddggd�}tjtd	d
�� |jd  W 5 Q R X d S ©Nr   r   r.   r   é   é
   r0   ©r'   r   z^2$©Úmatch©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   rG   )rT   r   é   )Úreindexr   r"   r:   Úassert_series_equal)r(   Ú/multiindex_year_month_day_dataframe_random_dataÚserrC   Úresultr   r   r   Ú/test_loc_getitem_list_of_tuples_with_multiindexW   s    zATestMultiIndexLoc.test_loc_getitem_list_of_tuples_with_multiindexc                 C   s  t  dddgdddgg¡}t|tdƒtjd�}tddgƒ}td	ddd
ddgt  ddgdddg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 )Nr   r   r   rQ   r    ÚCé	   ©r   r@   r7   r   r   r!   rF   ©r@   r   r7   r   )r@   r7   ©r   r   r7   ©r   r7   )
r   Úfrom_productr   r&   r   Úfloat64r"   r:   rW   r   )r(   r   ÚxÚyrC   rZ   Úy1Úemptyr   r   r   Útest_loc_getitem_series_   s.    ý

ý
z)TestMultiIndexLoc.test_loc_getitem_seriesc                 C   s  t  dddgdddgg¡}t|tdƒtjd�}t ddg¡}td	ddd
ddgt  ddgdddg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d	ddgdddgtjd�}|j| }t 	||¡ d S )Nr   r   r   rQ   r    r\   r]   r^   r   r   r!   rF   r_   r`   rc   ra   )r   rb   r   r&   r   rc   r>   r"   r:   rW   r   Úint64)r(   r   rd   re   rC   rZ   rg   Zscalarr   r   r   Útest_loc_getitem_array~   s,    ý

ý


z(TestMultiIndexLoc.test_loc_getitem_arrayc                 C   s  t tj dd¡dddgdddggdddgdddg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   ÚiÚjrQ   r    ÚXÚYrH   r   r   r   ©Úaxis)rk   rm   ©	r   r   r   r   r<   Ú	droplevelr"   r:   r;   ©r(   r+   rC   rZ   r   r   r   Útest_loc_multiindex_labelsœ   s"    ý
"
z,TestMultiIndexLoc.test_loc_multiindex_labelsc                 C   sf   t tj dd¡dddgdddggdddgdddggd�}|jd	d
g  d	¡}|jd }t ||¡ d S )Nr   r   r.   r   rF   rG   r0   rH   r   r   rq   rs   r   r   r   Útest_loc_multiindex_ints·   s    ý
z*TestMultiIndexLoc.test_loc_multiindex_intsc              	   C   s`   t tj dd¡dddgdddggdddgdddggd�}tjtd	d
�� |jd  W 5 Q R X d S rE   rK   rO   r   r   r   Ú(test_loc_multiindex_missing_label_raisesÁ   s    ýz:TestMultiIndexLoc.test_loc_multiindex_missing_label_raiseszkey, posr   r.   r   r   r   c              	   C   s`   t tj dd¡dddgdddggdddgdddggd�}tjtd	d
�� |j|  W 5 Q R X d S )Nr   r   r.   r   rF   rG   r0   rH   znot in indexrI   rK   )r(   rA   Ú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 5 Q R X tjtdd
�� |jd  W 5 Q R X tjtdd
�� |jd  W 5 Q R X d S )NrF   ÚaÚbÚcÚdÚeÚfr   z^\('a', 'b'\)$rI   ©ry   rz   z^\('a', 'd', 'g'\)$)ry   r|   ÚgzToo many indexers)ry   r|   r€   rl   )	r   r&   r   rb   rL   rM   rN   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 ddddgdddg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©Ú.0rk   r   r   r   Ú
<listcomp>è   s     zFTestMultiIndexLoc.test_loc_multiindex_indexer_none.<locals>.<listcomp>r   c                 S   s   g | ]}d t |ƒ ‘qS )ÚValuer„   r†   r   r   r   rˆ   é   s     r   gš™™™™™¹?rG   g      à?©r'   r0   éÿÿÿÿr   r   r.   r   )r&   r   rb   r   r   r   r   r:   r;   ÚarangeÚreshaper"   )r(   Ú
attributesZattribute_valuesr   r+   rZ   rC   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ƒdddg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ƒdddgg¡ƒ}|j	d
dddddg }|jdd	d…dd…f }t ||¡ d S )Né   ri   r6   r   ry   rz   r{   r   r.   r   r!   rF   r0   rU   é   r   )
r   r   rŒ   r   rb   r&   r"   r:   rW   r<   )r(   r�   rC   rZ   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  dddgddgg¡}ttj dd¡||ƒ}|jdd…d d …f }|}t ||¡ t  dddg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 )Nr   r!   rF   ry   rz   rG   é   é   r   r   )r   rb   r   r   r   r   r"   r:   r;   r<   r   )r(   r   r+   rZ   rC   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„ ‰ dddg}dddg}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ksŒ|tkr¸t	j
tdd�� |j|	df  W 5 Q R X d S |j|	df }
tddddgdt  |¡d�}t |
|¡ d S )Nc                 S   s,   | t jkrt  |¡S | tkr$t|Ž S | |ƒS ©N)r   Úndarrayr>   Úslice)Úindexer_typer5   r   r   r   Úconvert_nested_indexerC  s
    

zQTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.convert_nested_indexerrG   r—   r˜   r   r   r   ri   r6   ÚData©r   r'   c                 3   s   | ]\}}ˆ ||ƒV  qd S rœ   r   )r‡   rŸ   r•   ©r    r   r   Ú	<genexpr>V  s   ÿzDTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.<genexpr>zas an indexer is not supportedrI   r.   r   ©Únamer   )r   rb   r   r   rŒ   r“   ÚtupleÚzipÚsetrL   rM   Ú	TypeErrorr"   r   r:   rW   )r(   rš   r›   ry   rz   r   r+   r5   ÚtypesÚindexerrZ   rC   r   r£   r   Útest_loc_getitem_nested_indexer8  s2    

  ÿþ
  ÿ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©ry   rQ   ©rz   rQ   r   r   r   r   ©ry   )r   Úfrom_tuplesr"   r:   Zassert_equal)r(   Zframe_or_seriesÚmiÚobjrC   r   r   r   Ú)test_multiindex_loc_one_dimensional_tupleg  s
    
z;TestMultiIndexLoc.test_multiindex_loc_one_dimensional_tupler¬   r°   ry   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³   rC   r   r   r   Ú-test_multiindex_one_dimensional_tuple_columnso  s
    z?TestMultiIndexLoc.test_multiindex_one_dimensional_tuple_columnszindexer, exp_valueNç      ð?©r   r   c                 C   sx   t  ddg¡}tddgddgg|ddgd	�}d
|j|ddgf< tddd
d
gdd||gg|ddddgd	�}t ||¡ d S )Nr¸   ©r   r.   r   r   r   r.   ry   rz   r¢   r·   r{   r|   rµ   )r(   r¬   Z	exp_valuer²   r+   rC   r   r   r   Ú)test_multiindex_setitem_columns_enlargingx  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   ©Úperiodsry   rz   r   r   ro   z
2011-01-01z
2011-01-02©r   r   )r   rb   ÚpdÚ
date_ranger   r   Úconcatr$   r"   r:   r;   r   rV   r   )r(   ZmidxZser1Úser2r+   rC   rZ   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   rb   r%   r"   r   Zs_r:   r;   )r(   r+   rB   rC   r   r   r   Útest_loc_no_second_level_index›  s    þ ÿz0TestMultiIndexLoc.test_loc_no_second_level_index)$Ú__name__Ú
__module__Ú__qualname__r,   rD   rP   r[   rh   rj   rt   ru   rv   rL   ÚmarkÚparametrizerx   r‚   r�   r’   r–   r™   r%   r§   r©   rž   r   r�   r   r   r­   r´   r¶   Únanrº   rÂ   rÅ   r   r   r   r   r   #   sF   

,
 ÿ ÿ)
 ÿ
r   zindexer, posrQ   r   ÚDÚEr   r   Úbahc              	   C   sÖ   t jdddgdddg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 5 Q R X nP| td ƒddgfkr¼tj	t
dd�� |j|   W 5 Q R X n|j|  }t ||¡ d S )NrQ   r    r\   r   r	   r
   Úoner   r8   r]   ri   r6   r   r   rI   rÎ   z'bah')r   rb   r   r   rŒ   r=   r<   ÚsizerL   rM   rN   r…   r"   rž   r:   rW   )r¬   rw   ÚidxrY   rC   rZ   r   r   r   Ú7test_loc_getitem_duplicates_multiindex_missing_indexers¨  s     ÿ

rÒ   Úcolumns_indexerc                 C   s~   t  dddg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   r	   r
   ÚalphaÚbetar   r   r¢   r   r   )Úlevelrp   )r   rb   r   r   r   r   r&   r=   rV   r"   r:   r;   )rÓ   Zmulti_indexr+   rC   rZ   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sHt‚d S )	NÚmeanÚmedian©ÚfunctsrØ   )rÛ   rÙ   Úfunctionr¦   rH   )rÜ   rÚ   )r   r   rØ   rÙ   r   r±   r"   r#   ©r+   rZ   rC   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 )NrG   )ry   rz   r{   r|   ry   rz   )r   r   )	r   r   rŒ   r   r   r9   r"   r:   rW   )r+   rC   rZ   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   rr   r:   r;   )r   r+   rZ   rC   r   r   r   Útest_loc_getitem_intò  s
    
rá   c              	   C   s,   | }t jtdd�� |jd  W 5 Q R X d S )Nz^3$rI   r   )rL   rM   rN   r"   )r   r+   r   r   r   Ú%test_loc_getitem_int_raises_exceptionú  s    râ   c              	   C   sT   | }t jtdd�� |jd  W 5 Q R X d|jd< d}| ¡ jd }||ksPt‚d S )Nz^\('bar', 'three'\)$rI   ))r	   Úthreer    r   )rL   rM   rN   r"   r=   r#   )r)   r+   rC   rZ   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 d	d
dg¡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¢   ry   Úlabelsr.   )rQ   Ú1)rQ   Ú2)r    rè   r    r   )r   r%   r   rb   r   r"   r:   Úassert_numpy_array_equalr   ZasarrayrË   r&   r±   r$   rŒ   r<   r;   )r+   rC   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ddddgƒtj| dddgd�d�}|jd jd }tt  d¡tt jgddd�tddddgdd�d�}t 	||¡ d S )NzGood Thingsr\   ÚRz
Bad ThingsÚT)úOkay ThingsÚNr    )rî   rï   rÌ   rî   r    rÌ   )rF   r.   Zd1Zd2Zd3Zd4Úu1Úu2Úu3r8   rH   )r   r.   Úobject)r7   r¦   r6   r¢   )
r   rË   r   Zonesr   r   r±   r"   r:   r;   )Ztupsr+   rZ   rC   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`t‚t |¡snt‚d S )NÚ2013Q1Z2013Q4ÚQ)Úfreq)éW  i®  i  )ZPeriodZCVRr8   )	Ú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   rb   r   r"   r   Úisnanr#   )ry   rk   rÑ   r+   rZ   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Idx2r8   r   r   r   r.   r   r   r!   ZC1ZC2©r@   r   r'   r   r¥   )r¾   Úto_datetimer   rb   r   r"   r   Zget_level_valuesr   r±   Ú	Timestampr:   rW   )Zdt_idxZm_idxr+   rZ   rC   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   ry   rz   r8   r{   )r   r¦   )r¾   rþ   r   r   r±   r"   r:   rW   )ÚdaterY   rZ   r   r   r   Ú&test_loc_datetime_series_tuple_slicings  s    
ýr  c                  C   s°   t ddgddgddgddggtjddd	d	g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dd	d	gd
dgd�ddgd�}t ||¡ d S )Nry   r   r   rz   r{   r   r½   )r   r   ©r   r   r   r  r8   ÚauthorZpricerü   r¢   )r   r   r±   r"   r:   r;   )r+   rÑ   rZ   rC   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sNt‚|j 	| d ¡ |j
| d  }|jdg  d ¡}t ||¡ |d }|jjd
ks¢t‚|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_framer9   r   r   r#   Úget_locr"   r<   rr   r:   r;   rW   )ZdtirY   r+   Údf2rZ   rC   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_csvr9   r=   r"   rž   rr   r:   r;   )ÚdatapathÚpathr+   r	  rB   rC   r   r   r   Útest_getitem_str_sliceª  s     r  c                  C   sx   t jddddgddd�} ddd	d
g}ddddg}t | ||g¡}ttdƒ|tjd�}|j| d ddf }|dkstt	‚d S )Nz20181101 1100z20181101 1200z20181102 1300z20181102 1400Údatetimer    )r¦   r÷   rQ   ÚZÚWr\   rö   ÚFr.   ra   r   g        )
r¾   ZPeriodIndexr   r?   r   r&   r   rc   r"   r#   )ÚpiZlev2Zlev3r²   rY   rZ   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   sV   t t d¡ dd¡dddgd�}| ddg¡}tjtdd	�� |jd
  W 5 Q R X d S )Nr0   r.   r   rQ   r    r\   rŠ   rè   rI   ©r   r   )	r   r   rŒ   r�   r9   rL   rM   rN   r"   )r(   r+   r	  r   r   r   Ú!test_missing_keys_raises_keyerrorÆ  s     z=TestKeyErrorsWithMultiIndex.test_missing_keys_raises_keyerrorc              	   C   sD   t dt ddggd ¡d�}tjtdd�� |jd  W 5 Q R X d S )	Nr‹   r   r   r   r   z\(0, 3\)rI   )r   r   )r   r   rb   rL   rM   rN   r"   )r(   rY   r   r   r   Ú!test_missing_key_raises_keyerror2Î  s    z=TestKeyErrorsWithMultiIndex.test_missing_key_raises_keyerror2c              	   C   sô   t jt ddddg¡t ddddg¡t ddddg¡gdd	d
gd�}ttj dd¡|d�}d}tjt	|d��" |j
ddtd ƒfd d …f  W 5 Q R X tjt	|d�� |j ddtd ƒf¡ W 5 Q R X tjt	dd�� |j
dd d …f  W 5 Q R X d S )Nry   rz   rè   ré   Ú3r{   r|   rÏ   r   rã   r8   r.   r   r   z'\('b', '1', slice\(None, None, None\)\)rI   z\('b', '1'\))rz   rè   )r   r?   r   r>   r   r   ZrandrL   rM   rN   r"   rž   r   Zget_locs)r(   r²   r+   Úmsgr   r   r   Útest_missing_key_combinationÕ  s    ýú& 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 )NrQ   )rT   r   )r"   r:   rW   )rX   r+   rY   rZ   rC   r   r   r   Útest_getitem_loc_commutabilityé  s
    r  c                  C   sž   t dddgddtjgdddg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 )Nr   r   r   ry   r|   r.   )r3   Úind1Úind2r  r  r3   )ry   r   r8   r   ©r¦   )
r   r   rË   r9   r"   r   r±   r:   r;   r   rÝ   r   r   r   Útest_loc_with_nanñ  s    ÿþ ÿ
r!  c               	   C   sR   t ddddggddddgd	� dddg¡} tjtd
d�� | jd  W 5 Q R X d S )Nr   r   r   r.   ry   rz   r{   r|   rŠ   z\(2\.0, 2\.0, 3\.0\)rI   )ç       @r"  ç      @)r   r9   rL   rM   rN   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s4t‚|  d¡tddd ƒksNt‚|d d d…  d¡}| d d d…  d¡}||ks‚t‚| d¡ d¡}|  d¡ d¡}||ks®t‚| |¡ d¡}|  | ¡ d¡}t	 
| ¡ d |¡ d S )Nz
2001-01-01éd   r»   z2001-01r   é   r   )r¾   r¿   r   r?   r  rž   r#   Úrepeatr  r:   rê   Znonzero)r   r²   r"   rC   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 )Nry   rz   r   r   r   r   r.   r   r   r!   rF   r   r]   rG   r1   r0   )r   rb   r   r   r>   r"   r:   r;   )r²   r+   r¬   rC   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d	d	d
d
gddddg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d	d
d	d
gddddggd	d
gd�}t ||¡ d S )Nr   r   r   r.   r   r   r!   rF   ry   rz   r¢   )r   r"   rž   r:   r;   rÝ   r   r   r   Ú5test_loc_getitem_index_differently_ordered_slice_none+  s    ýýr+  r¬   r   r!   r   rF   c                 C   sº   t dgd t ddddddd	d
g¡dgd�}|jtd ƒ| fd d …f }t dgd ddddddddgddddddddggdgd�}t ||¡ |j|jj| dd�d d …f }t ||¡ d S )Nr   rF   r  r¸   )r   r!   r  )r   r   )r   r   )r   rF   )r   r!   ry   r¢   r   r!   r   r   )rÖ   )	r   r   r±   r"   rž   r:   r;   r   Úisin)r¬   r+   rZ   rC   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dddg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 )Nrd   re   Úzry   rz   r{   r8   r|   r   r   r   r   )
r   r?   r   rr   r"   r:   r;   r   r   rW   )r²   r+   rC   rZ   rY   r   r   r   Ú3test_loc_getitem_drops_levels_for_one_row_dataframeQ  s     r/  c                  C   sp   t  dddgddgg¡} tt d¡| d�}|jd d …ddgf }tt d¡t  d	d
ddg¡d�}t ||¡ d S )NrQ   r    r\   r   r   )r   r   rŠ   )r   r.   )r    r   )r    r   )rQ   r   )rQ   r   )	r   rb   r   r   Zzerosr"   r±   r:   r;   )Úcolsr+   rZ   rC   r   r   r   Ú$test_mi_columns_loc_list_label_order_  s    þr1  c               	   C   s†   t t d¡ d¡ddddgddddggdddgd	d
d	ggd�} ddg| j_ddg| j_tjt	dd�� | j
ddgdf  W 5 Q R X d S )Nr0   )r.   r   ry   rz   r   r   ZOhioZColoradoZGreenÚRedr¢   Úkey1Úkey2ÚstateÚcolorz\[2\] not in indexrI   )r   r   rŒ   r�   r   r   r'   rL   rM   rN   r"   )r*   r   r   r   Ú$test_mi_partial_indexing_list_raisesk  s    ýr7  c               	   C   sN   t tdƒt ddgddgg¡d�} tjtdd�� | jd	d
g  W 5 Q R X d S )Nr.   r   r   ry   rz   r   z\['not' 'found'\] not in indexrI   ÚnotÚfound)r   r&   r   rb   rL   rM   rN   r"   )r�   r   r   r   Ú(test_mi_indexing_list_nonexistent_raisesx  s    "r:  c                  C   s¼   t ddddgddddggd	d	gt ddgd
dgg¡d�} d| jd< d| jd< d| jd< t ddddgddddgddddgdtjtjtjggd	d	ddgt ddgd
dgg¡d�}t | |¡ d S )Nr   r   r   r   r   r.   r!   rF   ry   rQ   r    r¢   r‹   r{   )r{   ©r   rQ   )r|   r;  r·   r"  g      @g      @r#  r/   g      @g       @g      ð¿r|   )r   r   rb   r"   r   rË   r:   r;   )rZ   rC   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>t‚t|tjƒsNt‚| jdgdf jd }|dkspt‚t|tjƒs€t‚d S )Nr·   r   r   r   r.   r{   r|   r8   r   )r¹   rz   r¹   rz   r   )	r   r   r?   r"   r#   Ú
isinstancer   ri   r<   )r+   rZ   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 )Nry   rz   rQ   r    r   r   r8   ra   r   r   )
r   rb   r   r   rc   r"   rË   r   r:   rW   )rÑ   Ús2rZ   rC   r   r   r   Ú)test_loc_empty_single_selector_with_names£  s
    
 r@  c               	   C   sb   t ddddddgddddddgtd	ƒd
œƒ} |  ddg¡} tjtdd�� | jd  W 5 Q R X d S )Nr&  éÈ   i,  rG   r—   é   r'  é!   r   )rQ   r    r\   rQ   r    z^1$rI   )r&  r   )r   r&   r9   rL   rM   rN   r"   r$  r   r   r   Ú'test_loc_keyerror_rightmost_key_missing¬  s    ýÿrD  c                  C   s8   t  ddg¡} tddg| d�}|jd }|dks4t‚d S )Nr¸   )r   )r.   r   r   r   r   )r   r±   r   r"   r#   )r²   rY   rZ   r   r   r   Ú*test_multindex_series_loc_with_tuple_label»  s    
rE  )8Únumpyr   rL   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  r  r  r  r!  r%  r)  r*  r+  r-  r/  r1  r7  r:  r<  r>  r@  rD  rE  r   r   r   r   Ú<module>   sv   

   

 ùþ

!$	,
	