a
    Gb                     @   sn  d dl Zd dlZd dlmZmZmZ d dlmZ	 ej
dd Zejddd dd fd	d d
d fdd dd 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ejdg d g d!gg d"g d#d$d%gfg d&g d'gg d"g d(d)d*gfg d+g d,gg d"g d-d.d/gfg d0g d g d1gg d"g d2g d3fgd4d5 Zd6d7 ZdS )8    N)	DataFrame
MultiIndexSeriesc                  C   s4   t jdd} t| g dg dgg dg dgdS )z
    Factory function to create simple 3 x 3 dataframe with
    both columns and row MultiIndex using supplied data or
    random data by default.
          r            
   r   r   r   r   r      columnsindex)nprandomrandnr   )data r   Ilib/python3.9/site-packages/pandas/tests/indexing/multiindex/test_iloc.pysimple_multiindex_dataframe   s    r   zindexer, expectedc                 C   s
   | j d S )Nr   ilocdfr   r   r   <lambda>       r   c                 C   s   t | d g dg dgddS )Nr   r   r	   )r   r   r   namer   arrr   r   r   r      r   c                 C   s
   | j d S Nr   r   r   r   r   r   r   "   r   c                 C   s   t | d g dg dgddS )Nr   r   r	   )r   r   r    r"   r#   r   r   r   r   #   r   c                 C   s   | j d d df S r%   r   r   r   r   r   r   &   r   c                 C   s&   t | d d df g dg dgddS )Nr   r   r   )r   r   r    r"   r#   r   r   r   r   '   r   c                 C   s*   |}|j }| |}||}t|| d S )N)valuestmassert_series_equal)Zindexerexpectedr   r   r$   resultr   r   r   test_iloc_returns_series   s
    r+   c                 C   s0   | }|j ddg }|jddd}t|| d S )Nr      r   FZ
drop_level)r   xsr'   assert_frame_equal)r   r   r*   r)   r   r   r   test_iloc_returns_dataframe3   s    r0   c                 C   s,   | }|j }|jd }|d }||ks(J d S )Nr   r   )r&   r   )r   r   r$   r*   r)   r   r   r   test_iloc_returns_scalar:   s
    
r2   c                  C   s`   t g dg dg } t| }ttjdd|d}|jddg }|jddd	}t	
|| d S )
N)ar3   br4   )xyr5   r6   r   r   r   r   r4   Fr-   )zipr   from_tuplesr   r   r   r   r   r.   r'   r/   )tupr   r   r*   r)   r   r   r    test_iloc_getitem_multiple_itemsB   s    
r;   c                  C   sV   t jdd} t| g dg dgg dg dgd}|jd }| d }||ksRJ d S )	Nr   r   )ir<   j)Ar>   B)r<   r<   r=   k)XrA   YrB   r   r1   )r   r   r   r   r   )r$   r   r*   r)   r   r   r   test_iloc_getitem_labelsL   s    
rC   c                 C   s.   | }|j d d }|d d }t|| d S )Nr   )r   r'   r/    multiindex_dataframe_random_datar   r*   r)   r   r   r   test_frame_getitem_sliceY   s    rF   c                 C   sJ   | }d|j d d< |jd d dk s,J |jdd  dk sFJ d S )Nr   r   )r   r&   all)rE   r   r   r   r   test_frame_setitem_slice`   s    rH   c                  C   sj   t g d} t g d}ttdd|| d}|jd d df }|jd d df }t	|| d S )N))OhioGreenrI   ZRed)ZColoradorJ   ))r3   r,   )r3   r   )r4   r,   )r4   r   r   )r   r   )r   r   r,   rK   )
r   r9   r   r   ZarangeZreshaper   Zlocr'   r(   )r   r   r   r*   r)   r   r   r    test_indexing_ambiguity_bug_1678h   s    rL   c                     sn   ddgddgddgddgd	d
gg} t g d}t| }t| |d t fddtdD }t|| d S )NZstr00Zstr01Zstr10Zstr11Zstr20Zsrt21Zstr30Zstr31Zstr40Zstr41))CCr>   rM   r?   rN   )BBr3   )rO   r4   r7   c                    s$   g | ]  fd dt dD qS )c                    s   g | ]} j |f qS r   r   ).0c)r   rr   r   
<listcomp>   r   z:test_iloc_integer_locations.<locals>.<listcomp>.<listcomp>r   )range)rP   r   )rR   r   rS      r   z/test_iloc_integer_locations.<locals>.<listcomp>   )r   r9   r   rT   r'   r/   )r   r   r)   r*   r   r   r   test_iloc_integer_locationsv   s    rV   z!data, indexes, values, expected_k)r      rU   )r   !   r
   )r   r,   )r   r   r,      r   )r,   rW   i+  )r,   rX   i  )   i,  d   i  i*  )r,   r   rZ   )r   r   r   )r   r   i     i  )r,      r   )r   rX   r
   )r   rZ   r   )r         c           	      C   sl   t | g dd}|ddg}|j }t||D ]\}}|j|  |7  < q2||d< |j}t|| d S )N)r<   r=   r@   )r   r   r<   r=   r@   )r   Z	set_indexr@   copyr8   r   r'   r(   )	r   Zindexesr&   Z
expected_kr   Zseriesr<   vr)   r   r   r   'test_iloc_setitem_int_multiindex_series   s    
rc   c                 C   s.   | }|j d }||jd }t|| d S r%   )r   r.   r   r'   r(   rD   r   r   r   test_getitem_iloc   s    
rd   )Znumpyr   ZpytestZpandasr   r   r   Zpandas._testingZ_testingr'   Zfixturer   ZmarkZparametrizer+   r0   r2   r;   rC   rF   rH   rL   rV   rc   rd   r   r   r   r   <module>   sJ   


"""(
