o
    Û­jH³  ã                   @   sÖ   d Z ddlmZmZ ddlZddlZddlZddlm	Z	m
Z
mZmZmZmZmZmZmZ ddlmZ ddlmZ G dd„ dƒZG dd	„ d	ƒZG d
d„ dƒZG dd„ dƒZdd„ Zdd„ Zej dg d¢¡dd„ ƒZdS )zG
test where we are determining what we are grouping, or getting groups
é    )ÚdateÚ	timedeltaN)	ÚCategoricalIndexÚ	DataFrameÚGrouperÚIndexÚ
MultiIndexÚSeriesÚ	TimestampÚ
date_rangeÚperiod_range)ÚGroupingc                   @   sn   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	e
j ddd„ dd„ g¡dd„ ƒZdd„ ZdS )ÚTestSelectionc                 C   s˜   t ddggddgd�}| d¡}tjtdd�� |dg  W d   ƒ n1 s'w   Y  tjtd	d�� |ddg  W d   ƒ d S 1 sEw   Y  d S )
Né   é   ÚAÚB©Úcolumnsz"Columns not found: 'C'"©ÚmatchÚCz^[^A]+$)r   ÚgroupbyÚpytestÚraisesÚKeyError)ÚselfÚdfÚg© r   ú_/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/groupby/test_grouping.pyÚtest_select_bad_cols    s   
ÿ"ýz"TestSelection.test_select_bad_colsc                 C   sÖ   t g d¢tdƒtddƒtdddƒgd�}d}tjt|d	�� | d
¡ W d   ƒ n1 s-w   Y  tjt|d	�� | d
dg¡ W d   ƒ n1 sKw   Y  | d¡}| ¡ }|jjdksaJ ‚|jj	dksiJ ‚d S )N)r   r   r   r   é   r   é   r   é   )r   Údataz!Grouper for 'A' not 1-dimensionalr   r   r   r   é   )
r   Úranger   r   Ú
ValueErrorr   Úcountr   ÚnlevelsÚsize)r   r   ÚmsgÚgroupedÚcr   r   r    Ú'test_groupby_duplicated_column_errormsg+   s    ÿÿÿ
z5TestSelection.test_groupby_duplicated_column_errormsgc                 C   sp   |  d¡j ¡ }|  d¡d  ¡ }t ||¡ d|d< |  d¡jdd�}|  d¡g d¢  d¡}t ||¡ d S )Nr   r   g      ø?ÚmeanT©Únumeric_only)r   ÚDr0   )r   r   ÚsumÚtmÚassert_series_equalr0   ÚaggÚassert_frame_equal©r   r   ÚresultÚexpectedr   r   r    Útest_column_select_via_attr<   s   z)TestSelection.test_column_select_via_attrc                 C   s´   t g d¢g d¢tj d¡ d¡tj d¡ d¡tj d¡ d¡dœƒ}| d¡ddg  ¡ }| d¡|jdd	…   ¡ }|jd d …g d
¢f  d¡ ¡ }t	 
||¡ t	 
||¡ d S )N©ÚfooÚbarr>   r?   r>   r?   r>   r>   ©ÚonerA   ÚtwoÚthreerB   rB   rA   rC   r   r$   ©r   r   r   r3   ÚEr   r   r3   r"   )r   r   r3   )r   ÚnpÚrandomÚdefault_rngÚstandard_normalr   r0   r   Úlocr5   r8   ©r   r   r:   Úresult2r;   r   r   r    Útest_getitem_list_of_columnsF   s   ûÿ
 z*TestSelection.test_getitem_list_of_columnsc                 C   sô   t tdƒd tj d¡ d¡tj d¡ d¡tj d¡ d¡dœƒ}| d¡|jdd…   ¡ }| d¡ddg  ¡ }|j	d d …g d	¢f  d¡ ¡ }t
 ||¡ t
 ||¡ tjtd
d�� | d¡d  ¡  W d   ƒ d S 1 ssw   Y  d S )NÚabcdr   r$   )r   r   r"   r#   r   r   r&   r"   ©r   r   r"   ú"Cannot subset columns with a tupler   )r   r"   )r   ÚlistrF   rG   rH   rI   r   r   r0   rJ   r5   r8   r   r   r(   rK   r   r   r    Ú!test_getitem_numeric_column_namesY   s   
üÿ "ÿz/TestSelection.test_getitem_numeric_column_namesc                 C   sF   t jtdd�� | d¡d  ¡  W d   ƒ d S 1 sw   Y  d S )NrP   r   r   )r   r3   )r   r   r(   r   r0   ©r   r   r   r   r    Ú+test_getitem_single_tuple_of_columns_raiseso   s   "ÿz9TestSelection.test_getitem_single_tuple_of_columns_raisesc                 C   sž   t g d¢g d¢tj d¡ d¡tj d¡ d¡tj d¡ d¡dœƒ}| d¡d  ¡ }|jd d …ddgf  d¡ ¡ }|jd d …df }|}t	 
||¡ d S )	Nr=   r@   r   r$   rD   r   r   r   )r   rF   rG   rH   rI   r   r0   rJ   Úilocr5   r6   )r   r   r:   Úas_frameÚ	as_seriesr;   r   r   r    Útest_getitem_single_columnt   s   ûÿ
 z(TestSelection.test_getitem_single_columnÚfuncc                 C   ó   |   ¡ S ©N©r4   ©Úxr   r   r    Ú<lambda>ˆ   ó    zTestSelection.<lambda>c                 C   s   |   dd„ ¡S )Nc                 S   rZ   r[   r\   )Úyr   r   r    r_   ˆ   r`   z(TestSelection.<lambda>.<locals>.<lambda>)r7   r]   r   r   r    r_   ˆ   ó    c                 C   st   t g d¢ddddœƒ}| ddg¡ddg }tjd	d
gddgd�}t ddgddgdœ|d�}||ƒ}t ||¡ d S )N©r   r   r   r&   r"   é   ©ÚaÚbr.   Údrf   rg   r.   )r   r&   )r   r&   ©Únamesr   r$   )rf   r.   ©Úindex)r   r   r   Úfrom_tuplesr5   r8   )r   rY   r   ÚgbÚidxr;   r:   r   r   r    Útest_getitem_from_grouper‡   s   z'TestSelection.test_getitem_from_grouperc                    sN   t ddd„ dD ƒiƒ‰ ˆ  d¡}ˆ  ‡ fdd„¡}|j}|j}t ||¡ d S )NÚTuplesc                 s   ó4   � | ]}t j d ¡ ddd¡D ]}||fV  qqdS ©r   r&   rd   N©rF   rG   rH   Úintegers©Ú.0r^   ra   r   r   r    Ú	<genexpr>™   ó   € ýþÿzJTestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<genexpr>©r   r   c                    ó   ˆ j | df S ©Nr   ©rU   r]   ©r   r   r    r_   ¢   rb   zITestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<lambda>)r   r   Úindicesr5   Úassert_dict_equal©r   rn   Ú	gb_lambdar;   r:   r   r~   r    Ú)test_indices_grouped_by_tuple_with_lambda•   s   þÿÿ

z7TestSelection.test_indices_grouped_by_tuple_with_lambdaN)Ú__name__Ú
__module__Ú__qualname__r!   r/   r<   rM   rR   rT   rX   r   ÚmarkÚparametrizerp   rƒ   r   r   r   r    r      s    
ÿ
r   c                   @   sH  e Zd Zej deedƒƒee 	d¡ƒeej	de
d�ƒeddd�eddd�g¡dd„ ƒZd	d
„ Zdd„ Zdd„ Zdd„ Zej ddd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'¢d(d)„ ed*ƒD ƒg¡d+d,„ ƒZd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Z d5d6„ Z!d7d8„ Z"d9d:„ Z#d;d<„ Z$d=d>„ Z%ej d?ddg¡d@dA„ ƒZ&dBdC„ Z'ej d?ddg¡dDdE„ ƒZ(dFdG„ Z)ej dHdg dI¢gdg dJ¢gg¡dKdL„ ƒZ*dMdN„ Z+dOdP„ Z,ej dQdRe-dSej.dT�fdUe-dSej.eg ej.dVdW�dX�fdYe-dSej.eg ej.dVdW�dX�fg¡dZd[„ ƒZ/d\d]„ Z0d^d_„ Z1d`da„ Z2dbS )cÚTestGroupingrl   Úabcderd   ©Údtypez
2020-01-01©Úperiodsc                 C   sn   t t d¡ dd¡tdƒ|d�}|jtdƒdd� d	d
„ ¡ |jd d d… |_|jtdƒdd� dd
„ ¡ d S )Né
   rd   r   ÚAB)r   rl   rŠ   F©Ú
group_keysc                 S   ó   | S r[   r   r]   r   r   r    r_   ¾   ó    z7TestGrouping.test_grouper_index_types.<locals>.<lambda>éÿÿÿÿc                 S   r“   r[   r   r]   r   r   r    r_   Á   r”   )r   rF   ÚarangeÚreshaperQ   r   Úapplyrl   )r   rl   r   r   r   r    Útest_grouper_index_types¯   s     z%TestGrouping.test_grouper_index_typesc                 C   sê   t  ¡ tdd� }t|t  ¡ ƒ}tj||gddgd�}ttj 	d¡ 
ddd	¡|d
�}| ¡  tddd�tddd�g¡ ¡ }tdgdd�|_| tddd�tddd�g¡ ¡ }t ||¡ | tddd�tddd�g¡ ¡ }t ||¡ d S )Né   )Údaysr>   r?   ri   r   r   éd   éá   rk   ÚW©ÚkeyÚfreqÚint64r‹   ©Úlevelr¡   r   )r   Útodayr   r   r   Úfrom_productr   rF   rG   rH   ru   Úreset_indexr   r   r4   r   r   r5   r8   )r   Úd0ÚdatesÚ
date_indexr   r;   r:   r   r   r    Útest_grouper_multilevel_freqÃ   s*   ýÿþÿþz)TestGrouping.test_grouper_multilevel_freqc                 C   s  t g d¢g d¢dœƒ}| d¡}| ¡ }| tdd�¡}| ¡ }t ||¡ d}tjt|d�� tddd	�}W d   ƒ n1 s@w   Y  | |¡}| ¡ }t ||¡ d
}tjt|d�� | dd„ ¡}W d   ƒ n1 sow   Y  g d¢|d< |j	d d …ddgf }t ||¡ d S )N)r   r   r   r   r   r   ©r   r   r&   r"   rd   r#   ©r   r   r   ©r    z6Grouper axis keyword is deprecated and will be removedr   r   )r    Úaxisz7DataFrameGroupBy.apply operated on the grouping columnsc                 S   rZ   r[   r\   r]   r   r   r    r_   ò   r`   z8TestGrouping.test_grouper_creation_bug.<locals>.<lambda>rO   r   )
r   r   r4   r   r5   r8   Úassert_produces_warningÚFutureWarningr˜   rJ   )r   r   r   r;   r:   r,   Úgprr   r   r    Útest_grouper_creation_bugß   s(   
ÿ
ÿz&TestGrouping.test_grouper_creation_bugc                 C   sä   t g d¢g d¢g d¢dœƒ}| d¡ ¡ }| tdd�g¡}| ¡ }t ||¡ | ddg¡ ¡ }| tdd�tdd�g¡}| ¡ }t ||¡ | dtdd�g¡}| ¡ }t ||¡ | tdd�dg¡}| ¡ }t ||¡ d S )N)r   r   r   r   r   r   )r   r   r   r   r&   r&   r¬   ©r   r   r   r   r®   r   )r   r   r4   r   r5   r8   )r   r   r;   r   r:   r   r   r    Útest_grouper_creation_bug2÷   s"   ÿz'TestGrouping.test_grouper_creation_bug2c                 C   sÄ   t dd|d�}tjtdƒtdƒ|gg d¢d�}ttjddd	�|d
�}| t	ddd�¡ 
¡ }tjtdƒgddd� |¡}tdg|d
�}t ||¡ | t	dd�¡ 
¡ }|jdd� 
¡ }t ||¡ d S )NÚ20130101r   )rŽ   ÚunitÚab)rA   rB   rC   ri   r$   r¢   r‹   rk   rC   ÚMEr£   z
2013-01-31)r¡   Únameé   rA   ©r¤   )r   r   r¦   rQ   r'   r	   rF   r–   r   r   r4   ÚpdÚDatetimeIndexr
   Úas_unitr5   r6   )r   r·   ÚdtiÚmiÚserr:   Úexp_dtir;   r   r   r    Útest_grouper_creation_bug3  s.   þþÿþþz'TestGrouping.test_grouper_creation_bug3rY   FTc                    s�   t g d¢g d¢dœƒ}tttdƒddgd ƒƒ‰ |r&|j‡ fdd	„d
d�}n|jˆ d
d�}tt|ƒƒ\}}|dks;J ‚| |¡}t 	||¡ d S )N©r   r   r   r   )r   r"   r&   r   )ÚXÚYr"   )r   rd   )r3   r#   r   c                    s   ˆ |  S r[   r   )ro   ©Úmappingr   r    r_   7  r`   z<TestGrouping.test_grouper_returning_tuples.<locals>.<lambda>F)ÚbyÚsort)
r   ÚdictÚzipr'   r   ÚnextÚiterÚ	get_groupr5   r8   )r   rY   r   rn   rº   r;   r:   r   rÈ   r    Útest_grouper_returning_tuples0  s   
z*TestGrouping.test_grouper_returning_tuplesc                 C   sJ  t  g d¢¡}ddg|_tt d¡g d¢dœ|d�}| dtdd	�g¡jd
d�}| 	¡  ddg¡jd
d�}t
 ||¡ | tdd	�dg¡jd
d�}| 	¡  ddg¡jd
d�}t
 ||¡ | 	d¡}| dtdd	�g¡jd
d�}| 	¡  ddg¡jd
d�}t
 ||¡ | tdd	�dg¡jd
d�}| 	¡  ddg¡jd
d�}t
 ||¡ d S )N)©rf   r   )rf   r   )rf   r&   ©rg   r   ©rg   r   )rg   r&   ÚouterÚinnerr#   )rA   rA   rB   rB   rA   rA   r­   rk   r   r¼   Tr1   )r   rm   rj   r   rF   r–   r   r   r0   r§   r5   r8   )r   ro   Údf_multir:   r;   Ú	df_singler   r   r    Útest_grouper_column_and_indexA  s:   ÿ
þÿÿ
ÿÿÿÿz*TestGrouping.test_grouper_column_and_indexc                 C   sv   ddg}t jg d¢|d�}tt d¡ dd¡|d�}|j|d	� ¡ }| ¡  |¡ ¡ }|j	 
tj¡|_	t ||¡ d S )
Nr^   ra   )©r   r   ©r   r   )r&   r"   )rd   r#   ri   é   r•   r&   rk   r¼   )r   rm   r   rF   r–   r—   r   r0   r§   r   Úastyper¢   r5   r8   )r   Ú	idx_namesro   r   Ú	by_levelsÚ
by_columnsr   r   r    Útest_groupby_levels_and_columnso  s   z,TestGrouping.test_groupby_levels_and_columnsc                 C   s\  g d¢}ddg}t  g d¢g d¢g d¢g d¢g d¢gt¡}t||dd�}t||d�}d}tjt|d	�� |jd
d|d� 	¡ }W d   ƒ n1 sHw   Y  t  ddgddgddgddgddggt¡}	t||dd�}
t|	|
d�}t 
||¡ t|j|d�}d}tjt|d	�� |jdd|d� 	¡ }W d   ƒ n1 sšw   Y  t|	j|
d�}t 
||¡ d S )NrÅ   r   r   )r   r   r   r   T)Ú
categoriesÚordered)r%   r   ú+DataFrame.groupby with axis=1 is deprecatedr   r   r   )r¯   r¤   Úobservedr"   r   rk   ú5The 'axis' keyword in DataFrame.groupby is deprecated)r%   rl   )rF   ÚarrayÚintr   r   r5   r°   r±   r   r4   r8   ÚT)r   rå   r   râ   r%   Úcat_columnsr   Údepr_msgr:   Úexpected_dataÚexpected_columnsr;   r,   r   r   r    Ú*test_groupby_categorical_index_and_columns}  s0   "ÿÿ*ÿÿz7TestGrouping.test_groupby_categorical_index_and_columnsc              	   C   s’   t dditjtdƒtddd�gddgd	�d
�}| tdd�tddd�g¡ ¡ }t dg d¢itjtdƒtdddd�gddgd	�d
�}t 	||¡ d S )Nr   r   r¸   r¶   éP   r�   rA   rB   ri   rk   r¼   r¹   r£   )é   r»   é   rð   r»   rñ   r&   )r¡   rŽ   )
r   r   r¦   rQ   r   r   r   r4   r5   r8   r9   r   r   r    Ú#test_grouper_getting_correct_binner˜  s&   ÿþÿþ
þþz0TestGrouping.test_grouper_getting_correct_binnerc                 C   sb   |  d¡}d}tjt|d�� |j}W d   ƒ n1 sw   Y  t|ƒ}ddg}||ks/J ‚d S )Nr   ú&DataFrameGroupBy.grouper is deprecatedr   r?   r>   )r   r5   r°   r±   ÚgrouperÚsorted)r   r   rn   r,   rô   r:   r;   r   r   r    Útest_grouper_iter®  s   
ÿzTestGrouping.test_grouper_iterc                 C   s>   t jtdd�� | g ¡ W d   ƒ d S 1 sw   Y  d S )NzNo group keys passed!r   )r   r   r(   r   rS   r   r   r    Útest_empty_groups·  s   "ÿzTestGrouping.test_empty_groupsc                 C   sp   |  d¡}d}tjt|d�� |j}W d   ƒ n1 sw   Y  |  |¡jdd�}|jdd�}t ||¡ d S )Nr   ró   r   Tr1   )r   r5   r°   r±   rô   r0   r8   )r   r   r-   r,   rô   r:   r;   r   r   r    Útest_groupby_grouper¼  s   
ÿz!TestGrouping.test_groupby_grouperc                 C   sÖ   t ddiƒ}| ddi¡ d¡}| dg¡ d¡}t ||¡ t g d¢tdƒd�}ddd	d	d
œ}| |¡ ¡ }| |¡ d¡}tjg d¢tj	d�}| |¡ ¡ }| |¡ ¡ }t ||¡ t ||¡ t ||¡ d S )NÚT1rd   ÚT2r4   )ç      ð?ç       @g      @g      @rN   rk   r   r   re   r0   )r   r   r   r   r‹   )
r	   r   r7   r5   r6   rQ   r0   rF   rç   r¢   )r   Úsr:   r;   rÉ   rL   Úexp_keyÚ	expected2r   r   r    Útest_groupby_dict_mappingÅ  s   z&TestGrouping.test_groupby_dict_mapping©r   r   r   r&   re   c                 C   s   g | ]
}t d dd| ƒ‘qS )iå  é   r»   )r
   )rw   Úir   r   r    Ú
<listcomp>Ý  s    zTestGrouping.<listcomp>r"   c                 C   sT   |g d¢|d�}t g d¢|dd�}| |¡ ¡ }|ddgƒ}d|j_t ||¡ d S )N©r   r   r&   r"   rk   )r   r   r   r   )rf   rf   )rl   rº   r"   r&   )r	   r   Úlastrl   rº   r5   Úassert_equal)r   Úframe_or_seriesrl   ÚobjÚgroupsr:   r;   r   r   r    Ú$test_groupby_series_named_with_tupleØ  s   
z1TestGrouping.test_groupby_series_named_with_tuplec                 C   s¢   t dddd�}ttj d¡ d¡|d�}d}tjt|d�� | 	d	d
„ ¡ W d   ƒ n1 s/w   Y  | 	dd
„ ¡ 
¡ }| 	|j¡ 
¡ }d |j_t ||¡ d S )Nz01-Jan-2013rÜ   ÚMS©rŽ   r¡   r   rk   z''Timestamp' object is not subscriptabler   c                 S   s   | dd… S )Nr   r#   r   r®   r   r   r    r_   ñ  s    zDTestGrouping.test_groupby_grouper_f_sanity_checked.<locals>.<lambda>c                 S   r“   r[   r   r]   r   r   r    r_   ó  r”   )r   r	   rF   rG   rH   rI   r   r   Ú	TypeErrorr   r4   rl   r¡   r5   r6   )r   r©   Útsr,   r:   r;   r   r   r    Ú%test_groupby_grouper_f_sanity_checkedé  s   ÿz2TestGrouping.test_groupby_grouper_f_sanity_checkedc              	   C   s¢   t ddgd tdddd�dœƒ}tdd	d
�}| |dg¡}tdƒdfddgtdƒdfdgtdƒdfdgtdƒdfddgi}t |j|¡ t|j 	¡ ƒdksOJ ‚d S )Nrf   rg   r&   z
2000-01-01z
2000-01-03Ú9h©r¡   )Úidrg   r3   rŸ   r  r   r   r   z
2000-01-02r"   rd   )
r   r   r   r   r
   r5   r€   r
  ÚlenÚkeys)r   r   rô   rn   r;   r   r   r    Útest_groupby_with_datetime_keyø  s   
þÿüz+TestGrouping.test_groupby_with_datetime_keyc                 C   sL   d}t jt|d�� t|j|ddg ƒ W d   ƒ d S 1 sw   Y  d S )NzEGrouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensionalr   r   )r   r   r(   r   rl   ©r   r   r,   r   r   r    Ú%test_grouping_error_on_multidim_input  s   "ÿz2TestGrouping.test_grouping_error_on_multidim_inputc                 C   s†   t g d¢g d¢g d¢gƒ}t g d¢¡|_d}tjt|d�� |jdddgd	�}W d   ƒ n1 s2w   Y  | ¡ }t 	||¡ d S )
N©r   r   r&   )r"   rd   r#   )r  r$   é	   )rz   rÚ   )r   r   rä   r   r   r   ©r¯   r¤   )
r   r   rm   r   r5   r°   r±   r   Úfirstr8   )r   r   rë   rn   r:   r   r   r    Útest_multiindex_passthru  s   ÿz%TestGrouping.test_multiindex_passthruc                 C   s¸   |j dd� ¡ }|j dd� ¡ }t ||¡ |j dd� ¡ }|j dd� ¡ }t ||¡ |j ddgd� ¡ }| ¡ }t ||¡ |j ddgd� ¡ }|j ddgd� ¡ }t ||¡ d S )Nr•   r¼   Úsecondéþÿÿÿr  )r   r4   r5   r8   Ú
sort_index)r   Ú multiindex_dataframe_random_datar:   r;   r   r   r    Útest_multiindex_negative_level   s    ÿþz+TestGrouping.test_multiindex_negative_levelc                 C   sh   t  t|jƒ¡|_d}tjt|d�� |jddd�d  dt j	i¡ W d   ƒ d S 1 s-w   Y  d S )Nz7Passing a dictionary to SeriesGroupBy.agg is deprecatedr   r   F©Úas_indexr   ÚQ)
rF   r–   r  r   r5   r°   r±   r   r7   r0   r  r   r   r    Ú&test_multifunc_select_col_integer_cols4  s
    "ÿz3TestGrouping.test_multifunc_select_col_integer_colsc                 C   sê   ddgddgg}t  |¡}tddgg|d�}| d¡j}|d dgks%J ‚| d	g¡j}|d dgks5J ‚tddgd
dgg|d�}| d¡j}| d	g¡j}||ksTJ ‚tddgd
dgg|d�}| d¡j}| d	g¡j}t ||¡ d S )Nr)   Úvaluesú	to filterÚ r   r   r   r   )r(  r)  r   r   )r   rm   r   r   r
  r5   r€   )r   ÚlstÚmidxr   r-   r;   r:   r   r   r    Ú#test_multiindex_columns_empty_level<  s   
z0TestGrouping.test_multiindex_columns_empty_levelc                 C   sØ   t g d¢g d¢g d¢gt g d¢g d¢g¡d�}| dg¡j}| d¡j}t ||¡ t |jt g d¢g d¢g¡d�}| d	g¡j}| d¡j}t ||¡ t |jg d
¢d�}| d	g¡j}| d¡j}t ||¡ d S )Nr  ©r&   r"   rd   r#   ©r   r"   r   r&   ©rf   rg   rg   r.   ©r   r   r   r   r   rÓ   )rh   rh   Úer1  ©rg   rh   ))rf   rh   r2  )rg   r1  r.   )r   r   Úfrom_arraysr   r
  r5   r€   r'  )r   r   r;   r:   Údf2Údf3r   r   r    Útest_groupby_multiindex_tupleT  s(   þÿþz*TestGrouping.test_groupby_multiindex_tuplec                 C   s€  t g d¢g d¢g d¢gt g d¢g d¢g¡d�}| dg¡dd	g  ¡ }| dg¡d
  ¡ }t ||¡ | dg¡dd	g  ¡ }| dg¡d
  ¡ }t ||¡ | dg¡dd	g  ¡ }| dg¡d
  ¡ }t ||¡ | dg¡dd	g  	¡ }| dg¡d
  	¡ }	t ||	¡ | dg¡dd	g  
¡ }
| dg¡d
  
¡ }t |
|¡ | dg¡dd	g j}| dg¡d
 j}t ||¡ d S )Nr  r-  r.  r/  r0  r   rÒ   rÓ   rÔ   rg   )r   r   r3  r   r0   r5   r8   r4   r)   ÚminÚmaxr
  r€   )r   r   Úexpected_meanÚresult_meanÚexpected_sumÚ
result_sumÚexpected_countÚresult_countÚexpected_minÚ
result_minÚexpected_maxÚ
result_maxÚexpected_groupsÚresult_groupsr   r   r    Ú4test_groupby_multiindex_partial_indexing_equivalencem  s,   þzATestGrouping.test_groupby_multiindex_partial_indexing_equivalencerË   c                 C   sÒ  |}|  ¡ }|jd|d� ¡ }|jd|d� ¡ }|j|d j|d� ¡ }|j|d j|d� ¡ }	d|j_d|	j_|jjdks@J ‚|jjdksHJ ‚t ||¡ t ||	¡ |jj|jjd ks`J ‚|jj|jjd kslJ ‚|jd|d� ¡ }|jd|d� ¡ }t ||¡ t ||	¡ d}
tj	t
|
d�� |jjdd|d	� ¡ }|jjdd|d	� ¡ }W d   ƒ n1 s´w   Y  t ||j¡ t ||	j¡ d
}
tjt|
d�� |jdd� W d   ƒ d S 1 sâw   Y  d S )Nr   ©r¤   rË   r   r  )rË   r  rä   r   )r¤   r¯   rË   z2level > 0 or level < -1 only valid with MultiIndexr¼   )r§   r   r4   r'  rl   rº   r5   r8   rj   r°   r±   ré   r   r   r(   )r   rË   r!  r   ÚframeÚ	deleveledÚresult0Úresult1Ú	expected0Ú	expected1r,   r   r   r    Útest_groupby_levelŒ  s:   þ"ÿzTestGrouping.test_groupby_levelc              	   C   s  t dgd dgd  tdƒdœƒ d¡}|dv r|j}d}nd	}tjt|d
�� |jd|d� W d   ƒ n1 s9w   Y  d| |¡› �}t	j
t|d
��/ tjt|d
�� |jd|d� W d   ƒ n1 sgw   Y  W d   ƒ d S W d   ƒ d S 1 sw   Y  d S )Nr   r&   r   r#   )ÚexpÚvar1rN  )r   r   rä   ræ   r   )r¤   r¯   z&level name foo is not the name of the r>   )r   r'   Ú	set_indexré   r5   r°   r±   r   Ú_get_axis_namer   r   r(   )r   r¯   r   rë   r,   r   r   r    Útest_groupby_level_index_names¶  s$   "ÿÿÿÿ"ÿz+TestGrouping.test_groupby_level_index_namesc                 C   sÔ   t ddgg d¢gg d¢g d¢gd�}tt d¡|d�}|jd|d	� ¡ }td
dgddgd�}t ||¡ t ddgg d¢gg d¢g d¢gd�}tt d¡|d�}|jd|d	� ¡ }td
dgddgd�}t ||¡ d S )Nr   r   r  )r   r   r   r   r   r   r   r   )r   r   r   r&   r   r   r   r&   )ÚlevelsÚcodesg       @rk   rF  g      @g      6@)r   r   r   r   r•   r   r   r   g      2@g        rû   )r   r	   rF   r–   r   r4   r5   r6   )r   rË   rl   rý   r:   r;   r   r   r    Útest_groupby_level_with_nasÇ  s    þþz(TestGrouping.test_groupby_level_with_nasc                 C   s„   |}d}t jt|d�� | ¡  W d   ƒ n1 sw   Y  d}t jt|d�� |jd d d� W d   ƒ d S 1 s;w   Y  d S )Nz*You have to supply one of 'by' and 'level'r   )rÊ   r¤   )r   r   r  r   )r   r!  rG  r,   r   r   r    Útest_groupby_argsà  s   
ÿ"ÿzTestGrouping.test_groupby_argszsort,labels©
r   r   r   r   r   r   r   r&   r&   r&   )
r   r   r   r   r   r   r   r&   r&   r&   c                 C   s4   |j d|d�}t |tj¡}t |jjd |¡ d S )Nr   rF  )r   rF   rç   Úintpr5   Úassert_almost_equalÚ_grouperrT  )r   rË   Úlabelsr!  r-   Ú
exp_labelsr   r   r    Útest_level_preserve_orderì  s   	z&TestGrouping.test_level_preserve_orderc                 C   s>   |  |j d¡¡}tjg d¢tjd�}t |jj	d |¡ d S )Nr   rW  r‹   )
r   rl   Úget_level_valuesrF   rç   rX  r5   rY  rZ  rT  )r   r!  r-   r\  r   r   r    Útest_grouping_labelsù  s
   
ÿz!TestGrouping.test_grouping_labelsc                 C   sˆ   t dtdddd�iƒ}tj|jd< tddd�}| |g¡}td	ƒtt	t
d
ƒƒƒi}t |j|¡ | |¡}td	ƒdi}t |j|¡ d S )Nr   z1/1/2011im  r3   r  r•   ÚYSrŸ   z
2011-01-01il  )r   r   r½   ÚNaTrU   r   r   r
   r   rQ   r'   r5   r€   r
  )r   r   rô   r:   r;   r   r   r    Útest_list_grouper_with_nat   s   
z'TestGrouping.test_list_grouper_with_natzfunc,expectedÚ	transformr   ©rº   rŒ   r7   r   ©rŒ   rº   )rº   rŒ   rl   r˜   c                 C   sB   t g g dœƒ}|jddd�}t|d |ƒdd„ ƒ}t ||¡ d S )NrÛ   r   Fr‘   r   c                 S   r“   r[   r   r]   r   r   r    r_   ,  r”   z>TestGrouping.test_evaluate_with_empty_groups.<locals>.<lambda>)r   r   Úgetattrr5   r6   )r   rY   r;   r   r   r:   r   r   r    Útest_evaluate_with_empty_groups  s   z,TestGrouping.test_evaluate_with_empty_groupsc                 C   s  t g ddd�}| g ¡}| ¡ }| tg tjd�¡}t ||¡ t	|j
jƒdks*J ‚t |j
jd tjg t tj¡d�¡ t |j
jd tjg t tj¡d�¡ |j
jd dksZJ ‚| |¡}d}tjt|d	�� |j}W d   ƒ n1 svw   Y  |j}dg}||ks‡J ‚d S )
Nrº   Úfloat64rd  r‹   r   r   r   z#SeriesGroupBy.grouper is deprecatedr   )r	   r   r0   Úset_axisr   rF   rX  r5   r6   r  rZ  Ú	groupingsÚassert_numpy_array_equalÚ
group_inforç   rŒ   r°   r±   rô   rj   )r   rý   Úgrr:   r;   rn   r,   rô   r   r   r    Útest_groupby_empty/  s*   
ÿÿ
ÿzTestGrouping.test_groupby_emptyc                 C   sŒ   t dtjdgd tjdggg d¢d� ddg¡}|jddgd� ¡ }t g ttdgd	d
�tg dd
�gg g gddgd�dgdd�}t 	||¡ d S )Nr^   r�   é   r´   r   r   r   r¼   Ústrr‹   rh  )rS  rT  rj   r   r¢   )r%   rl   r   rŒ   )
r   rF   ÚnanrP  r   r4   r   r   r5   r8   r9   r   r   r    Ú%test_groupby_level_index_value_all_naM  s"   ÿ
þýø
z2TestGrouping.test_groupby_level_index_value_all_nac                 C   sr   t g d¢g d¢gg d¢d�}| ddg¡}||jdk  }| d¡ ¡ }t dd	gtg tjdd
�d�}t 	||¡ d S )N)é{   rf   rû   )rs  rg   rü   )r  ÚcategoryÚvaluer   r  rt  r   rh  ru  re  )rŒ   r   rl   )
r   rP  ru  r   r4   r   rF   r¢   r5   r8   )r   r   Úemptyr:   r;   r   r   r    Ú#test_groupby_multiindex_level_empty_  s   ÿýz0TestGrouping.test_groupby_multiindex_level_emptyN)3r„   r…   r†   r   r‡   rˆ   r   rQ   rF   r–   Úfloatr   r   r™   r«   r³   rµ   rÄ   rÑ   rÙ   rá   rî   rò   rö   r÷   rø   r   r'   r  r  r  r  r  r"  r&  r,  r6  rE  rM  rR  rU  rV  r]  r_  rb  r	   rh  rg  rn  rr  rw  r   r   r   r    r‰   ®   sœ    


ûþ



.		ýþ
	
)


þþ
þÿþÿþõþ

r‰   c                   @   óD   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S )ÚTestGetGroupc                 C   s°  t t g d¢¡g d¢g d¢dœƒ}| d¡}tt|jƒƒ}| |¡}| t|ƒ 	¡ ¡}| t
t|ƒƒ¡}t ||¡ t ||¡ | ddg¡}tt|jƒƒ}| |¡}| t|d ƒ 	¡ |d f¡}| t
t|d ƒƒ|d f¡}t ||¡ t ||¡ d	}tjt|d
�� | d¡ W d   ƒ n1 s–w   Y  tjt|d
�� | d¡ W d   ƒ n1 s²w   Y  d}tjt|d
�� | d¡ W d   ƒ d S 1 sÑw   Y  d S )N)ú10-Oct-2013r{  r{  ú11-Oct-2013r|  r|  )r>   r>   r?   r>   r>   r?   r¬   )ÚDATEÚlabelÚVALr}  r~  r   r   z<must supply a tuple to get_group with multiple grouping keysr   r>   zHmust supply a same-length tuple to get_group with multiple grouping keys)r>   r?   Úbaz)r   r½   Úto_datetimer   rÎ   rÏ   r
  rÐ   r
   Úto_pydatetimerp  r5   r8   r   r   r(   )r   r   r   r    rJ  rL   Úresult3r,   r   r   r    Útest_get_groupt  sB   ÿ
ôÿ


ÿÿ"ÿzTestGetGroup.test_get_groupc                 C   sª   t g d¢ƒ}g d¢}|jt |d |¡|d�}| t dd¡¡}t ddgddgd�}t ||¡ d	}tj	t
|d
�� | t dd¡¡ W d   ƒ d S 1 sNw   Y  d S )N)r&   r   r  r#   )r   rd   r�   é   r   )rå   rd   r&   r   rk   z"Interval\(10, 15, closed='right'\)r   r�   r…  )r   r   r½   ÚcutrÐ   ÚIntervalr5   r8   r   r   r   )r   rå   rh   Úbinsr   r:   r;   r,   r   r   r    Útest_get_group_empty_bins£  s   "ÿz&TestGetGroup.test_get_group_empty_binsc                 C   sº   t g d¢gdgd�j}| d¡}t dddgiddgd�}| d¡}t ||¡ t g d¢¡}t ddd	„ |D ƒiƒ}| d¡}| d
¡}t d|d f|d fgiddgd�}t ||¡ d S )N)©r   rÛ   rŠ  rÛ   Úidsrk   rŠ  r   r   )ú
2010-01-01ú
2010-01-02rŒ  r�  c                 S   s   g | ]}|f‘qS r   r   )rw   r^   r   r   r    r  »  s    z@TestGetGroup.test_get_group_grouped_by_tuple.<locals>.<listcomp>)rŒ  )r   ré   r   rÐ   r5   r8   r½   r�  )r   r   rm  r;   r:   Údtr   r   r    Útest_get_group_grouped_by_tuple²  s   



$z,TestGetGroup.test_get_group_grouped_by_tuplec                    sr   t ddd„ dD ƒiƒ‰ ˆ  d¡}ˆ  ‡ fdd„¡}| tt|j ¡ ƒƒ¡}| tt|j ¡ ƒƒ¡}t ||¡ d S )Nrq   c                 s   rr   rs   rt   rv   r   r   r    rx   Å  ry   zKTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<genexpr>rz   c                    r{   r|   r}   r]   r~   r   r    r_   Î  rb   zJTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<lambda>)	r   r   rÐ   rÎ   rÏ   r
  r  r5   r8   r�   r   r~   r    Ú+test_get_group_grouped_by_tuple_with_lambdaÁ  s   þÿÿ

z8TestGetGroup.test_get_group_grouped_by_tuple_with_lambdac                 C   sJ   t  d¡}d}t||td�}tdd�}| |¡}tt|ƒd ƒd u s#J ‚d S )Nr   r‹   r3   r  )r½   r¾   r	   Úobjectr   r   rÎ   rÏ   )r   rl   r%   Úseriesrô   r-   r   r   r    Útest_groupby_with_emptyÕ  s   


z$TestGetGroup.test_groupby_with_emptyc                 C   s¨   t dtdƒiƒ}t | d¡ d¡|jddg ¡ t tg d¢dd�tg dd�d	�}t | d¡ ¡ |¡ t | d¡ 	¡ |¡ |jg d
¢ }t | d¡ 
d¡|¡ d S )Nrf   Úabssbabr   rd   )rf   rg   rý   )rº   rp  r‹   )rl   r   ©r&   r"   rd   r   )r   rQ   r5   r8   r   rÐ   rU   r   r)   r4   Únth)r   r   rN  r   r   r    Útest_groupby_with_single_columnÝ  s   "ÿz,TestGetGroup.test_groupby_with_single_columnc                 C   sj   t g d¢g d¢g d¢gg d¢d�}| ddg¡}| g d¢¡ ¡ }|jd	 d
ks*J ‚|jd dks3J ‚d S )N)r>   r?   r   r   )r>   r?   r   r   )r>   r€  r   r&   )r  r  ÚthirdrA   r   r  r  )r  r  r˜  )r>   r?   r   r   )r>   r€  r   r   )r   rP  r   r+   rJ   rS   r   r   r    Útest_gb_key_len_equal_axis_lenê  s   þz+TestGetGroup.test_gb_key_len_equal_axis_lenN)
r„   r…   r†   r„  r‰  r�  r�  r“  r—  r™  r   r   r   r    rz  s  s    /rz  c                   @   ry  )ÚTestIterationc                 C   sÄ   |  dg¡}|j}||ju sJ ‚|j ¡ D ]\}}|j| d |k ¡ s&J ‚q|  ddg¡}|j}||ju s8J ‚|j ¡ D ]"\}}|j| d |d k ¡ sPJ ‚|j| d |d k ¡ s_J ‚q=d S )Nr   r   r   r   )r   r
  ÚitemsrJ   Úall)r   r   r-   r
  ÚkÚvr   r   r    Útest_groupsý  s    þzTestIteration.test_groupsc                 C   s,   |  dd„ dd„ g¡}|jjd D ]}qd S )Nc                 S   rZ   r[   )Úweekdayr]   r   r   r    r_     r`   z9TestIteration.test_grouping_is_iterable.<locals>.<lambda>c                 S   s   | j S r[   )Úyearr]   r   r   r    r_     s    r   )r   rZ  rj  )r   Útsframer-   r   r   r   r    Útest_grouping_is_iterable  s   ÿz'TestIteration.test_grouping_is_iterablec                 C   sÐ   t t d¡ƒ}t g d¢¡}t g d¢¡}| ||g¡}t|ƒ}dd|ddg fdd|d	g fd
d|dg fd
d|ddg fg}t|ƒD ]!\}\\}}	}
|| \}}}||ksYJ ‚||	ks_J ‚t |
|¡ qDd S )Nr#   )rf   rf   rf   rg   rg   rg   ©Ú1Ú2r¥  r¦  r¥  r¦  rf   r¥  r   r   r¦  r   rg   r"   r&   rd   )	r	   rF   r–   rç   r   rQ   Ú	enumerater5   r6   )r   rý   Úk1Úk2r-   Úiteratedr;   r  rA   rB   rC   Úe1Úe2Úe3r   r   r    Útest_multi_iter  s    üüzTestIteration.test_multi_iterc                 C   sÈ  t  g d¢¡}t  g d¢¡}tt j d¡ d¡t j d¡ d¡||dœg d¢d�}| dd	g¡}t|ƒ}|j}d
d|j	|dg  fd
d|j	|ddg  fdd|j	|ddg  fdd|j	|dg  fg}t
|ƒD ]!\}	\\}
}}||	 \}}}||
ks|J ‚||ks‚J ‚t ||¡ qgt  g d¢¡|d< t  g d¢¡|d	< | dd	g¡}dd„ |D ƒ}t|ƒdks±J ‚| g d¢¡ ¡ }d}tjt|d�� |jjddd�}W d   ƒ n1 sÖw   Y  |D ]\}}qÝd S )N)rg   rg   rg   rf   rf   rf   r¤  r   r#   )Úv1Úv2r¨  r©  )rA   rB   rC   ÚfourÚfiveÚsixrk   r¨  r©  rf   r¥  r"   r¦  r&   rd   rg   r   r   )r¥  r¥  r¥  r¦  r¦  r¦  c                 S   s   i | ]\}}||“qS r   r   )rw   r    Úgpr   r   r    Ú
<dictcomp>O  s    z7TestIteration.test_multi_iter_frame.<locals>.<dictcomp>r´   rä   r   rÛ   r  )rF   rç   r   rG   rH   rI   r   rQ   rl   rJ   r§  r5   r8   r  r0   r°   r±   ré   )r   Úthree_groupr¨  r©  r   r-   rª  ro   r;   r  rA   rB   rC   r«  r¬  r­  r
  Úthree_levelsrë   r    Úgroupr   r   r    Útest_multi_iter_frame*  sH   üù
üÿÿz#TestIteration.test_multi_iter_framec                 C   s˜   t t| d¡ƒƒ t t| ddg¡ƒƒ t t|d  |d ¡ƒƒ t t|d  |d |d g¡ƒƒ t t| d¡d ƒƒ t t| ddg¡d ƒƒ d S )Nr   r   r   )rÌ   rÏ   r   rS   r   r   r    Útest_dictifyZ  s   "zTestIteration.test_dictifyc                 C   sô  t ddgddgdœt ddg¡d�}| tdd	�d
g¡}t|jƒdks%J ‚|jdks,J ‚tdƒdf|jv s7J ‚tdƒdf|jv sBJ ‚| 	tdƒdf¡}t
 ||jdgd d …f ¡ | 	tdƒdf¡}t
 ||jdgd d …f ¡ t g d¢g d¢dœt g d¢¡d�}| tdd	�d
g¡}t|jƒdks•J ‚|jdksœJ ‚tdƒdf|jv s§J ‚tdƒdf|jv s²J ‚| 	tdƒdf¡}t
 ||jddgd d …f ¡ | 	tdƒdf¡}t
 ||jdgd d …f ¡ t g d¢g d¢dœt g d¢¡d�}| tdd	�d
g¡}t|jƒdk�sJ ‚|jdk�sJ ‚tdƒdf|jv �sJ ‚tdƒdf|jv �s'J ‚tdƒdf|jv �s3J ‚| 	tdƒdf¡}t
 ||jdgd d …f ¡ | 	tdƒdf¡}t
 ||jdgd d …f ¡ | 	tdƒdf¡}t
 ||jdgd d …f ¡ d S )NÚstartéÒ  é.  )ÚeventÚchangeú
2014-09-10ú
2013-10-10rk   r¹   r  r¾  r   z
2014-09-30z
2013-10-31r   r   )r»  r»  r»  )r¼  r½  i£#  )rÀ  rÁ  z
2014-09-15)rÀ  rÁ  z
2014-08-05r&   z
2014-08-31)r   r½   r¾   r   r   r  r
  Úngroupsr
   rÐ   r5   r8   rU   )r   r   r-   Úresr   r   r    Útest_groupby_with_small_elemb  sT   þþþ z*TestIteration.test_groupby_with_small_elemc                 C   sZ   t  tdƒtdƒg¡}tg d¢g|d�}| |d ¡}|jjd  ¡ }d}||ks+J ‚d S )NÚAABÚabar  r   )r   rf   r   zGrouping(('A', 'a')))r   r3  rQ   r   r   rZ  rj  Ú__repr__)r   rÁ   r   rm  r:   r;   r   r   r    Útest_grouping_string_repr–  s   z'TestIteration.test_grouping_string_reprN)
r„   r…   r†   rŸ  r£  r®  r¹  rº  rÄ  rÈ  r   r   r   r    rš  ü  s    	04rš  c                  C   sÄ   t g d¢g d¢g d¢dœƒ d¡} | jtdd�tdd�gdd	�}|jjd
 jr)J ‚|jjd js2J ‚d}tjt	|d�� | 
¡ }W d   ƒ n1 sJw   Y  t ddgddgdœƒ}t ||¡ d S )Nrc   r•  )rf   rg   r.   rf   r¼   rg   r®   Fr#  r   r   z*A grouping .* was excluded from the resultr   r   r  rd   )rg   r.   )r   rP  r   r   rZ  rj  Úin_axisr5   r°   r±   r4   r8   )r   rn   r,   r:   r;   r   r   r    Útest_grouping_by_key_is_in_axis¡  s   "
ÿrÊ  c                  C   sn  t g d¢ddœƒ} tdd�}|  |¡}d}tjt|d�� |j}W d   ƒ n1 s*w   Y  ||ju s6J ‚d}tjt|d�� |j}W d   ƒ n1 sMw   Y  ||ju sYJ ‚d	}tjt|d�� |j	}W d   ƒ n1 spw   Y  ||j	u s|J ‚d
}tjt|d�� |j
 W d   ƒ n1 s“w   Y  d}tjt|d�� |j W d   ƒ d S 1 s°w   Y  d S )Nr  r   ©rf   rg   rf   r®   zUse GroupBy.groups insteadr   zUse GroupBy.grouper insteadz-Grouper.obj is deprecated and will be removedzUse Resampler.ax insteadzGrouper.indexer is deprecated)r   r   r   r5   r°   r±   r
  rô   rZ  r	  ÚaxÚindexer)r   Úgrperrn   r,   rÃ  r   r   r    Útest_grouper_groups±  s4   

ÿÿÿÿ"ÿrÏ  Úattr)Úgroup_indexÚresult_indexÚgroup_arraylikec                 C   sp   t g d¢g d¢dœƒ}| d¡}| › d�}tjt|d�� t|jjd | ƒ W d   ƒ d S 1 s1w   Y  d S )Nrc   r•  rË  rf   z is deprecatedr   r   )r   r   r5   r°   r±   rf  rZ  rj  )rÐ  r   rn   r,   r   r   r    Útest_depr_grouping_attrsÏ  s   

"ÿrÔ  ) Ú__doc__Údatetimer   r   ÚnumpyrF   r   Úpandasr½   r   r   r   r   r   r	   r
   r   r   Úpandas._testingÚ_testingr5   Úpandas.core.groupby.grouperr   r   r‰   rz  rš  rÊ  rÏ  r‡   rˆ   rÔ  r   r   r   r    Ú<module>   s0    ,      J 
 &