U
    b                     @   s  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d d!d"gd d#d$ggd d%d&gd d'd&gd(d)gfd&d!d*gd&d#d+ggd d%d&gd,d-d.gd/d0gfd&d'd(gd d1d2ggd d%d&gd)d)d3gd4d5gfd&d6d1gd d!d"gd'd#d$ggd d%d&gd1d(d)gd2d7d8gfgd9d: Zd;d< ZdS )=    N)	DataFrame
MultiIndexSeriesc                  C   s<   t jdd} t| dddgdddggdddgdddg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.
                   
      columnsindex)nprandomrandnr   )data r   N/tmp/pip-unpacked-wheel-xg7vt6ln/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 dddgdddggddS )	Nr   r   r   r   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 dddgdddggddS )Nr   r   r   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 dddgdddggddS )Nr   r   r	   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    r,   c                 C   s,   | }|j }|jd }|d }||ks(td S )Nr   r   )r"   r   AssertionError)r   r   r    r&   r%   r   r   r   test_iloc_returns_scalar:   s
    
r/   c                  C   sh   t ddddgddddgg } t| }ttjdd|d}|jddg }|jdd	d
}t	
|| d S )Nabxyr   r   r   r   Fr)   )zipr   from_tuplesr   r   r   r   r   r*   r#   r+   )tupr   r   r&   r%   r   r   r    test_iloc_getitem_multiple_itemsB   s    
r8   c                  C   sb   t jdd} t| dddgdddggddddgddd	d	ggd
}|jd }| d }||ks^td S )Nr   r   ijABkXYr   r-   )r   r   r   r   r   r.   )r    r   r&   r%   r   r   r   test_iloc_getitem_labelsL   s    
r@   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    rC   c                 C   sJ   | }d|j d d< |jd d dk s,t|jdd  dk sFtd S )Nr   r   )r   r"   allr.   )rB   r   r   r   r   test_frame_setitem_slice`   s    rE   c                  C   sp   t dddg} t ddddg}ttdd	|| d
}|jd d df }|jd d df }t	|| d S )N)OhioGreen)rF   ZRed)ZColoradorG   )r0   r(   )r0   r   )r1   r(   )r1   r   r   )r   r   )r   r   r(   )
r   r6   r   r   ZarangeZreshaper   locr#   r$   )r   r   r   r&   r%   r   r   r    test_indexing_ambiguity_bug_1678h   s    rI   c                     st   ddgddgddgddgd	d
gg} t dddddg}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;   )rJ   r<   )BBr0   )rK   r1   r4   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>   s     z:test_iloc_integer_locations.<locals>.<listcomp>.<listcomp>r   )range)rL   r   )rN   r   rO      s     z/test_iloc_integer_locations.<locals>.<listcomp>   )r   r6   r   rP   r#   r+   )r   r   r%   r&   r   r   r   test_iloc_integer_locationsv   s    rR   z!data, indexes, values, expected_kr      rQ   !   r   r(   r      r
   i+  i     i,  d   i  i*  r   r	   i     i           c           	      C   sn   t | dddgd}|ddg}|j }t||D ]\}}|j|  |7  < q4||d< |j}t|| d S )Nr9   r:   r=   )r   r   )r   Z	set_indexr=   copyr5   r   r#   r$   )	r   Zindexesr"   Z
expected_kr   Zseriesr9   vr%   r   r   r   'test_iloc_setitem_int_multiindex_series   s    
r_   c                 C   s.   | }|j d }||jd }t|| d S r!   )r   r*   r   r#   r$   rA   r   r   r   test_getitem_iloc   s    
r`   )Znumpyr   ZpytestZpandasr   r   r   Zpandas._testingZ_testingr#   Zfixturer   markZparametrizer'   r,   r/   r8   r@   rC   rE   rI   rR   r_   r`   r   r   r   r   <module>   sJ   


***4
