o
    d$                  
   @   sL  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 g dgddggdg gdg dgdd	d
ggdg ggdd Zdd Zej	j
dd dgg dgg dg dged ddg dgd dhg dggg dddd Zdd Zdd Zdd Zej	
dd g dgg dg dgeddeddfg dggdd  Zd!d" Ze d#d$ Zd%d& Zd'd( Zej	
d)g d*ej	
d+d,d-gej	
d.d/d0gd1d2 Zej	
d3g d4ej	
d5g d4ej	
d6g d7d8d9 Zd:d; Zej	
d6g d<d=d> Ze d?d@ ZdAdB ZdCdD Zej	
dEe ej!ej"ej#gdFdG Z$dHdI Z%dS )J    Nzarg, expected_rows)r               )   r      r      ic                 C   $   |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   V/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/groupby/test_indexing.pytest_int   s   

r   c                 C   s.   |j ddd }| jg d }t|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
test_slice   s   r   r   r   r   r   r   r   r   r   r   r   r   )listnegativerangeset)Zidsc                 C   r   r   r   r   r   r   r   	test_list'   s   

r%   c                 C   s(   |j d }| jg d }t|| d S )Nr   r    r   r   r   r   r   	test_ints>   s   
r&   c                 C   s4   |j d ddd f }| jg d }t|| d S )Nr   r	   r   r   r   r   r   r
   r   r   r   r   r   r   test_slicesF   s   r(   c                 C   s2   |j dddd f }| jg d }t|| d S )Nr   r   r	   r'   r   r   r   r   r   test_mixN   s   r)   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g dd}t|| d S )Nar   r   r   br   r   ABcolumnsFZas_indexr3   index)r   r   )r   r   r   )pd	DataFramer,   r   r   r   )dfgroupedr   r   r   r   r   test_doc_examplesf   s   &$
 r;   c                  C   sz   d} d}t jd| dd}dd t|D }i }|D ]!}|tdd	 }d
d |d | D }|jdd d |||< q|S )Nd      Z20130101D)Zperiodsfreqc                 S   s   g | ]}d | qS )zitem r   .0ir   r   r   
<listcomp>       z#multiindex_data.<locals>.<listcomp>r      c                 S   s.   g | ]}|t d dd t d dd fqS )r   i'  r<   )randomrandint)rA   itemr   r   r   rC      s     c                 S   s   | d S )Nr   r   xr   r   r   <lambda>   s    z!multiindex_data.<locals>.<lambda>)key)r7   Z
date_ranger#   rF   rG   r+   )ZndatesZnitemsdatesitemsdatadateZnitems_for_dateZlevelsr   r   r   multiindex_data{   s   

rQ   c                 C   sV   i }| D ]}| | D ]}|d |d d|||d f< q
qt jj|dd}d|j_|S )Nr   r   )r0   r1   r   r6   )Zorient)DateZItem)r7   r8   	from_dictr6   names)rO   rowsrP   levelr9   r   r   r   _make_df_from_data   s    rW   c                    sL   t  }|jdddtdd} fdd D }t |}t|| d S )NrR   Fr4   r   c                    s   i | ]}| | d d qS )r   rX   r   )rA   rP   rQ   r   r   
<dictcomp>   s    z#test_multiindex.<locals>.<dictcomp>)rW   r,   Znthslicer   r   )rQ   r9   r   Zslicedr   r   rY   r   test_multiindex   s
   r\   r   )r   r      i  r   iimethodheadtail	simulatedTFc                    sf  d d} fddt |D  fddt |D d}t|}|jddd	}| d
kr-| n||  }|dkrm|jd |  }|rgg }	t |D ]}
t  D ]}|
  |  | k r_|	|
  |  qJqD|j|	 }nD|| }n>|j|  d  }|rg }	t |D ]"}
t  D ]}||
 |   | d
kr|	||
 |   |  qq}|j|	 }n|| }t	
|| d S )Nr<   r]   c                    s$   g | ]}t  D ]}d | qqS )group r#   rA   jgZn_groupsr   r   rC      s
    
z.test_against_head_and_tail.<locals>.<listcomp>c                    s*   g | ]}t  D ]
}d | d| qqS )rc   z row rd   re   rh   r   r   rC      s    groupvaluerj   Fr4   r   r`   )r#   r7   r8   r,   r   appendr   r`   ra   r   r   )r   r_   rb   Zn_rows_per_grouprO   r9   r:   sizer   indicesrf   rB   r   r   rh   r   test_against_head_and_tail   sH   




ro   start)Nr   r   
   r   istopstep)Nr   r   c           	      C   sd   d}dg| t t|d}t|}|jddd}|j| || }|j| || }t|| d S )Nr]   zgroup 0ri   rj   Fr4   )	r!   r#   r7   r8   r,   r   r   r   r   )	rp   rr   rs   Zn_rowsrO   r9   r:   r   r   r   r   r   test_against_df_iloc   s   

rt   c                  C   sV   t jg dg dd} | jdd}|jdd }t jddgd	d
gd}t|| d S )Nr   r   r   r   r   )r.   r.   r.   r/   r/   )r6   r   )rV   r   r   r   r.   r/   )r7   Seriesr,   r   r   Zassert_series_equal)Zserr:   r   r   r   r   r   test_series   s
   rw   ru   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      g | ]	}d d | gqS rI   r   r@   r   r   r   rC          ztest_step.<locals>.<listcomp>r   c                 S   rx   yr   r@   r   r   r   rC      ry   r   c                 S   rx   zr   r@   r   r   r   rC      ry   r   r0   r1   r2   Fr4   c                 S   rx   rI   r   r@   r   r   r   rC     ry   r   c                 S   rx   rz   r   r@   r   r   r   rC     ry   c                 S   rx   r|   r   r@   r   r   r   rC     ry   c                 S      g | ]}d | qS )r   r   r@   r   r   r   rC   
      c                 S   r~   )r   r   r@   r   r   r   rC     r   c                 S   r~   )	   r   r@   r   r   r   rC     r   r5   )r#   r7   r8   r,   r   r   r   )rs   rO   r9   r:   r   r6   r   r   r   r   	test_step   s   r   c                   C   s   t jg dg dgg ddS )N)r   r   r   r   r   r   r
   )r   r   r   r   r   r   r   )r0   r1   Cr>   EFGr2   )r7   r8   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   rg   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vs-J qd S )Nc                 S   s   i | ]}|t d qS )rq   rd   )rA   kr   r   r   rZ   %  rD   z(test_columns_on_iter.<locals>.<dictcomp>ABCr0   r1   r   r   )r7   r8   r,   r0   r   Zassert_index_equalr3   Index)r9   cols_dgr   r   r   test_columns_on_iter#  s   r   funcc                 C   sn   t ddgddgddgd}|d| g d  }t jg dgg dt jdgdd	d
}t|| d S )Nr   r   r   r   )r0   r1   r   r   )r0   r1   r0   )      ?g      @r   )namer5   )r7   r8   r,   meanr   r   r   )r   r9   r   r   r   r   r   test_groupby_duplicated_columns.  s   r   c                  C   sr   t jg dg dg ddd} | jddgd}d	}tjt|d
 |d W d    d S 1 s2w   Y  d S )N)Za1a2N)b1b2r   )r   r   r   )r0   r1   val)rO   r0   r1   )Zbyz('a2', 'b1'))match)r   r   )r7   r8   r,   pytestZraisesKeyErrorZ	get_group)r9   Zgrpsmsgr   r   r   #test_groupby_get_nonexisting_groups?  s   "r   )&rF   numpynpr   Zpandasr7   Zpandas._testingZ_testingr   markZparametrizer   r   r#   r%   r&   r(   r)   r[   r-   r;   ZfixturerQ   rW   r\   ro   rt   rw   r   r   r   r   r!   r   rv   arrayr   r   r   r   r   r   <module>   sz   







4



