U
    sVc$                     @   s  d dl Z d dlZd dlZd dlZd dlmZ ej	
dd d ddggddggdg gdddd	ggd
ddggdg ggdd Zdd Zej	j
dd dgd dddggd ddgd ddddd	gged ddd dddggd dhd dddgggddddgddd Zdd Zdd Zdd Zej	
dd d ddggd ddgd ddddd	ggedded
dfd dddddd	gggdd Zd d! Ze d"d# Zd$d% Zd&d' Zej	
d(ddd)d*dd+d,d-gej	
d.d/d0gej	
d1d2d3gd4d5 Zej	
d6dd dd7dd8gej	
d9dd dd7dd8gej	
d:dddgd;d< Zd=d> Zej	
d:dddddgd?d@ Ze dAdB ZdCdD ZdEdF Zej	
dGe ej!ej"ej#gdHdI Z$dJdK Z%dS )L    Nzarg, expected_rows                     ic                 C   s$   |j | }| j| }t|| d S N_positional_selectoriloctmassert_frame_equalslice_test_dfslice_test_groupedargexpected_rowsresultexpected r   F/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/groupby/test_indexing.pytest_int   s    

r   c                 C   s2   |j ddd }| jddddg }t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   
test_slice   s    r   listnegativerangeset)idsc                 C   s$   |j | }| j| }t|| d S r   r   r   r   r   r   	test_list'   s    

r"   c                 C   s0   |j d }| jddddddg }t|| d S )N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   	test_ints>   s    
r#   c                 C   s>   |j d ddd f }| jdddddddg }t|| d S )	Nr   r	   r   r   r   r   r
   r   r   r   r   r   r   test_slicesF   s    r$   c                 C   s<   |j dddd f }| jdddddddg }t|| d S )	Nr   r   r	   r   r   r   r
   r   r   r   r   r   r   test_mixN   s    r%   c                 C   s.   | j dddj| }| j| }t|| d S )NGroupF)sort)groupbyr   r   r   r   )r   r   r   r   r   r   r   r   test_as_indexV   s    

r)   c                  C   s   t jddgddgddgddgddggdd	gd
} | jddd}|jdd }t jddgddggdd	gddgd}t|| |jd }t jddgddgddggdd	gdddgd}t|| d S )Nar   r   r   br   r   ABcolumnsFZas_indexr/   index)r   r   )pd	DataFramer(   r   r   r   )dfgroupedr   r   r   r   r   test_doc_examplesf   s      $
  r7   c                  C   sz   d} d}t jd| dd}dd t|D }i }|D ]B}|tdd	 }d
d |d | D }|jdd d |||< q2|S )Nd      Z20130101D)Zperiodsfreqc                 S   s   g | ]}d | qS )zitem r   .0ir   r   r   
<listcomp>   s     z#multiindex_data.<locals>.<listcomp>r      c                 S   s.   g | ]&}|t d dd t d dd fqS )r   i'  r8   )randomrandint)r=   itemr   r   r   r?      s   c                 S   s   | d S )Nr   r   xr   r   r   <lambda>       z!multiindex_data.<locals>.<lambda>)key)r3   Z
date_ranger   rA   rB   r'   )ZndatesZnitemsdatesitemsdatadateZnitems_for_datelevelsr   r   r   multiindex_data{   s    

rN   c                 C   sV   i }| D ]0}| | D ]"}|d |d d|||d f< qqt jj|dd}d|j_|S )Nr   r   )r,   r-   r   r2   )Zorient)DateZItem)r3   r4   	from_dictr2   names)rK   ZrowsrL   levelr5   r   r   r   _make_df_from_data   s    "rS   c                    sL   t  }|jdddtdd} fdd D }t |}t|| d S )NrO   Fr0   r   c                    s   i | ]}| | d d qS )r   rT   r   )r=   rL   rN   r   r   
<dictcomp>   s      z#test_multiindex.<locals>.<dictcomp>)rS   r(   Znthslicer   r   )rN   r5   r   Zslicedr   r   rU   r   test_multiindex   s
    rX   r      i  iimethodheadtail	simulatedTFc                    sl  d d} fddt |D  fddt |D d}t|}|jddd	}| d
krZ| n||  }|dkr|jd |  }|rg }	t |D ]8}
t  D ]*}|
  |  | k r|	|
  |  qq|j|	 }n
|| }n|j|  d  }|rRg }	t |D ]H}
t  D ]:}||
 |   | d
kr|	||
 |   |  qq|j|	 }n
|| }t	
|| d S )Nr8   rY   c                    s$   g | ]}t  D ]}d | qqS )group r   r=   jgZn_groupsr   r   r?      s    
  z.test_against_head_and_tail.<locals>.<listcomp>c                    s*   g | ]"}t  D ]}d | d| qqS )r_   z row r`   ra   rd   r   r   r?      s   
 groupvaluerf   Fr0   r   r\   )r   r3   r4   r(   r   appendr   r\   r]   r   r   )r   r[   r^   Zn_rows_per_grouprK   r5   r6   sizer   indicesrb   r>   r   r   rd   r   test_against_head_and_tail   s@    



 
rk   start
   istopstepc           	      C   sd   d}dg| t t|d}t|}|jddd}|j| || }|j| || }t|| d S )NrY   zgroup 0re   rf   Fr0   )	r   r   r3   r4   r(   r   r   r   r   )	rl   rn   ro   Zn_rowsrK   r5   r6   r   r   r   r   r   test_against_df_iloc   s    

rp   c                  C   sb   t jdddddgdddddgd} | jd	d
}|jdd }t jddgddgd}t|| d S )Nr   r   r   r   r   r*   r+   )r2   r   )rR   )r3   Seriesr(   r   r   Zassert_series_equal)Zserr6   r   r   r   r   r   test_series   s
    "rr   c                 C   s&  dd t dD }|dd t dD 7 }|dd t dD 7 }tj|dd	gd
}|jddd}|jd d |  }dd t dd| D }|dd t dd| D 7 }|dd t dd| D 7 }dd t dd| D }|dd t dd| D 7 }|dd t dd| D 7 }tj|dd	g|d}t|| d S )Nc                 S   s   g | ]}d d | gqS rD   r   r<   r   r   r   r?      s     ztest_step.<locals>.<listcomp>r   c                 S   s   g | ]}d d | gqS yr   r<   r   r   r   r?      s     r   c                 S   s   g | ]}d d | gqS zr   r<   r   r   r   r?      s     r   r,   r-   r.   Fr0   c                 S   s   g | ]}d d | gqS rD   r   r<   r   r   r   r?     s     r   c                 S   s   g | ]}d d | gqS rs   r   r<   r   r   r   r?     s     c                 S   s   g | ]}d d | gqS ru   r   r<   r   r   r   r?     s     c                 S   s   g | ]}d | qS )r   r   r<   r   r   r   r?   
  s     c                 S   s   g | ]}d | qS )r   r   r<   r   r   r   r?     s     c                 S   s   g | ]}d | qS )	   r   r<   r   r   r   r?     s     r1   )r   r3   r4   r(   r   r   r   )ro   rK   r5   r6   r   r2   r   r   r   r   	test_step   s    rx   c                	   C   s<   t jdddddddgdddddddggdd	d
ddddgdS )Nr   r   r   r   r   r   r
   r,   r-   Cr:   EFGr.   )r3   r4   r   r   r   r   column_group_df  s    "r}   c                 C   sH   | j | jd dd}|jdd }| jd d ddgf }t|| d S )Nr   )Zaxisr   r   )r(   r   r   r   r   )r}   rc   r   r   r   r   r   test_column_axis  s    r~   c                  C   s`   t dd dD } ddg}| | jdk | D ]*\}}t|jt | d|jks0tq0d S )Nc                 S   s   i | ]}|t d qS )rm   r`   )r=   kr   r   r   rV   %  s      z(test_columns_on_iter.<locals>.<dictcomp>ABCr,   r-   r   ry   )	r3   r4   r(   r,   r   Zassert_index_equalr/   IndexAssertionError)r5   cols_Zdgr   r   r   test_columns_on_iter#  s
    r   funcc                 C   st   t ddgddgddgd}|d| dddg  }t jd	d
d	ggdddgt jdgddd}t|| d S )Nr   r   r   r|   )r,   r-   ry   ry   r,   r-   g      ?g      @)namer1   )r3   r4   r(   Zmeanr   r   r   )r   r5   r   r   r   r   r   test_groupby_duplicated_columns.  s    
  r   c               	   C   sb   t jddd gdddgdddgdd	} | jd
dgd}d}tjt|d |d W 5 Q R X d S )NZa1a2b1Zb2r   r   r   )r,   r-   val)rK   r,   r-   )Zbyz('a2', 'b1'))match)r   r   )r3   r4   r(   pytestZraisesKeyErrorZ	get_group)r5   Zgrpsmsgr   r   r   #test_groupby_get_nonexisting_groups?  s    r   )&rA   Znumpynpr   Zpandasr3   Zpandas._testingZ_testingr   markZparametrizer   r   r   r"   r#   r$   r%   rW   r)   r7   ZfixturerN   rS   rX   rk   rp   rr   rx   r}   r~   r   r   r   rq   arrayr   r   r   r   r   r   <module>   s   


$

4



