U
    sVcx{                     @   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   M/tmp/pip-unpacked-wheel-xj8nt62q/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st	|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A1   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rt	
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abZ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rtj	t
t| d |j|   W 5 Q R X nPd }d}| td ddgfkrt}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stringZ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   DeprecationWarningr   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.   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   Z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st|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st|dd}| dd}||kst||d}| | d}t	
| d | d S )Nz
2001-01-01d   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     &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 )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     r1  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   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GreenZ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    r9  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st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     
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   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
    
 rB  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    rF  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    
rG  )8Z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-  r/  r1  r4  r9  r<  r>  r@  rB  rF  rG  r   r   r   r   <module>   sv   

   

 

!$	,
	