a
    GGby                     @   sD  d dl Zd dlZd dlmZ d dlZd dlmZmZm	Z	m
Z
 d dl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%d0d1 Z&d2d3 Z'G d4d5 d5Z(d6d7 Z)d8d9 Z*d:d; Z+d<d= Z,d>d? Z-d@dA Z.ejdBg dCg dDgdEdF Z/dGdH Z0dIdJ Z1dKdL Z2dMdN Z3dOdP Z4dQdR Z5dSdT Z6dUdV Z7dWdX Z8dS )Y    N)PerformanceWarning)	DataFrameIndex
MultiIndexSeries)IndexingErrorc                   C   s   t g dgg dgdgdS )zsingle level MultiIndex)foobarbazZqux)r            first)levelscodesnames)r    r   r   Hlib/python3.9/site-packages/pandas/tests/indexing/multiindex/test_loc.pysingle_level_multiindex   s    r   c                  C   sB   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   index)r   r   nprandomrandn)r   r   r   r   r   r   %frame_random_data_integer_multi_index   s    r   c                   @   sH  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"d1S )8TestMultiIndexLocc                 C   sV   |}d|j d< |j d dks J | }ttd|_d|j d< |j d dksRJ d S )N   )r	   twoBr      )r   r   )loccopylistrangecolumns)self multiindex_dataframe_random_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 d    n1 s0    Y  |jdd}|d u sJ |j| }t	j
dgd d	gd gddgd}t dg di|d}t|| d S )Ni  iX     M    )r   r   r   r      g      @      @  i  )amountcolyearr4   r5   )keys)r1   r2   r   T)Zinplacer   r   r3   )r-   r.   r/   r   )r   	set_indextmassert_produces_warningr   assert_frame_equalr#   iloc
sort_indexr   from_arrays)r(   datar+   keyZreturn_valueresr   expectedr   r   r   test_loc_getitem_general-   s    :
"z*TestMultiIndexLoc.test_loc_getitem_generalc                 C   sl   t tjddg dg dgg dg dgd}tjtdd |jd	  W d    n1 s^0    Y  d S 
Nr   r   r   r0   r      
   r0   r0   rG   rG   rH      r'   r   z^2$matchr   r   r   r   r   pytestraisesKeyErrorr#   r(   r+   r   r   r   0test_loc_getitem_multiindex_missing_label_raisesF   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   rH   )rX   r      )reindexr   r#   r9   assert_series_equal)r(   /multiindex_year_month_day_dataframe_random_dataserrB   resultr   r   r   /test_loc_getitem_list_of_tuples_with_multiindexQ   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   rU   r!   C	   r   r?   dtyper   r   r   r   r   r   r"   rG   r?   r   re   r   r   )r?   re   r   r   re   r   re   )
r   from_productr   r&   r   float64r#   r9   r[   r   )r(   r   xyrB   r^   Zy1emptyr   r   r   test_loc_getitem_seriesY   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 )Nr`   ra   rc   rd   r   r   rf   rg   rh   rk   ri   r   )r   rj   r   r&   r   rk   arrayr#   r9   r[   r   int64)r(   r   rl   rm   rB   r^   rn   Zscalarr   r   r   test_loc_getitem_arrayx   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   )irs   j)rU   rU   r!   )Xru   YrL   r   r   rs   r   axisrt   )rs   ru   	r   r   r   r   r<   	droplevelr#   r9   r;   r(   r+   rB   r^   r   r   r   test_loc_multiindex_labels   s"    
"
z,TestMultiIndexLoc.test_loc_multiindex_labelsc                 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|| d S )
Nr   rE   rF   rI   rJ   rL   r   r   r0   ry   r{   r   r   r   test_loc_multiindex_ints   s    
z*TestMultiIndexLoc.test_loc_multiindex_intsc                 C   sl   t tjddg dg dgg dg dgd}tjtdd |jd	  W d    n1 s^0    Y  d S rD   rO   rS   r   r   r   (test_loc_multiindex_missing_label_raises   s    z:TestMultiIndexLoc.test_loc_multiindex_missing_label_raiseszkey, posr   r0   r   r   r   c                 C   sl   t tjddg dg dgg dg dgd}tjtdd |j|  W d    n1 s^0    Y  d S )	Nr   rE   rF   rI   rJ   rL   znot in indexrM   rO   )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 d    n1 sV0    Y  tjtdd
 |jd  W d    n1 s0    Y  tjtdd
 |jd  W d    n1 s0    Y  d S )NrG   abcdefr   z^\('a', 'b'\)$rM   r   r   z^\('a', 'd', 'g'\)$)r   r   gzToo many indexers)r   r   r   rt   )	r   r&   r   rj   rP   rQ   rR   r#   r   )r(   sr   r   r   (test_loc_multiindex_too_many_dims_raises   s    ((z:TestMultiIndexLoc.test_loc_multiindex_too_many_dims_raisesc                 C   s   dd t dD }dd t dD }t||g}dtjdd d }t||d	}|| }t|| tt	d

ddtg dg dgd}|jddgfd d f }|jddg }t|| d S )Nc                 S   s   g | ]}d t | qS )Z	Attributestr.0rs   r   r   r   
<listcomp>       zFTestMultiIndexLoc.test_loc_multiindex_indexer_none.<locals>.<listcomp>r   c                 S   s   g | ]}d t | qS )ZValuer   r   r   r   r   r      r   r   g?rH   g      ?r'   rK   r   r   r   r0   r`   r   r   )r&   r   rj   r   r   r   r   r9   r;   arangereshaper#   )r(   Z
attributesZattribute_valuesr   r+   r^   rB   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   rq   re   r   r   r   r   r   r   r   r0   )r   r"   rG   rK   rY      r   )
r   r   r   r   rj   r&   r#   r9   r[   r<   )r(   r   rB   r^   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 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"   rG   r   r   r   rG   rH         r   r   r   rH   r   )r   rj   r   r   r   r   r#   r9   r;   r<   r   )r(   r   r+   r^   rB   r   r   r   test_loc_getitem_int_slice  s"    
z,TestMultiIndexLoc.test_loc_getitem_int_sliceindexer_type_1indexer_type_2c                    s   dd  g d}g d}t ||g}ttjt|dd|dgd}d	d
gddgf}||f}t fddt||D }	|tu s|tu rt	
t |j|	df }
W d    q1 s0    Y  n|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   ndarrayrp   slice)indexer_typer6   r   r   r   convert_nested_indexer?  s
    

zQTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.convert_nested_indexerr   r`   rq   r   ZDatar   r'   rH   r   r   r   c                 3   s   | ]\}} ||V  qd S r   r   )r   r   r   r   r   r   	<genexpr>R  s   zDTestMultiIndexLoc.test_loc_getitem_nested_indexer.<locals>.<genexpr>)r   r   r0   r   namer   )r   rj   r   r   r   r   tuplezipsetr9   r:   FutureWarningr#   r   r[   )r(   r   r   r   r   r   r+   r6   typesindexerr^   rB   r   r   r   test_loc_getitem_nested_indexer4  s(    .z1TestMultiIndexLoc.test_loc_getitem_nested_indexerc                 C   sH   t ddg}|ddg|d}d|jd< |ddg|d}t|| d S )Nr   rU   r   rU   r   r   r   r   r   )r   from_tuplesr#   r9   Zassert_equal)r(   Zframe_or_seriesmiobjrB   r   r   r   )test_multiindex_loc_one_dimensional_tuplea  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#   r9   r;   )r(   r   r   r   rB   r   r   r   -test_multiindex_one_dimensional_tuple_columnsi  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   r0   r   r   r   r0   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   )r(   r   Z	exp_valuer   r+   rB   r   r   r   )test_multiindex_setitem_columns_enlargingr  s    z;TestMultiIndexLoc.test_multiindex_setitem_columns_enlargingc                 C   s   t tjdddtddgg}td|d}td|d d d}tj||gdd}| }|jd	d
 }t	
|| t||d}|jd	d
 }t	
|| tj|||jgdd}|jd	d
 }t	
|| d S )NZ20110101r   periodsr   r   r   r   rw   z
2011-01-01z
2011-01-02r   r   )r   rj   pd
date_ranger   r   concatr$   r#   r9   r;   r   rZ   r   )r(   ZmidxZser1ser2r+   rB   r^   r   r   r   "test_sorted_multiindex_after_union  s    z4TestMultiIndexLoc.test_sorted_multiindex_after_union)#__name__
__module____qualname__r,   rC   rT   r_   ro   rr   r|   r}   r~   rP   markparametrizer   r   r   r   r   r   r%   r   r   r   r   r   r   r   r   r   r   nanr   r   r   r   r   r   r   !   s>   

,
'

r   zindexer, posrU   r   DEr   r   bahc                 C   s   t jg dg dgddgd}ttjddd|d	 }|j| }|jd
kr| g krtj	t
t| d |j|   W d    q1 s0    Y  ndd }d}| td ddgfkrt}tj||d |j|  }W d    n1 s0    Y  t|| d S )Nra   r   r	   r
   oner    r7   rc   rq   r   r   r   rM   z!MultiIndex with a nested sequencer   r   )r   rj   r   r   r   r=   r<   sizerP   rQ   rR   r   r#   r   r   r9   r:   r[   )r   r   idxr]   rB   warnmsgr^   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   ZalphaZbetar   r   r   r   r   )levelrx   )r   rj   r   r   r   r   r&   r=   rZ   r#   r9   r;   )r   Zmulti_indexr+   rB   r^   r   r   r   4test_loc_getitem_duplicates_multiindex_empty_indexer  s    r   c                  C   sL   t tjtjgddggtddgddgd} | jd }tj}||ksHJ d S )	Nmeanmedianfunctsr   )r   r   functionr   rL   )r   r   )r   r   r   r   r   r   r#   r+   r^   rB   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 )NrH   r   r   r   )r   r   )	r   r   r   r   r   r8   r#   r9   r[   )r+   rB   r^   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   rz   r9   r;   )r   r+   r^   rB   r   r   r   test_loc_getitem_int  s
    
r   c                 C   s@   | }t jtdd |jd  W d    n1 s20    Y  d S )Nz^3$rM   r   )rP   rQ   rR   r#   )r   r+   r   r   r   %test_loc_getitem_int_raises_exception  s    r   c                 C   sh   | }t jtdd |jd  W d    n1 s20    Y  d|jd< d}| jd }||ksdJ d S )Nz^\('bar', 'three'\)$rM   ))r	   threer!   r   )rP   rQ   rR   r#   r=   )r)   r+   rB   r^   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stringZabcdZMain)Zanotherr   r   r   labelsr0   ))rU   1)rU   2)r!   r   r!   r   )r   r%   r   rj   r   r#   r9   assert_numpy_array_equalr   Zasarrayr   r&   r   r$   r   r<   r;   )r+   rB   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dddtg dddd}t	|| d S )NzGood Thingsrb   Rz
Bad ThingsT)Okay ThingsNr!   )r   r   r   r   r!   r   )rG   r0   )Zd1Zd2Zd3Zd4)Zu1Zu2u3r7   rL   )r   r0   objectr   )re   r   r   r   )
r   r   r   Zonesr   r   r   r#   r9   r;   )Ztupsr+   r^   rB   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`J t|snJ d S )N2013Q1Z2013Q4Q)freq)W  i  i  )ZPeriodZCVRr7   )	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   rj   r   r#   r   Zisnan)r   rs   r   r+   r^   Zaltr   r   r   test_loc_period_string_indexing0  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Idx2r7   r   r   r   r0   r   r   r"   ZC1ZC2r?   r   r'   r   r   )r   Zto_datetimer   rj   r   r#   r   Zget_level_valuesr   r   	Timestampr9   r[   )Zdt_idxZm_idxr+   r^   rB   r   r   r   test_loc_datetime_mask_slicingQ  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 )NZ2000r   r   r   r7   r   )r   r   )r   r  r   r   r   r#   r9   r[   )dater]   r^   r   r   r   &test_loc_datetime_series_tuple_slicingd  s    
r  c                  C   s   t ddgddgddgddggtjg ddd	gd
ddgd} tjddgdd	gd
}| j|d d f }t ddgddgddggtjg ddd	gd
ddgd}t|| d S )Nr   r   r   r   r   r   )r   )r   r   r   r   r  r   r  r7   ZauthorZpricer   r   r  )r   r  r  r   )r   r   r   r#   r9   r;   )r+   r   r^   rB   r   r   r   test_loc_with_mi_indexerp  s    r  c                  C   s   t jdddd} ttd| d}| }| |d< |jddd	}|jjd
ksNJ |j| d  |j	| d  }|j
dg d }t|| |d }|jjd
ksJ |j	| d  }|j
dg d }t|| d S )Nz
2016-01-01r   z
US/Pacific)r   Ztzr   r   r   T)append)Nr   )r   r   r   r&   Zto_framer8   r   r   get_locr#   r<   rz   r9   r;   r[   )Zdtir]   r+   df2r^   rB   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_csvr8   r=   r#   r   rz   r9   r;   )datapathpathr+   r	  rA   rB   r   r   r   test_getitem_str_slice  s     r  c                  C   sl   t jg dddd} g d}g d}t| ||g}ttd|tjd}|j| d	 d
df }|dkshJ d S )N)z20181101 1100z20181101 1200z20181102 1300z20181102 1400Zdatetimer!   )r   r   )rU   rU   ZW)r!   rb   r   Fr0   ri   r   rU   g        )	r   ZPeriodIndexr   r>   r   r&   r   rk   r#   )ZpiZlev2Zlev3r   r]   r^   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   sh   t tdddg dd}|ddg}tjtdd	 |jd
  W d    n1 sZ0    Y  d S )NrK   r0   r   ra   r   rU   r!   r   rM   r   r   )	r   r   r   r   r8   rP   rQ   rR   r#   )r(   r+   r	  r   r   r   !test_missing_keys_raises_keyerror  s    z=TestKeyErrorsWithMultiIndex.test_missing_keys_raises_keyerrorc                 C   sX   t dtddggd d}tjtdd |jd  W d    n1 sJ0    Y  d S )	Nr   r   r   r   r   z\(0, 3\)rM   )r   r   )r   r   rj   rP   rQ   rR   r#   )r(   r]   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 s0    Y  tjt	|d
& |jddtd f W d    n1 s0    Y  tjt	dd
" |j
dd d f  W d    n1 s0    Y  d S )Nr   r   r   r   )r   r   r   3)r   r   r   r   )r   r    r   r7   r0   r   r   z'\('b', '1', slice\(None, None, None\)\)rM   r   r   z\('b', '1'\))r   r   )r   r>   r   rp   r   r   ZrandrP   rQ   rR   r#   r   r   Zget_locs)r(   r   r+   r   r   r   r   test_missing_key_combination  s    :4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 )NrU   )rX   r   )r#   r9   r[   )r\   r+   r]   r^   rB   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   r0   r   )r4   ind1ind2r  r  r4   r   )r   r   r7   r   r   )
r   r   r   r8   r#   r   r   r9   r;   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    n1 sN0    Y  d S )Nr   r   r   r   z\(2\.0, 2\.0, 3\.0\)rM   )       @r         @)r   r8   rP   rQ   rR   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s4J | dtddd ksNJ |d d d d}| d d d d}||ksJ |dd}| dd}||ksJ ||d}| | d}t	|
 d | d S )Nz
2001-01-01d   r   z2001-01r      r   )r   r   r   r>   r  r   repeatr  r9   r   Znonzero)r   r   r#   rB   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 )Nr   r   r   r   r   r   r0   r   r   r"   rG   r   rc   rH      rK   )r   rj   r   r   rp   r#   r9   r;   )r   r+   r   rB   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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   r0   r   r   r"   rG   r  r   r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r#   r   r9   r;   r   r   r   r   5test_loc_getitem_index_differently_ordered_slice_none  s    r+  r   )r   r   r"   r   r   r   rG   r"   )r   r   r"   r   r   rG   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   rG   )r  r   )r   r"   r  )r   r   )r   r   )r   rG   )r   r"   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r"   r"   r   r   rG   )r   )	r   r   r   r#   r   r9   r;   r   Zisin)r   r+   r^   rB   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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 )Nrl   rm   zr   r7   r   r   r   r   r   r  )
r   r>   r   rz   r#   r9   r;   r   r   r[   )r   r+   rB   r^   r]   r   r   r   3test_loc_getitem_drops_levels_for_one_row_dataframeB  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 )
Nra   r   r   )r   r   r   r!   rU   )r   r0   ))r!   r   )r!   r   )rU   r   )rU   r   )	r   rj   r   r   Zzerosr#   r   r9   r;   )Zcolsr+   r^   rB   r   r   r   $test_mi_columns_loc_list_label_orderP  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    n1 s0    Y  d S )NrK   )r0   r   r  r*  )Ohior0  Colorado)GreenZRedr2  r   Zkey1Zkey2stateZcolorz\[2\] not in indexrM   r   r   r1  )r   r   r   r   r   r   r'   rP   rQ   rR   r#   )r*   r   r   r   $test_mi_partial_indexing_list_raises\  s    r4  c                  C   sb   t tdtddgddggd} tjtdd | jd	d
g  W d    n1 sT0    Y  d S )Nr0   r   r   r   r   r   z\['not' 'found'\] not in indexrM   notfound)r   r&   r   rj   rP   rQ   rR   r#   )r   r   r   r   (test_mi_indexing_list_nonexistent_raisesi  s    "r7  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   r0   r"   rG   r   r   r   rU   r!   r   r   r   r   )r   r   rU   )r   r8  )r   r   g      @g      @)r!  r1   g      @g       @)r!  g      r   r   r!  )r   r   r   r   )r   r   rj   r#   r   r   r9   r;   )r^   rB   r   r   r   'test_mi_add_cell_missing_row_non_uniquep  s$    



r9  c                  C   s   t dddtjdgdggddgdd	} | jd
 }|dks>J t|tjsNJ | jdgdf jd }|dkspJ t|tjsJ d S )Nr   r   r   r   r0   r   r   r7   r   )r   r   r   r   r   )r   r   r>   r#   
isinstancer   rq   r<   )r+   r^   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   rU   r!   r   r   r7   ri   r  r   )
r   rj   r   r   rk   r#   r   r   r9   r[   )r   s2r^   rB   r   r   r   )test_loc_empty_single_selector_with_names  s
    
 r=  c                  C   sf   t g dg dtdd} | ddg} tjtdd | jd	  W d    n1 sX0    Y  d S )
N)r$  r$     r>  ,  r?  )rH   rH   r      r%  !   r   ra   rU   r!   z^1$rM   )r$  r   )r   r&   r8   rP   rQ   rR   r#   r"  r   r   r   'test_loc_keyerror_rightmost_key_missing  s    rB  c                  C   s8   t ddg} tddg| d}|jd }|dks4J d S )Nr   )r   )r0   r   r   r   r   )r   r   r   r#   )r   r]   r^   r   r   r   *test_multindex_series_loc_with_tuple_label  s    
rC  )9Znumpyr   rP   Zpandas.errorsr   Zpandasr   r   r   r   r   Zpandas._testingZ_testingr9   Zpandas.core.indexingr   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.  r/  r4  r7  r9  r;  r=  rB  rC  r   r   r   r   <module>   sv   

  w

 

!$	
	