U
    `»{jn{  ã                   @   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   úh/var/www/html/bwave/python/venv/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 |ƒ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	gd 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      @ç      @éÜ  iÛ  )ÚamountÚcolÚyearr2   r3   )Úkeys)r/   r0   r   T)Zinplacer   ©r   r1   r   )r   Ú	set_indexÚtmÚassert_produces_warningr   Úassert_frame_equalr"   ÚilocÚ
sort_indexr#   r   Úfrom_arrays)r(   Údatar+   ÚkeyZreturn_valueÚresr   Ú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   é   é
   é   ©r'   r   z^2$©Úmatch©r   r   r   r   ÚpytestÚraisesÚKeyErrorr"   ©r(   r+   r   r   r   Ú0test_loc_getitem_multiindex_missing_label_raisesH   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   rD   )rR   r   é   )Úreindexr   r"   r7   Úassert_series_equal)r(   Ú/multiindex_year_month_day_dataframe_random_dataÚserr@   Úresultr   r   r   Ú/test_loc_getitem_list_of_tuples_with_multiindexS   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   rO   r    ÚCé	   ©r   r=   Údtyper   r   r!   rC   ©r=   r   r]   r   )r=   r]   ©r   r   r]   ©r   r]   )
r   Úfrom_productr   r&   r   Úfloat64r"   r7   rU   r   )r(   r   ÚxÚyr@   rX   Ú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   rO   r    rZ   r[   r\   r   r   r!   rC   r^   r_   rb   r`   )r   ra   r   r&   r   rb   Úarrayr"   r7   rU   r   Úint64)r(   r   rc   rd   r@   rX   rf   Zscalarr   r   r   Útest_loc_getitem_arrayz   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ÚjrO   r    ÚXÚYrF   r   r   r   ©Úaxis)rk   rm   ©	r   r   r   r   r:   Ú	droplevelr"   r7   r9   ©r(   r+   r@   rX   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   rC   rD   rE   rF   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 rB   rI   rM   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   rC   rD   rE   rF   znot in indexrG   rI   )r(   r>   Úposr+   r   r   r   Ú&test_loc_multiindex_list_missing_labelÇ   s    ýz8TestMultiIndexLoc.test_loc_multiindex_list_missing_labelc              	   C   s˜   t tdƒt ddgddgddgg¡d�}tjtd	d
�� |jd  W 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 )NrC   ÚaÚbÚcÚdÚeÚfr   z^\('a', 'b'\)$rG   ©ry   rz   z^\('a', 'd', 'g'\)$)ry   r|   ÚgzToo many indexers)ry   r|   r€   rl   )	r   r&   r   ra   rJ   rK   rL   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š™™™™™¹?rD   g      à?©r'   rE   éÿÿÿÿr   r   r.   r   )r&   r   ra   r   r   r   r   r7   r9   ÚarangeÚreshaper"   )r(   Ú
attributesZattribute_valuesr   r+   rX   r@   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   ©r]   r   ry   rz   r{   r   r.   r   r!   rC   rE   rS   é   r   )
r   r   rŒ   r   ra   r&   r"   r7   rU   r:   )r(   r�   r@   rX   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!   rC   ry   rz   rD   é   é   r   r   )r   ra   r   r   r   r   r"   r7   r9   r:   r   )r(   r   r+   rX   r@   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	 
t¡� |j|	df }
W 5 Q R X n|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   Úndarrayrh   Úslice)Úindexer_typer4   r   r   r   Úconvert_nested_indexerA  s
    

zQTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.convert_nested_indexerrD   r˜   r™   r   r   r   ri   r‘   ÚData©r   r'   c                 3   s   | ]\}}ˆ ||ƒV  qd S r�   r   )r‡   r    r–   ©r¡   r   r   Ú	<genexpr>T  s   ÿzDTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.<genexpr>r.   r   ©Únamer   )r   ra   r   r   rŒ   r”   ÚtupleÚzipÚsetr7   r8   ÚFutureWarningr"   r   rU   )r(   r›   rœ   ry   rz   r   r+   r4   ÚtypesÚindexerrX   r@   r   r¤   r   Útest_loc_getitem_nested_indexer6  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©ry   rO   ©rz   rO   r   r   r   r   ©ry   )r   Úfrom_tuplesr"   r7   Zassert_equal)r(   Zframe_or_seriesÚmiÚobjr@   r   r   r   Ú)test_multiindex_loc_one_dimensional_tuplec  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"   r7   r9   )r(   r­   r³   r´   r@   r   r   r   Ú-test_multiindex_one_dimensional_tuple_columnsk  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+   r@   r   r   r   Ú)test_multiindex_setitem_columns_enlargingt  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   ra   ÚpdÚ
date_ranger   r   Úconcatr$   r"   r7   r9   r   rT   r   )r(   ZmidxZser1Úser2r+   r@   rX   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   ra   r%   r"   r   Zs_r7   r9   )r(   r+   r?   r@   r   r   r   Útest_loc_no_second_level_index—  s    þ ÿz0TestMultiIndexLoc.test_loc_no_second_level_index)$Ú__name__Ú
__module__Ú__qualname__r,   rA   rN   rY   rg   rj   rt   ru   rv   rJ   Ú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, posrO   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 nPd }d}| td ƒddgfkr¢t}tj||d�� |j|  }W 5 Q R X t ||¡ d S )NrO   r    rZ   r   r	   r
   Úoner   r5   r[   ri   r‘   r   r   rG   z!MultiIndex with a nested sequencerÏ   )r   ra   r   r   rŒ   r;   r:   ÚsizerJ   rK   rL   r…   r"   rŸ   r«   r7   r8   rU   )r­   rw   ÚidxrW   r@   ÚwarnÚmsgrX   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   ra   r   r   r   r   r&   r;   rT   r"   r7   r9   )rÖ   Zmulti_indexr+   r@   rX   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§   rF   )rß   rÝ   )r   r   rÛ   rÜ   r   r²   r"   r#   ©r+   rX   r@   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 )NrD   )ry   rz   r{   r|   ry   rz   )r   r   )	r   r   rŒ   r   r   r6   r"   r7   rU   )r+   r@   rX   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   r7   r9   )r   r+   rX   r@   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$rG   r   )rJ   rK   rL   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'\)$rG   ))r	   Úthreer    r   )rJ   rK   rL   r"   r;   r#   )r)   r+   r@   rX   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�} |  ¡ }d}tjt|d�� t d¡| jd d …df< W 5 Q R X tjt|d�� t d¡|jd d …df< W 5 Q R X t | |¡ d S )NÚstringÚabcdZMain)ZanotherrÐ   r£   ry   Úlabelsr.   )rO   Ú1)rO   Ú2)r    rë   z.will attempt to set the values inplace insteadrG   r    r   )r   r%   r   ra   r   r"   r7   Úassert_numpy_array_equalr   ZasarrayrÌ   r&   r²   r$   r8   r«   rŒ   r:   r9   )r+   r@   rÔ   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 ThingsrZ   ÚRz
Bad ThingsÚT)úOkay ThingsÚNr    )rñ   rò   rÍ   rñ   r    rÍ   )rC   r.   Zd1Zd2Zd3Zd4Úu1Úu2Úu3r5   rF   )r   r.   Úobject)r]   r§   r‘   r£   )
r   rÌ   r   Zonesr   r   r²   r"   r7   r9   )Ztupsr+   rX   r@   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CVRr5   )	Ú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   ra   r   r"   r   Úisnanr#   )ry   rk   rÒ   r+   rX   Zaltr   r   r   Útest_loc_period_string_indexingA  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Idx2r5   r   r   r   r.   r   r   r!   ZC1ZC2©r=   r   r'   r   r¦   )r¿   Úto_datetimer   ra   r   r"   r   Zget_level_valuesr   r²   Ú	Timestampr7   rU   )Zdt_idxZm_idxr+   rX   r@   r   r   r   Útest_loc_datetime_mask_slicingb  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   r5   r{   )r   r§   )r¿   r  r   r   r²   r"   r7   rU   )ÚdaterW   rX   r   r   r   Ú&test_loc_datetime_series_tuple_slicingu  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  r5   ÚauthorZpricerÿ   r£   )r   r   r²   r"   r7   r9   )r+   rÒ   rX   r@   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_framer6   r   r   r#   Úget_locr"   r:   rr   r7   r9   rU   )ZdtirW   r+   Údf2rX   r@   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_csvr6   r;   r"   rŸ   rr   r7   r9   )ÚdatapathÚpathr+   r  r?   r@   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ú   rO   ÚZÚWrZ   rù   ÚFr.   r`   r   g        )
r¿   ZPeriodIndexr   r<   r   r&   r   rb   r"   r#   )ÚpiZlev2Zlev3r³   rW   rX   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 )NrE   r.   r   rO   r    rZ   rŠ   rë   rG   ©r   r   )	r   r   rŒ   r�   r6   rJ   rK   rL   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\)rG   )r   r   )r   r   ra   rJ   rK   rL   r"   )r(   rW   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æ   r5   r.   r   r   z'\('b', '1', slice\(None, None, None\)\)rG   z\('b', '1'\))rz   rë   )r   r<   r   rh   r   r   ZrandrJ   rK   rL   r"   rŸ   r   Zget_locs)r(   r³   r+   rÔ   r   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 )NrO   )rR   r   )r"   r7   rU   )rV   r+   rW   rX   r@   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.   )r2   Úind1Úind2r   r!  r2   )ry   r   r5   r   ©r§   )
r   r   rÌ   r6   r"   r   r²   r7   r9   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\)rG   )ç       @r$  ç      @)r   r6   rJ   rK   rL   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
  r7   rí   Znonzero)r   r³   r"   r@   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!   rC   r   r[   rD   é   rE   )r   ra   r   r   rh   r"   r7   r9   )r³   r+   r­   r@   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!   rC   ry   rz   r£   )r   r"   rŸ   r7   r9   rà   r   r   r   Ú5test_loc_getitem_index_differently_ordered_slice_none-  s    ýýr.  r­   r   r!   r   rC   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   rC   r  r¹   )r   r!   r  )r   r   )r   r   )r   rC   )r   r!   ry   r£   r   r!   r   r   )rÙ   )	r   r   r²   r"   rŸ   r7   r9   r   Úisin)r­   r+   rX   r@   r   r   r   Ú@test_loc_getitem_index_differently_ordered_slice_none_duplicates=  s     ÿû&ýr0  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 )Nrc   rd   Úzry   rz   r{   r5   r|   r   r   r   r"  )
r   r<   r   rr   r"   r7   r9   r   r   rU   )r³   r+   r@   rX   rW   r   r   r   Ú3test_loc_getitem_drops_levels_for_one_row_dataframeS  s     r2  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 )NrO   r    rZ   r   r   )r   r   rŠ   )r   r.   )r    r   )r    r   )rO   r   )rO   r   )	r   ra   r   r   Zzerosr"   r²   r7   r9   )Úcolsr+   rX   r@   r   r   r   Ú$test_mi_columns_loc_list_label_ordera  s    þr4  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 )NrE   )r.   r   ry   rz   r   r   ZOhioZColoradoZGreenÚRedr£   Úkey1Úkey2ÚstateÚcolorz\[2\] not in indexrG   )r   r   rŒ   r�   r   r   r'   rJ   rK   rL   r"   )r*   r   r   r   Ú$test_mi_partial_indexing_list_raisesm  s    ýr:  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 indexrG   ÚnotÚfound)r   r&   r   ra   rJ   rK   rL   r"   )r�   r   r   r   Ú(test_mi_indexing_list_nonexistent_raisesz  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!   rC   ry   rO   r    r£   r‹   r{   )r{   ©r   rO   )r|   r>  r¸   r$  g      @g      @r%  r/   g      @g       @g      ð¿r|   )r   r   ra   r"   r   rÌ   r7   r9   )rX   r@   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|   r5   r   )rº   rz   rº   rz   r   )	r   r   r<   r"   r#   Ú
isinstancer   ri   r:   )r+   rX   r   r   r   Ú$test_loc_get_scalar_casting_to_float˜  s     ÿ
rA  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   rO   r    r   r   r5   r`   r"  r   )
r   ra   r   r   rb   r"   rÌ   r   r7   rU   )rÒ   Ús2rX   r@   r   r   r   Ú)test_loc_empty_single_selector_with_names¥  s
    
 rC  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,  rD   r˜   é   r)  é!   r   )rO   r    rZ   rO   r    z^1$rG   )r(  r   )r   r&   r6   rJ   rK   rL   r"   r&  r   r   r   Ú'test_loc_keyerror_rightmost_key_missing®  s    ýÿrG  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³   rW   rX   r   r   r   Ú*test_multindex_series_loc_with_tuple_label½  s    
rH  )8Únumpyr   rJ   Zpandas.errorsr   r   Zpandasr¿   r   r   r   r   Zpandas._testingZ_testingr7   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.  r0  r2  r4  r:  r=  r?  rA  rC  rG  rH  r   r   r   r   Ú<module>   sv   

   

 ùþ

!$	,
	