a
    é´«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 sN0    Y  tjtd	d�� |ddg  W d   ƒ n1 sˆ0    Y  d S )
Né   é   ÚAÚB©Úcolumnsz"Columns not found: 'C'"©ÚmatchÚCz^[^A]+$)r   ÚgroupbyÚpytestÚraisesÚKeyError)ÚselfÚdfÚg© r   úa/var/www/html/laksyashrimp/venv/lib/python3.9/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 sZ0    Y  tjt|d	�� | d
dg¡ W d   ƒ n1 s–0    Y  | d¡}| ¡ }|jjdksÂJ ‚|jj	dksÒJ ‚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   Z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©Znumeric_only)r   ÚDr/   )r   r   ÚsumÚtmÚassert_series_equalr/   Ú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<   ©Úoner?   ÚtwoÚthreer@   r@   r?   rA   r   r$   ©r   r   r   r1   ÚEr   r   r1   r"   )r   r   r1   )r   ÚnpÚrandomÚdefault_rngÚstandard_normalr   r/   r   Úlocr3   r6   ©r   r   r8   Úresult2r9   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   ƒ n1 sä0    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   ÚlistrD   rE   rF   rG   r   r   r/   rH   r3   r6   r   r   r(   rI   r   r   r    Ú!test_getitem_numeric_column_namesY   s    
üÿ z/TestSelection.test_getitem_numeric_column_namesc                 C   sD   t jtdd��" | d¡d  ¡  W d   ƒ n1 s60    Y  d S )NrN   r   r   )r   r1   )r   r   r(   r   r/   ©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$   rB   r   r   r   )r   rD   rE   rF   rG   r   r/   rH   Úilocr3   r4   )r   r   r8   Zas_frameZ	as_seriesr9   r   r   r    Útest_getitem_single_columnt   s    ûÿ
 z(TestSelection.test_getitem_single_columnÚfuncc                 C   s   |   ¡ S ©N©r2   ©Úxr   r   r    Ú<lambda>ˆ   ó    zTestSelection.<lambda>c                 C   s   |   dd„ ¡S )Nc                 S   s   |   ¡ S rV   rW   )Úyr   r   r    rZ   ˆ   r[   z(TestSelection.<lambda>.<locals>.<lambda>)r5   rX   r   r   r    rZ   ˆ   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-   Údr`   ra   r-   )r   r&   )r   r&   ©Únamesr   r$   )r`   r-   ©Úindex)r   r   r   Úfrom_tuplesr3   r6   )r   rU   r   ÚgbÚidxr9   r8   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   s2   | ]*}t j d ¡ ddd¡D ]}||fV  qqdS ©r   r&   r^   N©rD   rE   rF   Úintegers©Ú.0rY   r\   r   r   r    Ú	<genexpr>™   s   þzJTestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<genexpr>©r   r   c                    s   ˆ j | df S ©Nr   ©rS   rX   ©r   r   r    rZ   ¢   r[   zITestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<lambda>)r   r   Úindicesr3   Úassert_dict_equal©r   rh   Z	gb_lambdar9   r8   r   ru   r    Ú)test_indices_grouped_by_tuple_with_lambda•   s    þÿÿ

z7TestSelection.test_indices_grouped_by_tuple_with_lambdaN)Ú__name__Ú
__module__Ú__qualname__r!   r.   r:   rK   rP   rR   rT   r   ÚmarkÚparametrizerj   ry   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ÚTestGroupingrf   Úabcder^   ©Ú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é
   r^   r   ZAB)r   rf   r€   F©Z
group_keysc                 S   s   | S rV   r   rX   r   r   r    rZ   ¾   r[   z7TestGrouping.test_grouper_index_types.<locals>.<lambda>éÿÿÿÿc                 S   s   | S rV   r   rX   r   r   r    rZ   Á   r[   )r   rD   ÚarangeÚreshaperO   r   Úapplyrf   )r   rf   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=   rc   r   r   éd   éá   re   ÚW©ÚkeyÚfreqÚint64r�   ©Úlevelr“   r   )r   Útodayr   r   r   Úfrom_productr   rD   rE   rF   rn   Úreset_indexr   r   r2   r   r   r3   r6   )r   Zd0ÚdatesZ
date_indexr   r9   r8   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€0    Y  | |¡}| ¡ }t ||¡ d
}tjt|d�� | dd„ ¡}W d   ƒ n1 sÞ0    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"   r^   r#   ©r   r   r   ©r’   z6Grouper axis keyword is deprecated and will be removedr   r   )r’   Úaxisz7DataFrameGroupBy.apply operated on the grouping columnsc                 S   s   |   ¡ S rV   rW   rX   r   r   r    rZ   ò   r[   z8TestGrouping.test_grouper_creation_bug.<locals>.<lambda>rM   r   )
r   r   r2   r   r3   r6   Úassert_produces_warningÚFutureWarningrŠ   rH   )r   r   r   r9   r8   r+   Z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   r2   r   r3   r6   )r   r   r9   r   r8   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)r?   r@   rA   rc   r$   r”   r�   re   rA   ÚMEr•   z
2013-01-31)r“   Únameé   r?   ©r–   )r   r   r˜   rO   r'   r	   rD   rˆ   r   r   r2   ÚpdÚDatetimeIndexr
   Zas_unitr3   r4   )r   r¦   ZdtiÚmiZserr8   Zexp_dtir9   r   r   r    Útest_grouper_creation_bug3  s.    þþÿþþz'TestGrouping.test_grouper_creation_bug3rU   FTc                    s�   t g d¢g d¢dœƒ}tttdƒddgd ƒƒ‰ |rL|j‡ fdd	„d
d�}n|jˆ d
d�}tt|ƒƒ\}}|dksvJ ‚| |¡}t 	||¡ d S )N©r   r   r   r   )r   r"   r&   r   )ÚXÚYr"   )r   r^   )r1   r#   r   c                    s   ˆ |  S rV   r   )ri   ©Úmappingr   r    rZ   7  r[   z<TestGrouping.test_grouper_returning_tuples.<locals>.<lambda>F)ÚbyÚsort)
r   ÚdictÚzipr'   r   ÚnextÚiterÚ	get_groupr3   r6   )r   rU   r   rh   r©   r9   r8   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)©r`   r   )r`   r   )r`   r&   ©ra   r   ©ra   r   )ra   r&   ÚouterÚinnerr#   )r?   r?   r@   r@   r?   r?   r�   re   r   r«   Tr0   )r   rg   rd   r   rD   rˆ   r   r   r/   r™   r3   r6   )r   ri   Zdf_multir8   r9   Z	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 )
NrY   r\   )©r   r   ©r   r   )r&   r"   )r^   r#   rc   é   r‡   r&   re   r«   )r   rg   r   rD   rˆ   r‰   r   r/   r™   r   Zastyper”   r3   r6   )r   Z	idx_namesri   r   Z	by_levelsZ
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 s�0    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 �s60    Y  t|	j|
d�}t 
||¡ d S )Nr°   r   r   )r   r   r   r   T)Ú
categoriesZordered)r%   r   ú+DataFrame.groupby with axis=1 is deprecatedr   r   r   )rŸ   r–   Úobservedr"   r   re   ú5The 'axis' keyword in DataFrame.groupby is deprecated)r%   rf   )rD   ÚarrayÚintr   r   r3   r    r¡   r   r2   r6   ÚT)r   rÉ   r   rÇ   r%   Zcat_columnsr   Údepr_msgr8   Zexpected_dataZexpected_columnsr9   r+   r   r   r    Ú*test_groupby_categorical_index_and_columns}  s,    "ÿ2*ÿ4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ƒ   r?   r@   rc   re   r«   r¨   r•   )é   rª   é   rÑ   rª   rÒ   r&   )r“   r„   )
r   r   r˜   rO   r   r   r   r2   r3   r6   r7   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 s80    Y  t|ƒ}ddg}||ks^J ‚d S )Nr   ú&DataFrameGroupBy.grouper is deprecatedr   r=   r<   )r   r3   r    r¡   ÚgrouperÚsorted)r   r   rh   r+   rÕ   r8   r9   r   r   r    Útest_grouper_iter®  s    
$zTestGrouping.test_grouper_iterc                 C   s<   t jtdd�� | g ¡ W d   ƒ n1 s.0    Y  d S )NzNo group keys passed!r   )r   r   r(   r   rQ   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 s80    Y  |  |¡jdd�}|jdd�}t ||¡ d S )Nr   rÔ   r   Tr0   )r   r3   r    r¡   rÕ   r/   r6   )r   r   r,   r+   rÕ   r8   r9   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 )NZT1r^   ZT2r2   )ç      ð?ç       @g      @g      @rL   re   r   r   r_   r/   )r   r   r   r   r�   )
r	   r   r5   r3   r4   rO   r/   rD   rË   r”   )r   Úsr8   r9   r´   rJ   Zexp_keyZ	expected2r   r   r    Útest_groupby_dict_mappingÅ  s    z&TestGrouping.test_groupby_dict_mapping©r   r   r   r&   r_   c                 C   s   g | ]}t d dd| ƒ‘qS )iå  é   rª   )r
   )rp   Úir   r   r    Ú
<listcomp>Ý  r[   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"   re   )r   r   r   r   )r`   r`   )rf   r©   r"   r&   )r	   r   Úlastrf   r©   r3   Zassert_equal)r   Zframe_or_seriesrf   ÚobjÚgroupsr8   r9   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^0    Y  | 	dd
„ ¡ 
¡ }| 	|j¡ 
¡ }d |j_t ||¡ d S )Nz01-Jan-2013rÅ   ZMS©r„   r“   r   re   z''Timestamp' object is not subscriptabler   c                 S   s   | dd… S )Nr   r#   r   rž   r   r   r    rZ   ñ  r[   zDTestGrouping.test_groupby_grouper_f_sanity_checked.<locals>.<lambda>c                 S   s   | S rV   r   rX   r   r   r    rZ   ó  r[   )r   r	   rD   rE   rF   rG   r   r   Ú	TypeErrorr   r2   rf   r“   r3   r4   )r   rš   Útsr+   r8   r9   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sžJ ‚d S )Nr`   ra   r&   z
2000-01-01z
2000-01-03Z9h©r“   )Úidra   r1   r‘   rì   r   r   r   z
2000-01-02r"   r^   )
r   r   r   r   r
   r3   rw   rå   ÚlenÚkeys)r   r   rÕ   rh   r9   r   r   r    Útest_groupby_with_datetime_keyø  s    
þÿüz+TestGrouping.test_groupby_with_datetime_keyc                 C   sJ   d}t jt|d��$ t|j|ddg ƒ W d   ƒ n1 s<0    Y  d S )NzEGrouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensionalr   r   )r   r   r(   r   rf   ©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 sd0    Y  | ¡ }t 	||¡ d S )
N©r   r   r&   )r"   r^   r#   )rß   r$   é	   )rr   rÃ   )r   r   rÈ   r   r   r   ©rŸ   r–   )
r   r   rg   r   r3   r    r¡   r   Úfirstr6   )r   r   rÎ   rh   r8   r   r   r    Útest_multiindex_passthru  s    0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   r2   r3   r6   Z
sort_index)r   Ú multiindex_dataframe_random_datar8   r9   r   r   r    Útest_multiindex_negative_level   s    ÿ
z+TestGrouping.test_multiindex_negative_levelc                 C   sf   t  t|jƒ¡|_d}tjt|d��. |jddd�d  dt j	i¡ W d   ƒ n1 sX0    Y  d S )Nz7Passing a dictionary to SeriesGroupBy.agg is deprecatedr   r   F©Zas_indexr   ÚQ)
rD   rˆ   rí   r   r3   r    r¡   r   r5   r/   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sJJ ‚| d	g¡j}|d dgksjJ ‚tddgd
dgg|d�}| d¡j}| d	g¡j}||ks¨J ‚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   rg   r   r   rå   r3   rw   )r   ÚlstZmidxr   r,   r9   r8   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"   r^   r#   ©r   r"   r   r&   ©r`   ra   ra   r-   ©r   r   r   r   r   r¾   )rb   rb   Úer  ©ra   rb   ))r`   rb   r  )ra   r  r-   )r   r   Úfrom_arraysr   rå   r3   rw   rþ   )r   r   r9   r8   Zdf2Z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  r  r   r½   r¾   r¿   ra   )r   r   r	  r   r/   r3   r6   r2   r)   ÚminÚmaxrå   rw   )r   r   Zexpected_meanZresult_meanZexpected_sumZ
result_sumZexpected_countZresult_countZexpected_minZ
result_minZexpected_maxZ
result_maxZexpected_groupsZ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s�J ‚t ||¡ t ||	¡ |jj|jjd ksÀJ ‚|jj|jjd ksØJ ‚|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 �sj0    Y  t ||j¡ t ||	j¡ d
}
tjt|
d�� |jdd� W d   ƒ n1 �sÆ0    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   r2   rþ   rf   r©   r3   r6   rd   r    r¡   rÍ   r   r   r(   )r   r¶   rù   r   ÚframeZ	deleveledZresult0Úresult1Z	expected0Z	expected1r+   r   r   r    Útest_groupby_levelŒ  s6    6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 sr0    Y  d| |¡› �}t	j
t|d
��L tjt|d
�� |jd|d� W d   ƒ n1 sÎ0    Y  W d   ƒ n1 sì0    Y  d S )Nr   r&   r   r#   )ÚexpZvar1r  )r   r   rÈ   rÊ   r   )r–   rŸ   z&level name foo is not the name of the r<   )r   r'   Ú	set_indexrÍ   r3   r    r¡   r   Z_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       @re   r  g      @g      6@)r   r   r   r   r‡   r   r   r   g      2@g        rÚ   )r   r	   rD   rˆ   r   r2   r3   r4   )r   r¶   rf   rÜ   r8   r9   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 s40    Y  d}t jt|d�� |jd d d� W d   ƒ n1 st0    Y  d S )Nz*You have to supply one of 'by' and 'level'r   )rµ   r–   )r   r   rè   r   )r   rù   r  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   r  )r   rD   rË   Úintpr3   Úassert_almost_equalÚ_grouperr  )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   r  r�   )
r   rf   Zget_level_valuesrD   rË   r  r3   r  r  r  )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  r1   rç   r‡   ZYSr‘   z
2011-01-01il  )r   r   r¬   ZNaTrS   r   r   r
   r   rO   r'   r3   rw   rå   )r   r   rÕ   r8   r9   r   r   r    Útest_list_grouper_with_nat   s    
z'TestGrouping.test_list_grouper_with_natzfunc,expectedZ	transformr   ©r©   r‚   r5   r   ©r‚   r©   )r©   r‚   rf   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   s   | S rV   r   rX   r   r   r    rZ   ,  r[   z>TestGrouping.test_evaluate_with_empty_groups.<locals>.<lambda>)r   r   Úgetattrr3   r4   )r   rU   r9   r   r   r8   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sTJ ‚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s´J ‚| |¡}d}tjt|d	�� |j}W d   ƒ n1 sì0    Y  |j}dg}||k�sJ ‚d S )
Nr©   Úfloat64r"  r�   r   r   r   z#SeriesGroupBy.grouper is deprecatedr   )r	   r   r/   Zset_axisr   rD   r  r3   r4   rí   r  Ú	groupingsZassert_numpy_array_equalZ
group_inforË   r‚   r    r¡   rÕ   rd   )r   rÜ   Úgrr8   r9   rh   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 )NrY   r…   é   r£   r   r   r   r«   Ústrr�   r&  )r  r  rd   r   r”   )r%   rf   r   r‚   )
r   rD   Únanr  r   r2   r   r   r3   r6   r7   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)é{   r`   rÚ   )r.  ra   rÛ   )rì   ÚcategoryÚvaluer   rì   r/  r   r&  r0  r#  )r‚   r   rf   )
r   r  r0  r   r2   r   rD   r”   r3   r6   )r   r   Úemptyr8   r9   r   r   r    Ú#test_groupby_multiindex_level_empty_  s    ÿýz0TestGrouping.test_groupby_multiindex_level_emptyN)3rz   r{   r|   r   r}   r~   r   rO   rD   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  r
  r  r  r  r  r  r  r   r!  r	   r&  r%  r)  r-  r2  r   r   r   r    r   ®   sš   


ûþ



.		ýþ
	
)


þþ
þÿþÿþõþ

r   c                   @   sD   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.0    Y  tjt|d
�� | d¡ W d   ƒ n1 �sh0    Y  d}tjt|d
�� | d¡ W d   ƒ n1 �s¦0    Y  d S )N)ú10-Oct-2013r5  r5  ú11-Oct-2013r6  r6  )r<   r<   r=   r<   r<   r=   rœ   )ÚDATEÚlabelZVALr7  r8  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
   Zto_pydatetimer+  r3   r6   r   r   r(   )r   r   r   r’   r  rJ   Zresult3r+   r   r   r    Útest_get_groupt  s<    ÿ
ôÿ


**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   ƒ n1 sš0    Y  d S )N)r&   r   rß   r#   )r   r^   r…   é   r   )rÉ   r^   r&   r   re   z"Interval\(10, 15, closed='right'\)r   r…   r<  )r   r   r¬   Úcutr»   ZIntervalr3   r6   r   r   r   )r   rÉ   rb   Zbinsr   r8   r9   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Ä   Úidsre   r?  r   r   )ú
2010-01-01ú
2010-01-02rA  rB  c                 S   s   g | ]
}|f‘qS r   r   )rp   rY   r   r   r    rá   »  r[   z@TestGetGroup.test_get_group_grouped_by_tuple.<locals>.<listcomp>)rA  )r   rÍ   r   r»   r3   r6   r¬   r:  )r   r   r(  r9   r8   Ú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 )Nrk   c                 s   s2   | ]*}t j d ¡ ddd¡D ]}||fV  qqdS rl   rm   ro   r   r   r    rq   Å  s   þzKTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<genexpr>rr   c                    s   ˆ j | df S rs   rt   rX   ru   r   r    rZ   Î  r[   zJTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<lambda>)	r   r   r»   r¹   rº   rå   rî   r3   r6   rx   r   ru   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 sFJ ‚d S )Nr   r�   r1   rë   )r¬   r­   r	   Úobjectr   r   r¹   rº   )r   rf   r%   Z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 )Nr`   Zabssbabr   r^   )r`   ra   rÜ   )r©   r+  r�   )rf   r   ©r&   r"   r^   r   )r   rO   r3   r6   r   r»   rS   r   r)   r2   Znth)r   r   r  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sTJ ‚|jd dksfJ ‚d S )N)r<   r=   r   r   )r<   r=   r   r   )r<   r9  r   r&   )rõ   r÷   Úthirdr?   r   rõ   r÷   )rõ   r÷   rJ  )r<   r=   r   r   )r<   r9  r   r   )r   r  r   r*   rH   rQ   r   r   r    Útest_gb_key_len_equal_axis_lenê  s    þz+TestGetGroup.test_gb_key_len_equal_axis_lenN)
rz   r{   r|   r;  r>  rD  rE  rG  rI  rK  r   r   r   r    r4  s  s   /r4  c                   @   sD   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 )ÚTestIterationc                 C   sÄ   |  dg¡}|j}||ju s J ‚|j ¡ D ]"\}}|j| d |k ¡ s*J ‚q*|  ddg¡}|j}||ju spJ ‚|j ¡ D ]D\}}|j| d |d k ¡ s J ‚|j| d |d k ¡ szJ ‚qzd S )Nr   r   r   r   )r   rå   ÚitemsrH   Ú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   s   |   ¡ S rV   )ÚweekdayrX   r   r   r    rZ     r[   z9TestIteration.test_grouping_is_iterable.<locals>.<lambda>c                 S   s   | j S rV   )ÚyearrX   r   r   r    rZ     r[   r   )r   r  r'  )r   Z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 ]B\}\\}}	}
|| \}}}||ks²J ‚||	ks¾J ‚t |
|¡ qˆd S )Nr#   )r`   r`   r`   ra   ra   ra   ©Ú1Ú2rV  rW  rV  rW  r`   rV  r   r   rW  r   ra   r"   r&   r^   )	r	   rD   rˆ   rË   r   rO   Ú	enumerater3   r4   )r   rÜ   Úk1Úk2r,   Úiteratedr9   rà   r?   r@   rA   Ú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 ]D\}	\\}
}}||	 \}}}||
ksøJ ‚||k�sJ ‚t ||¡ qÎt  g d¢¡|d< t  g d¢¡|d	< | dd	g¡}dd„ |D ƒ}t|ƒdk�sfJ ‚| g d¢¡ ¡ }d}tjt|d��  |jjddd�}W d   ƒ n1 �s²0    Y  |D ]
\}}�qÀd S )N)ra   ra   ra   r`   r`   r`   rU  r   r#   )Úv1Úv2rY  rZ  )r?   r@   rA   ÚfourÚfiveÚsixre   rY  rZ  r`   rV  r"   rW  r&   r^   ra   r   r   )rV  rV  rV  rW  rW  rW  c                 S   s   i | ]\}}||“qS r   r   )rp   r’   Úgpr   r   r    Ú
<dictcomp>O  r[   z7TestIteration.test_multi_iter_frame.<locals>.<dictcomp>r£   rÈ   r   rÄ   rô   )rD   rË   r   rE   rF   rG   r   rO   rf   rH   rX  r3   r6   rí   r/   r    r¡   rÍ   )r   Zthree_grouprY  rZ  r   r,   r[  ri   r9   rà   r?   r@   rA   r\  r]  r^  rå   Zthree_levelsrÎ   r’   Úgroupr   r   r    Útest_multi_iter_frame*  sD    üù
ü0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   rQ   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sJJ ‚|jdksXJ ‚tdƒdf|jv snJ ‚tdƒdf|jv s„J ‚| 	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 �sTJ ‚tdƒdf|jv �slJ ‚| 	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 �sVJ ‚tdƒdf|jv �snJ ‚| 	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éÒ  é.  )ÚeventZchangeú
2014-09-10ú
2013-10-10re   r¨   rë   rm  r   z
2014-09-30z
2013-10-31r   r   )rj  rj  rj  )rk  rl  i£#  )rn  ro  z
2014-09-15)rn  ro  z
2014-08-05r&   z
2014-08-31)r   r¬   r­   r   r   rí   rå   Zngroupsr
   r»   r3   r6   rS   )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sVJ ‚d S )NZAABZabarò   r   )r   r`   r   zGrouping(('A', 'a')))r   r	  rO   r   r   r  r'  Ú__repr__)r   r®   r   r(  r8   r9   r   r   r    Útest_grouping_string_repr–  s    z'TestIteration.test_grouping_string_reprN)
rz   r{   r|   rQ  rT  r_  rh  ri  rq  rs  r   r   r   r    rL  ü  s   	04rL  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rRJ ‚|jjd jsdJ ‚d}tjt	|d�� | 
¡ }W d   ƒ n1 s”0    Y  t ddgddgdœƒ}t ||¡ d S )Nr]   rH  )r`   ra   r-   r`   r«   ra   rž   Frû   r   r   z*A grouping .* was excluded from the resultr   r   rß   r^   )ra   r-   )r   r  r   r   r  r'  Zin_axisr3   r    r¡   r2   r6   )r   rh   r+   r8   r9   r   r   r    Útest_grouping_by_key_is_in_axis¡  s    "&rt  c                  C   sp  t g d¢ddœƒ} tdd�}|  |¡}d}tjt|d�� |j}W d   ƒ n1 sT0    Y  ||ju slJ ‚d}tjt|d�� |j}W d   ƒ n1 sš0    Y  ||ju s²J ‚d	}tjt|d�� |j	}W d   ƒ n1 sà0    Y  ||j	u søJ ‚d
}tjt|d�� |j
 W d   ƒ n1 �s(0    Y  d}tjt|d�� |j W d   ƒ n1 �sb0    Y  d S )Nrò   r   ©r`   ra   r`   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   r3   r    r¡   rå   rÕ   r  rä   ÚaxZindexer)r   Zgrperrh   r+   rp  r   r   r    Útest_grouper_groups±  s*    

$$$&rw  Úattr)Zgroup_indexZresult_indexZgroup_arraylikec                 C   sn   t g d¢g d¢dœƒ}| d¡}| › d�}tjt|d��" t|jjd | ƒ W d   ƒ n1 s`0    Y  d S )Nr]   rH  ru  r`   z is deprecatedr   r   )r   r   r3   r    r¡   r$  r  r'  )rx  r   rh   r+   r   r   r    Útest_depr_grouping_attrsÏ  s
    

ry  ) Ú__doc__Údatetimer   r   ÚnumpyrD   r   Zpandasr¬   r   r   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingr3   Zpandas.core.groupby.grouperr   r   r   r4  rL  rt  rw  r}   r~   ry  r   r   r   r    Ú<module>   s.   ,      J 
 &