U
    ÎZjL‘  ã                   @   s¤   d 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 ddlmZ ddlmZ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S )zG test where we are determining what we are grouping, or getting groups é    N)ÚCategoricalIndexÚ	DataFrameÚIndexÚ
MultiIndexÚSeriesÚ	TimestampÚ
date_range)ÚFloat64IndexÚ
Int64Index)ÚGroupingc                   @   sL   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d„ Z
dS )ÚTestSelectionc              	   C   sn   t ddggddgd�}| d¡}tjtdd�� |dg  W 5 Q R X tjtd	d�� |ddg  W 5 Q R X d S )
Né   é   ÚAÚB©Úcolumnsz"Columns not found: 'C'"©ÚmatchÚCz^[^A]+$)r   ÚgroupbyÚpytestÚraisesÚKeyError)ÚselfÚdfÚg© r   úe/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pandas/tests/groupby/test_grouping.pyÚtest_select_bad_cols   s    
z"TestSelection.test_select_bad_colsc              	   C   s²   t ddddgtdƒtddƒtdddƒgd	�}d
}tjt|d�� | d¡ W 5 Q R X tjt|d�� | ddg¡ W 5 Q R X | d¡}| ¡ }|jjdksžt	‚|jj
dks®t	‚d S )Nr   r   r   é   r   é   r   é   )r   Údataz!Grouper for 'A' not 1-dimensionalr   r   é   )r   Úranger   r   Ú
ValueErrorr   Úcountr   ZnlevelsÚAssertionErrorÚsize)r   r   ÚmsgÚgroupedÚcr   r   r   Ú'test_groupby_duplicated_column_errormsg'   s    
 ÿ
z5TestSelection.test_groupby_duplicated_column_errormsgc              	   C   s„   |  d¡j ¡ }|  d¡d  ¡ }t ||¡ d|d< d}tjt|d��& |  d¡ ¡ }|  d¡ t	j¡}W 5 Q R X t 
||¡ d S )Nr   r   g      ø?Úmeanú!The default value of numeric_onlyr   )r   r   ÚsumÚtmÚassert_series_equalÚassert_produces_warningÚFutureWarningr.   ÚaggÚnpÚassert_frame_equal)r   r   ÚresultÚexpectedr*   r   r   r   Útest_column_select_via_attr8   s    z)TestSelection.test_column_select_via_attrc              
   C   s¼   t ddddddddgddddddddgtj d¡tj d¡tj d¡dœƒ}| d¡d	d
g  ¡ }| d¡|jdd…   ¡ }|jd d …dd	d
gf  d¡ ¡ }t 	||¡ t 	||¡ d S )NÚfooÚbarÚoneÚtwoÚthreer"   ©r   r   r   ÚDÚEr   r   rA   r   r    )
r   r6   ÚrandomÚrandnr   r.   r   Úlocr1   r7   ©r   r   r8   Úresult2r9   r   r   r   Útest_getitem_list_of_columnsD   s    


ûÿ
"z*TestSelection.test_getitem_list_of_columnsc              	   C   sÊ   t tdƒd tj d¡tj d¡tj d¡dœƒ}| d¡|jdd…   ¡ }| d¡ddg  ¡ }|jd d …dddgf  d¡ ¡ }t	 
||¡ t	 
||¡ t	 t¡� | d¡d	  ¡  W 5 Q R X d S )
NÚabcdr   r"   )r   r   r    r!   r   r   r$   r    )r   r    )r   Úlistr6   rC   rD   r   r   r.   rE   r1   r7   r3   r4   rF   r   r   r   Ú!test_getitem_numeric_column_namesW   s    



üÿ"z/TestSelection.test_getitem_numeric_column_namesc              	   C   s,   t  t¡� | d¡d  ¡  W 5 Q R X d S )Nr   )r   rA   )r1   r3   r4   r   r.   ©r   r   r   r   r   Ú#test_getitem_single_list_of_columnsm   s    z1TestSelection.test_getitem_single_list_of_columnsc              
   C   s¤   t ddddddddgddddddddgtj d¡tj d¡tj d¡dœƒ}| d¡d	  ¡ }|jd d …dd	gf  d¡ ¡ }|jd d …d
f }|}t 	||¡ d S )Nr;   r<   r=   r>   r?   r"   r@   r   r   r   )
r   r6   rC   rD   r   r.   rE   Úilocr1   r2   )r   r   r8   Zas_frameZ	as_seriesr9   r   r   r   Útest_getitem_single_columnr   s    


ûÿ
 z(TestSelection.test_getitem_single_columnc                    sN   t ddd„ dD ƒiƒ‰ ˆ  d¡}ˆ  ‡ fdd„¡}|j}|j}t ||¡ d S )NÚTuplesc                 s   s,   | ]$}t j d dd¡D ]}||fV  qqdS ©r$   é   N©r6   rC   Úrandint©Ú.0ÚxÚyr   r   r   Ú	<genexpr>ˆ   s       zJTestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<genexpr>©r   r   c                    s   ˆ j | df S ©Nr   ©rN   ©rW   ©r   r   r   Ú<lambda>Œ   ó    zITestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<lambda>)r   r   Úindicesr1   Úassert_dict_equal©r   ÚgbZ	gb_lambdar9   r8   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:   rH   rK   rM   rO   re   r   r   r   r   r      s   r   c                   @   s  e Zd Zej dejejej	ej
ej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dd„ Zdd„ Zej dddddgddddgd d!„ ed"ƒD ƒg¡d#d$„ ƒZd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zej d3d4d5g¡d6d7„ ƒZ d8d9„ Z!ej d3d4d5g¡d:d;„ ƒZ"d<d=„ Z#ej d>d4ddddddddddg
gd5ddddddddddg
gg¡d?d@„ ƒZ$dAdB„ Z%dCdD„ Z&ej dEdFe'de(j)e*g ƒdG�fdHe'de(j)e+g ddI�dG�fdJe'de(j)e+g ddI�dG�fg¡dKdL„ ƒZ,dMdN„ Z-dOdP„ Z.dQdR„ Z/dSS )TÚTestGroupingÚindexc                 C   s|   t t d¡ dd¡tdƒd�}|t|ƒƒ|_|jtdƒdd� d	d
„ ¡ tt	|j 
¡ ƒƒ|_|jtdƒdd� dd
„ ¡ d S )Né
   rR   r   ZABr   ZabcdeF©Z
group_keysc                 S   s   | S ©Nr   r]   r   r   r   r_   ©   r`   z7TestGrouping.test_grouper_index_types.<locals>.<lambda>c                 S   s   | S rm   r   r]   r   r   r   r_   ¬   r`   )r   r6   ÚarangeÚreshaperJ   Úlenrj   r   ÚapplyÚreversedÚtolist)r   rj   r   r   r   r   Útest_grouper_index_types™   s
    z%TestGrouping.test_grouper_index_typesc           	      C   s   ddl m}m} | ¡ |dd� }t|| ¡ ƒ}tj||gddgd�}ttj	 
ddd	¡|d
�}| ¡  tjddd�tjddd�g¡ ¡ }tdgdd�|_| tjddd�tjddd�g¡ ¡ }t ||¡ | tjddd�tjddd�g¡ ¡ }t ||¡ d S )Nr   )ÚdateÚ	timedeltaé   )Údaysr;   r<   ©Únameséd   éá   ©rj   ÚW©ÚkeyÚfreqÚint64©Údtype©Úlevelr�   r   )Údatetimeru   rv   Útodayr   r   Úfrom_productr   r6   rC   rT   Úreset_indexr   ÚpdÚGrouperr0   r   r   r1   r7   )	r   ru   rv   Zd0ÚdatesZ
date_indexr   r9   r8   r   r   r   Útest_grouper_multilevel_freq®   s$    ÿÿÿÿz)TestGrouping.test_grouper_multilevel_freqc              	   C   s|  t ddddddgddddddgdœƒ}| d	¡}| ¡ }| tjd	d
�¡}| ¡ }t ||¡ | tjd	dd�¡}| ¡ }t ||¡ | dd„ ¡}dddg|d	< |jd d …d	dgf }t ||¡ t ddddddgddddddgddddddgdœƒ}| d	¡ ¡ }| tjd	d
�g¡}| ¡ }t ||¡ | d	dg¡ ¡ }| tjd	d
�tjdd
�g¡}| ¡ }t ||¡ | d	tjdd
�g¡}| ¡ }t ||¡ | tjd	d
�dg¡}| ¡ }t ||¡ t	t
jddd�tjtdƒtdƒtddd�gdddgd�d�}| tjddd�¡ ¡ }t	dgtjtdƒgddd�d�}t ||¡ | tjdd �¡ ¡ }|jdd � ¡ }t ||¡ d S )!Nr   r   r   r$   r    rR   r!   ©r   r   r   ©r€   )r€   Úaxisc                 S   s   |   ¡ S rm   )r0   r]   r   r   r   r_   ß   r`   z8TestGrouping.test_grouper_creation_bug.<locals>.<lambda>r   )r   r   r   r"   r‚   rƒ   ÚabÚ20130101©Úperiodsr=   r>   r?   ry   r}   ÚMr…   é   z
2013-01-31)r�   Úname©r†   )r   r   r0   r‹   rŒ   r1   r7   rq   rE   r   r6   rn   r   r‰   rJ   r%   r   ÚDatetimeIndexr   r2   )r   r   r   r9   r8   Úsr   r   r   Útest_grouper_creation_bugÐ   s\    &
.ÿþþþz&TestGrouping.test_grouper_creation_bugc              	   C   s®  t  ddddddg¡}ddg|_tt d	¡d
d
ddd
d
gdœ|d�}d}tjt|d��6 | 	dt
jdd�g¡ ¡ }| ¡  	ddg¡ ¡ }W 5 Q R X t ||¡ tjt|d��6 | 	t
jdd�dg¡ ¡ }| ¡  	ddg¡ ¡ }W 5 Q R X t ||¡ | d¡}tjt|d��6 | 	dt
jdd�g¡ ¡ }| ¡  	ddg¡ ¡ }W 5 Q R X t ||¡ tjt|d��6 | 	t
jdd�dg¡ ¡ }| ¡  	ddg¡ ¡ }W 5 Q R X t ||¡ d S )N)Úar   )r�   r   )r�   r$   ©Úbr   )rŸ   r   )rŸ   r$   ÚouterÚinnerr!   r=   r>   r�   r}   r/   r   r   r™   )r   Úfrom_tuplesrz   r   r6   rn   r1   r3   r4   r   r‹   rŒ   r.   rŠ   r7   )r   ÚidxZdf_multir*   r8   r9   Z	df_singler   r   r   Útest_grouper_column_and_index  s4    ÿ
þ  
  z*TestGrouping.test_grouper_column_and_indexc                 C   sz   ddg}t jddddg|d�}tt d¡ d	d
¡|d�}|j|d� ¡ }| ¡  |¡ ¡ }|j	 
tj¡|_	t ||¡ d S )NrW   rX   ©r   r   ©r   r   )r$   r    )rR   r!   ry   é   éÿÿÿÿr$   r}   r™   )r   r¢   r   r6   rn   ro   r   r.   rŠ   r   Zastyper‚   r1   r7   )r   Z	idx_namesr£   r   Z	by_levelsZ
by_columnsr   r   r   Útest_groupby_levels_and_columns=  s    z,TestGrouping.test_groupby_levels_and_columnsc              
   C   s  ddddg}ddg}t  ddddgddddgddddgddddgddddggt¡}t||dd�}t||d�}|jdd|d	� ¡ }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�}|jdd|d	� ¡ }t|j	|	d�}
t ||
¡ d S )Nr   r   r   r   T)Ú
categoriesÚordered)r#   r   r   )r‘   r†   Úobservedr    r}   )r#   rj   )
r6   ÚarrayÚintr   r   r   r0   r1   r7   ÚT)r   r¬   r   rª   r#   Zcat_columnsr   r8   Zexpected_dataZexpected_columnsr9   r   r   r   Ú*test_groupby_categorical_index_and_columnsK  s*    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jdd�tjddd�g¡ ¡ }t dddddddg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>   ry   r}   r™   r–   r…   é   r—   é   r$   )r�   r•   )r   r   r‰   rJ   r   r   r‹   rŒ   r0   r1   r7   ©r   r   r8   r9   r   r   r   Ú#test_grouper_getting_correct_binnerb  s$     ÿþÿþþz0TestGrouping.test_grouper_getting_correct_binnerc                 C   s    t | d¡jƒddgkst‚d S )Nr   r<   r;   )Úsortedr   Úgrouperr(   rL   r   r   r   Útest_grouper_itery  s    zTestGrouping.test_grouper_iterc              	   C   s(   t jtdd�� | g ¡ W 5 Q R X d S )NzNo group keys passed!r   )r   r   r&   r   rL   r   r   r   Útest_empty_groups|  s    zTestGrouping.test_empty_groupsc              	   C   sP   |  d¡}d}tjt|d�� |  |j¡ ¡ }| ¡ }W 5 Q R X t ||¡ d S )Nr   r/   r   )r   r1   r3   r4   r·   r.   r7   )r   r   r+   r*   r8   r9   r   r   r   Útest_groupby_grouper�  s    
z!TestGrouping.test_groupby_grouperc                 C   sä   ddl m} |ddiƒ}| ddi¡ t¡}| dg¡ t¡}t ||¡ |dddd	gtd
ƒd�}dddddœ}| |¡ ¡ }| |¡ t	j¡}| ddddg¡ ¡ }| ddddg¡ ¡ }t ||¡ t ||¡ t ||¡ d S )Nr   )r   ZT1rR   ZT2ç      ð?ç       @g      @g      @rI   r}   r   )r�   rŸ   r,   Úd)
Úpandasr   r   r5   r0   r1   r2   rJ   r.   r6   )r   r   r›   r8   r9   ÚmappingrG   Z	expected2r   r   r   Útest_groupby_dict_mappingŠ  s    z&TestGrouping.test_groupby_dict_mappingr   r   r   r$   r�   rŸ   r,   r½   c                 C   s   g | ]}t d dd| ƒ‘qS )iå  é   r—   )r   )rV   Úir   r   r   Ú
<listcomp>£  s     zTestGrouping.<listcomp>r    c                 C   s\   |ddddg|d�}t ddddg|dd�}| |¡ ¡ }|ddgƒ}d|j_t ||¡ d S )	Nr   r   r$   r    r}   r   )r�   r�   )rj   r˜   )r   r   Úlastrj   r˜   r1   Zassert_equal)r   Zframe_or_seriesrj   ÚobjÚgroupsr8   r9   r   r   r   Ú$test_groupby_series_named_with_tuplež  s    
z1TestGrouping.test_groupby_series_named_with_tuplec              	   C   sR   t dddd�}ttj d¡|d�}d}tjt|d�� | dd	„ ¡ W 5 Q R X d S )
Nz01-Jan-2013r§   ZMS©r•   r�   r}   z4Grouper result violates len\(labels\) == len\(data\)r   c                 S   s   | dd… S )Nr   r!   r   r�   r   r   r   r_   ¾  r`   zDTestGrouping.test_groupby_grouper_f_sanity_checked.<locals>.<lambda>)	r   r   r6   rC   rD   r   r   r(   r   )r   r�   Útsr*   r   r   r   Ú%test_groupby_grouper_f_sanity_checked¯  s
    z2TestGrouping.test_groupby_grouper_f_sanity_checkedc              	   C   s6   d}t jt|d�� t|j|ddg ƒ W 5 Q R X d S )NzEGrouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensionalr   r   )r   r   r&   r   rj   )r   r   r*   r   r   r   Ú%test_grouping_error_on_multidim_inputÀ  s    z2TestGrouping.test_grouping_error_on_multidim_inputc                 C   sX   t dddgdddgddd	ggƒ}t d
ddg¡|_|jdddgd� ¡ }t ||¡ d S )Nr   r   r$   r    rR   r!   rÁ   r"   é	   rZ   r¥   )r   r   r   ©r‘   r†   )r   r   r¢   r   r   Úfirstr1   r7   )r   r   r8   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   r0   r1   r7   Z
sort_index)r   Úmframer8   r9   r   r   r   Útest_multiindex_negative_levelÏ  s    z+TestGrouping.test_multiindex_negative_levelc                 C   s4   t  t|jƒ¡|_|jddd�d  dt ji¡ d S )Nr   F)Zas_indexr   ÚQ)r6   rn   rp   r   r   r5   r.   rL   r   r   r   Ú&test_multifunc_select_col_integer_colsá  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sJt‚| d	g¡j}|d dgksjt‚tddgd
dgg|d�}| d¡j}| d	g¡j}||ks¨t‚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   r¢   r   r   rÆ   r(   r1   rb   )r   ÚlstZmidxr   r+   r9   r8   r   r   r   Ú#test_multiindex_columns_empty_levelç  s    
z0TestGrouping.test_multiindex_columns_empty_levelc              	   C   sø   t ddddgddddgddddggt dddd	gddddgg¡d
�}| dg¡j}| d¡j}t ||¡ t |jt dddd	gddddgg¡d
�}| dg¡j}| d¡j}t ||¡ t |jdddd	gd
�}| dg¡j}| d¡j}t ||¡ d S )Nr   r   r$   r    rR   r!   r�   rŸ   r,   r   rž   r½   Úe)rŸ   r½   )r�   r½   )rŸ   rÛ   )r   r   Úfrom_arraysr   rÆ   r1   rb   rÖ   )r   r   r9   r8   Zdf2Zdf3r   r   r   Útest_groupby_multiindex_tupleÿ  s(     þÿþz*TestGrouping.test_groupby_multiindex_tupleÚsortTFc              	   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€t‚|jjdks�t‚t ||¡ t ||	¡ |jj|jj	d ksÀt‚|jj|jj	d ksØt‚|jd|d� ¡ }|jd|d� ¡ }t ||¡ t ||	¡ |j
jdd|d� ¡ }|j
jdd|d� ¡ }t ||j
¡ t ||	j
¡ d}
tjt|
d	�� |jdd
� W 5 Q R X d S )Nr   ©r†   rÞ   r   rÎ   )rÞ   rÐ   )r†   r‘   rÞ   z2level > 0 or level < -1 only valid with MultiIndexr   r™   )rŠ   r   r0   rÖ   rj   r˜   r(   r1   r7   rz   r¯   r   r   r&   )r   rÞ   rÒ   r   ÚframeZ	deleveledZresult0Úresult1Z	expected0Z	expected1r*   r   r   r   Útest_groupby_level  s2    zTestGrouping.test_groupby_levelc              	   C   s€   t dgd dgd  tdƒdœƒ d¡}|dkr6|j}|jd|d� d	| |¡› �}tjt|d
�� |jd|d� W 5 Q R X d S )Nr   r$   r   r!   )ÚexpZvar1rã   )r   r   )r†   r‘   z&level name foo is not the name of the r   r;   )	r   r%   Ú	set_indexr¯   r   Z_get_axis_namer   r   r&   )r   r‘   r   r*   r   r   r   Útest_groupby_level_index_namesA  s    "ÿz+TestGrouping.test_groupby_level_index_namesc                 C   s  t ddgddddggddddddddgddddddddggd�}tt d¡|d�}|jd|d� ¡ }td	d
gddgd�}t ||¡ t ddgddddggddddddddgddddddddggd�}tt d¡|d�}|jd|d� ¡ }td	dgddgd�}t ||¡ d S )Nr   r   r   r$   )ÚlevelsÚcodesg       @r}   rß   g      @g      6@r¨   g      2@g        r»   )r   r   r6   rn   r   r0   r1   r2   )r   rÞ   rj   r›   r8   r9   r   r   r   Útest_groupby_level_with_nasM  s     &þ&þz(TestGrouping.test_groupby_level_with_nasc              	   C   sZ   |}d}t jt|d�� | ¡  W 5 Q R X d}t jt|d�� |jd d d� W 5 Q R X d S )Nz*You have to supply one of 'by' and 'level'r   )Zbyr†   )r   r   Ú	TypeErrorr   )r   rÒ   rà   r*   r   r   r   Útest_groupby_argsf  s    zTestGrouping.test_groupby_argszsort,labelsc                 C   s4   |j d|d�}t |tj¡}t |jjd |¡ d S )Nr   rß   )r   r6   r­   Úintpr1   Úassert_almost_equalr·   rç   )r   rÞ   ÚlabelsrÒ   r+   Ú
exp_labelsr   r   r   Útest_level_preserve_orderr  s    	z&TestGrouping.test_level_preserve_orderc                 C   sN   |  |j d¡¡}tjddddddddddg
tjd�}t |jj	d |¡ d S )Nr   r   r   r$   rƒ   )
r   rj   Zget_level_valuesr6   r­   rë   r1   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jddd�}| |g¡}td	ƒtt	t
d
ƒƒƒi}t |j|¡ | |¡}td	ƒdi}t |j|¡ d S )Nru   z1/1/2011im  rA   rÈ   r¨   ZASr   z
2011-01-01il  )r   r   r‹   ZNaTrN   rŒ   r   r   r   rJ   r%   r1   rb   rÆ   )r   r   r·   r8   r9   r   r   r   Útest_list_grouper_with_nat„  s    
z'TestGrouping.test_list_grouper_with_natzfunc,expectedZ	transform)r˜   r„   rj   r5   ©r˜   rq   c                 C   sB   t g g dœƒ}|jddd�}t|d |ƒdd„ ƒ}t ||¡ d S )Nr¦   r   Frl   r   c                 S   s   | S rm   r   r]   r   r   r   r_   ¬  r`   z>TestGrouping.test_evaluate_with_empty_groups.<locals>.<lambda>)r   r   Úgetattrr1   r2   )r   Úfuncr9   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 ||¡ t|jjƒdks@t‚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 t‚| |¡jjdgks¸t‚d S )Nr˜   Úfloat64)r˜   r„   r   r   rƒ   r   )r   r   r.   r1   r2   rp   r·   Ú	groupingsr(   Zassert_numpy_array_equalZ
group_infor6   r­   r„   rë   rz   )r   r›   Úgrr8   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dddg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 )NrW   rk   é   r   r   r   r   r™   Úobjectrƒ   rö   )ræ   rç   rz   r‚   )r#   rj   r   r„   )
r   r6   Únanrä   r   r0   r   r   r1   r7   r´   r   r   r   Ú%test_groupby_level_index_value_all_naÆ  s$     ÿþýø
z2TestGrouping.test_groupby_level_index_value_all_nac                 C   st   t dddgdddggdddgd	�}| ddg¡}||jd
k  }| d¡ ¡ }t ddgtg dd�d�}t ||¡ d S )Né{   r�   r»   rŸ   r¼   ÚidÚcategoryÚvaluer   r   rö   rò   )r„   r   rj   )r   rä   r  r   r0   r
   r1   r7   )r   r   Úemptyr8   r9   r   r   r   Ú#test_groupby_multiindex_level_emptyØ  s     ÿ  
ÿz0TestGrouping.test_groupby_multiindex_level_emptyN)0rf   rg   rh   r   ÚmarkZparametrizer1   ZmakeFloatIndexZmakeStringIndexZmakeIntIndexZmakeDateIndexZmakePeriodIndexrt   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   r6   rö   r   r	   rõ   rù   rý   r  r   r   r   r   ri   ˜   s†   ûþ

"F'	

ýþ
	

(
þþ
þþþ÷þ

ri   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 ddddddg¡ddddddgddddd	d
gdœƒ}| d¡}t|jƒd }| |¡}| t|ƒ ¡ ¡}| t	t|ƒƒ¡}t
 ||¡ t
 ||¡ | ddg¡}t|jƒd }| |¡}| t|d ƒ ¡ |d f¡}| t	t|d ƒƒ|d f¡}t
 ||¡ t
 ||¡ d}tjt|d�� | d¡ W 5 Q R X tjt|d�� | d¡ W 5 Q R X d}tjt|d�� | d¡ W 5 Q R X d S )Nz10-Oct-2013z11-Oct-2013r;   r<   r   r   r$   r    rR   r!   )ÚDATEÚlabelZVALr  r   r  z<must supply a tuple to get_group with multiple grouping keysr   zHmust supply a same-length tuple to get_group with multiple grouping keys)r;   r<   Úbaz)r   r‹   Úto_datetimer   rJ   rÆ   Ú	get_groupr   Zto_pydatetimeÚstrr1   r7   r   r   r&   )r   r   r   r€   rá   rG   Zresult3r*   r   r   r   Útest_get_groupë  sH    úÿ
ôÿ


zTestGetGroup.test_get_groupc              	   C   sœ   t ddddgƒ}ddddg}|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 5 Q R X d S )Nr$   r   rÁ   r!   r   rR   rk   é   )r¬   r}   z"Interval\(10, 15, closed='right'\)r   )r   r   r‹   Úcutr
  ZIntervalr1   r7   r   r   r   )r   r¬   r½   Zbinsr   r8   r9   r*   r   r   r   Útest_get_group_empty_bins  s    z&TestGetGroup.test_get_group_empty_binsc                 C   sÂ   t ddddggdgd�j}| d¡}t dddgiddgd�}| d¡}t ||¡ t ddddg¡}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¦   Zidsr}   r   r   ú
2010-01-01z
2010-01-02c                 S   s   g | ]
}|f‘qS r   r   )rV   rW   r   r   r   rÃ   3  s     z@TestGetGroup.test_get_group_grouped_by_tuple.<locals>.<listcomp>)r  )r   r¯   r   r
  r1   r7   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|j ¡ ƒd ¡}| t|j ¡ ƒd ¡}t ||¡ d S )NrP   c                 s   s,   | ]$}t j d dd¡D ]}||fV  qqdS rQ   rS   rU   r   r   r   rY   <  s       zKTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<genexpr>rZ   c                    s   ˆ j | df S r[   r\   r]   r^   r   r   r_   @  r`   zJTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<lambda>r   )r   r   r
  rJ   rÆ   Úkeysr1   r7   rc   r   r^   r   Ú+test_get_group_grouped_by_tuple_with_lambda9  s    ÿ
z8TestGetGroup.test_get_group_grouped_by_tuple_with_lambdac                 C   sL   t  d¡}d}t||td�}t jdd�}| |¡}tt|ƒd ƒd ksHt‚d S )Nr   rƒ   rA   ©r�   )	r‹   rš   r   rû   rŒ   r   ÚnextÚiterr(   )r   rj   r#   Zseriesr·   r+   r   r   r   Útest_groupby_with_emptyG  s    

z$TestGetGroup.test_groupby_with_emptyc                 C   s’   t dtdƒiƒ}t | d¡ d¡|jddg ¡ t tdddgdd�d�}t | d¡ ¡ |¡ t | d¡ 	¡ |¡ t | d¡ 
d	¡|¡ d S )
Nr�   Zabssbabr   rR   rŸ   r›   rò   r}   r   )r   rJ   r1   r7   r   r
  rN   r   r'   r0   Znth)r   r   rã   r   r   r   Útest_groupby_with_single_columnO  s    "z,TestGetGroup.test_groupby_with_single_columnc                 C   s|   t ddddgddddgddddggd	d
ddgd�}| d	d
g¡}| d	d
dg¡ ¡ }|jd dksft‚|jd dksxt‚d S )Nr;   r<   r   r   r   r  r   r$   rÎ   rÐ   Úthirdr=   r   )r;   r<   r   )r;   r  r   )r   rä   r   r)   rE   r(   rL   r   r   r   Útest_gb_key_len_equal_axis_lenX  s     
þz+TestGetGroup.test_gb_key_len_equal_axis_lenN)
rf   rg   rh   r  r  r  r  r  r  r  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 )ÚTestIterationc                 C   sÄ   |  dg¡}|j}||jks t‚|j ¡ D ]"\}}|j| d |k ¡ s*t‚q*|  ddg¡}|j}||jkspt‚|j ¡ D ]D\}}|j| d |d k ¡ s t‚|j| d |d k ¡ szt‚qzd S )Nr   r   r   r   )r   rÆ   r(   ÚitemsrE   Úall)r   r   r+   rÆ   ÚkÚvr   r   r   Útest_groupsk  s    zTestIteration.test_groupsc                 C   s,   |  dd„ dd„ g¡}|jjd D ]}q"d S )Nc                 S   s   |   ¡ S rm   )Úweekdayr]   r   r   r   r_   ~  r`   z9TestIteration.test_grouping_is_iterable.<locals>.<lambda>c                 S   s   | j S rm   )Úyearr]   r   r   r   r_   ~  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 ddddddg¡}t ddddddg¡}| ||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Ât‚||	ksÎt‚t 	|
|¡ q˜d S )Nr!   r�   rŸ   Ú1Ú2r   r   r   r    r$   rR   )
r   r6   rn   r­   r   rJ   Ú	enumerater(   r1   r2   )r   r›   Úk1Úk2r+   Úiteratedr9   rÂ   r=   r>   r?   Úe1Úe2Úe3r   r   r   Útest_multi_iter„  s    üzTestIteration.test_multi_iterc                 C   s¼  t  ddddddg¡}t  ddddddg¡}tt j d¡t j d¡||dœddd	d
ddg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 ]F\}	\\}
}}||	 \}}}||
k�st
‚||k�st
‚t ||¡ qÚt  ddddddg¡|d< t  ddddddg¡|d< | ddg¡}dd„ |D ƒ}t|ƒdk�s„t
‚| dddg¡ ¡ }|jjddd�}|D ]
\}}�q¬d S )NrŸ   r�   r%  r&  r!   )Zv1Zv2r(  r)  r=   r>   r?   ÚfourÚfiveÚsixr}   r(  r)  r    r$   rR   r   r   r   c                 S   s   i | ]\}}||“qS r   r   )rV   r€   Úgpr   r   r   Ú
<dictcomp>µ  s      z7TestIteration.test_multi_iter_frame.<locals>.<dictcomp>r   r   r   r¦   rÍ   )r6   r­   r   rC   rD   r   rJ   rj   rE   r'  r(   r1   r7   rp   r.   r¯   )r   Zthree_groupr(  r)  r   r+   r*  r£   r9   rÂ   r=   r>   r?   r+  r,  r-  rÆ   Zthree_levelsr€   Úgroupr   r   r   Útest_multi_iter_frame˜  s8    þü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   )Údictr  r   rL   r   r   r   Útest_dictify¾  s    "zTestIteration.test_dictifyc                 C   s  t ddgddgdœt ddg¡d�}| tjdd	�d
g¡}t|jƒdksLt‚|jdksZt‚t	dƒdf|jkspt‚t	dƒdf|jks†t‚| 
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dgdddgdœt dddg¡d�}| tjdd	�d
g¡}t|jƒdk�s6t‚|jdk�sFt‚t	dƒdf|jk�s^t‚t	dƒdf|jk�svt‚| 
t	dƒdf¡}t ||jddgd d …f ¡ | 
t	dƒdf¡}t ||jdgd d …f ¡ t dddgdddgdœt dddg¡d�}| tjdd	�d
g¡}t|jƒdk�s(t‚|jdk�s8t‚t	dƒdf|jk�sPt‚t	dƒdf|jk�sht‚t	dƒdf|jk�s€t‚| 
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ÚstartiÒ  i.  )ÚeventZchangez
2014-09-10z
2013-10-10r}   r–   r  r9  r   z
2014-09-30z
2013-10-31r   r   i£#  z
2014-09-15z
2014-08-05r$   z
2014-08-31)r   r‹   rš   r   rŒ   rp   rÆ   r(   Zngroupsr   r
  r1   r7   rN   )r   r   r+   Úresr   r   r   Útest_groupby_with_small_elemÆ  sT    þþþz*TestIteration.test_groupby_with_small_elemc                 C   s\   t  tdƒtdƒg¡}tdddgg|d�}| |d ¡}|jjd  ¡ }d	}||ksXt‚d S )
NZAABZabar   r   r$   r   )r   r�   r   zGrouping(('A', 'a')))	r   rÜ   rJ   r   r   r·   r÷   Ú__repr__r(   )r   Úmir   rø   r8   r9   r   r   r   Útest_grouping_string_reprú  s    z'TestIteration.test_grouping_string_reprN)
rf   rg   rh   r!  r$  r.  r5  r7  r;  r>  r   r   r   r   r  j  s   	&4r  )Ú__doc__Únumpyr6   r   r¾   r‹   r   r   r   r   r   r   r   Zpandas._testingZ_testingr1   Zpandas.core.apir	   r
   Zpandas.core.groupby.grouperr   r   ri   r  r  r   r   r   r   Ú<module>   s    $	}    V 