U
    ¾mœd�—  ã                   @   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 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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)Ú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   ú[/home/sam/Atlas/atlas_env/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   st   |  d¡j ¡ }|  d¡d  ¡ }t ||¡ d|d< |  d¡jdd�}|  d¡dddg  tj¡}t ||¡ d S )Nr   r   g      ø?ÚmeanT©Znumeric_onlyÚD)	r   r   ÚsumÚtmÚassert_series_equalr/   ÚaggÚnpÚ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 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   r1   ÚEr   r   r1   r   r!   )
r   r6   ÚrandomÚrandnr   r/   r   Úlocr3   r7   ©r   r   r9   Úresult2r:   r   r   r   Útest_getitem_list_of_columnsE   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jtd	d
�� | d¡d  ¡  W 5 Q R X d S )NÚabcdr   r#   )r   r   r!   r"   r   r   r%   r!   ú"Cannot subset columns with a tupler   )r   r!   )r   Úlistr6   rC   rD   r   r   r/   rE   r3   r7   r   r   r'   rF   r   r   r   Ú!test_getitem_numeric_column_namesX   s    



üÿ"z/TestSelection.test_getitem_numeric_column_namesc              	   C   s0   t jtdd�� | d¡d  ¡  W 5 Q R X d S )NrJ   r   r   )r   r1   )r   r   r'   r   r/   ©r   r   r   r   r   Ú+test_getitem_single_tuple_of_columns_raisesn   s    z9TestSelection.test_getitem_single_tuple_of_columns_raisesc              
   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#   rA   r   r   r   )
r   r6   rC   rD   r   r/   rE   Úilocr3   r4   )r   r   r9   Zas_frameZ	as_seriesr:   r   r   r   Útest_getitem_single_columns   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   ©rO   ©rX   ©r   r   r   Ú<lambda>�   ó    zITestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<lambda>)r   r   Úindicesr3   Úassert_dict_equal©r   ÚgbZ	gb_lambdar:   r9   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   rL   rN   rP   rf   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)dG�fdHe'de(j)e*g e(j)ddI�dJ�fdKe'de(j)e*g e(j)ddI�dJ�fg¡dLdM„ ƒZ+dNdO„ Z,dPdQ„ Z-dRdS„ Z.dTS )UÚ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é
   rS   r   ZABr   ZabcdeF©Z
group_keysc                 S   s   | S ©Nr   r^   r   r   r   r`   ª   ra   z7TestGrouping.test_grouper_index_types.<locals>.<lambda>c                 S   s   | S rn   r   r^   r   r   r   r`   ­   ra   )r   r6   ÚarangeÚreshaperK   Úlenrk   r   ÚapplyÚreversedÚtolist)r   rk   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	�}| 
¡  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=   ©Únamesr   éd   éá   ©rk   ÚW©ÚkeyÚfreqÚint64©Údtype©Úlevelr€   r   )r   Útodayr   r   r   Úfrom_productr   r6   rC   rU   Úreset_indexr   r   r2   r   r   r3   r7   )r   Zd0ÚdatesZ
date_indexr   r:   r9   r   r   r   Útest_grouper_multilevel_freq¯   s"    ÿÿÿÿz)TestGrouping.test_grouper_multilevel_freqc              	   C   sj  t ddddddgddddddgdœƒ}| d	¡}| ¡ }| td	d
�¡}| ¡ }t ||¡ | t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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 ||¡ tt	j
ddd�tjtdƒtdƒtddd�gdddgd�d�}| tddd�¡ ¡ }tdgtjtdƒgddd�d�}t ||¡ | tdd �¡ ¡ }|jdd � ¡ }t ||¡ d S )!Nr   r   r   r%   r!   rS   r"   ©r   r   r   ©r   )r   Úaxisc                 S   s   |   ¡ S rn   )r2   r^   r   r   r   r`   Ù   ra   z8TestGrouping.test_grouper_creation_bug.<locals>.<lambda>r   )r   r   r   r#   r�   r‚   ÚabÚ20130101©Úperiodsr>   r?   r@   rx   r|   ÚMr„   é   z
2013-01-31)r€   Úname©r…   )r   r   r2   r   r3   r7   rr   rE   r	   r6   ro   r   r‡   rK   r&   r   ÚpdÚDatetimeIndexr
   r4   )r   r   r   r:   r9   Úsr   r   r   Útest_grouper_creation_bugË   s\    &
.ÿþþþz&TestGrouping.test_grouper_creation_bugc                 C   sZ  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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)Úar   )rš   r   )rš   r%   ©Úbr   )rœ   r   )rœ   r%   ÚouterÚinnerr"   r>   r?   r‹   r|   r   r•   Tr0   )r   Úfrom_tuplesry   r   r6   ro   r   r   r/   rˆ   r3   r7   )r   ÚidxZdf_multir9   r:   Z	df_singler   r   r   Útest_grouper_column_and_index  s:    ÿ
þÿÿ
ÿÿÿÿ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 )NrX   rY   ©r   r   ©r   r   )r%   r!   )rS   r"   rx   é   éÿÿÿÿr%   r|   r•   )r   rŸ   r   r6   ro   rp   r   r/   rˆ   r   Zastyper�   r3   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)Ú
categoriesZordered)r$   r   r   )r�   r…   Úobservedr!   r|   )r$   rk   )
r6   ÚarrayÚintr   r   r   r2   r3   r7   ÚT)r   r¨   r   r§   r$   Zcat_columnsr   r9   Zexpected_dataZexpected_columnsr:   r   r   r   Ú*test_groupby_categorical_index_and_columnsL  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dd�t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?   rx   r|   r•   r’   r„   é   r“   é   r%   )r€   r‘   )
r   r   r‡   rK   r   r   r   r2   r3   r7   r8   r   r   r   Ú#test_grouper_getting_correct_binnerc  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)   rM   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   rM   r   r   r   Útest_empty_groups|  s    zTestGrouping.test_empty_groupsc                 C   s:   |  d¡}|  |j¡jdd�}|jdd�}t ||¡ d S )Nr   Tr0   )r   r²   r/   r3   r7   )r   r   r,   r9   r:   r   r   r   Útest_groupby_grouper�  s    
z!TestGrouping.test_groupby_grouperc                 C   sà   t ddiƒ}| ddi¡ t¡}| dg¡ t¡}t ||¡ t ddddgtdƒd	�}d
d
dddœ}| |¡ ¡ }| |¡ tj¡}tj	d
d
ddgtj
d�}| |¡ ¡ }| |¡ ¡ }t ||¡ t ||¡ t ||¡ d S )NZT1rS   ZT2ç      ð?ç       @g      @g      @rI   r|   r   r   )rš   rœ   r-   Údr‚   )r	   r   r5   r2   r3   r4   rK   r/   r6   r©   r�   )r   r˜   r9   r:   ÚmappingrG   Zexp_keyZ	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
   )rW   Ú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š   )rk   r”   )r	   r   Úlastrk   r”   r3   Zassert_equal)r   Zframe_or_seriesrk   ÚobjÚgroupsr9   r:   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`   »  ra   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   rk   )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!   rS   r"   r»   r#   é	   r[   r¢   )r   r   r   ©r�   r…   )r   r   rŸ   r   r   Úfirstr3   r7   )r   r   r9   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   r2   r3   r7   Z
sort_index)r   Úmframer9   r:   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   ro   rq   r   r   r5   r/   rM   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)   r3   rc   )r   ÚlstZmidxr   r,   r:   r9   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!   rS   r"   rš   rœ   r-   r   r›   r¸   Úe)rœ   r¸   )rš   r¸   )rœ   rÖ   )r   r   Úfrom_arraysr   rÀ   r3   rc   rÑ   )r   r   r:   r9   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   r2   rÑ   rk   r”   r)   r3   r7   ry   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_names=  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   ro   r   r2   r3   r4   )r   rÙ   rk   r˜   r9   r:   r   r   r   Útest_groupby_level_with_nasI  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_argsb  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©   Úintpr3   Úassert_almost_equalr²   râ   )r   rÙ   ÚlabelsrÌ   r,   Ú
exp_labelsr   r   r   Útest_level_preserve_ordern  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   rk   Zget_level_valuesr6   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ASr~   z
2011-01-01il  )r   r   r–   ZNaTrO   r   r   r
   r   rK   r&   r3   rc   rÀ   )r   r   r²   r9   r:   r   r   r   Útest_list_grouper_with_nat€  s    
z'TestGrouping.test_list_grouper_with_natzfunc,expectedZ	transform©r”   rƒ   r5   ©rƒ   r”   )r”   rƒ   rk   rr   c                 C   sB   t g g dœƒ}|jddd�}t|d |ƒdd„ ƒ}t ||¡ d S )Nr£   r   Frm   r   c                 S   s   | S rn   r   r^   r   r   r   r`   ¬  ra   z>TestGrouping.test_evaluate_with_empty_groups.<locals>.<lambda>)r   r   Úgetattrr3   r4   )r   Úfuncr:   r   r   r9   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sTt‚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”   Úfloat64rí   r‚   r   r   r   )r	   r   r/   Zset_axisr   r6   ræ   r3   r4   rq   r²   Ú	groupingsr)   Zassert_numpy_array_equalZ
group_infor©   rƒ   ry   )r   r˜   Úgrr9   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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 )NrX   rl   é   r   r   r   r   r•   Úobjectr‚   rò   )rá   râ   ry   r�   )r$   rk   r   rƒ   )
r   r6   Únanrß   r   r2   r   r   r3   r7   r8   r   r   r   Ú%test_groupby_level_index_value_all_naÇ  s$     ÿþýø
z2TestGrouping.test_groupby_level_index_value_all_nac                 C   sx   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 tjdd�d�}t 	||¡ d S )Né{   rš   r¶   rœ   r·   ÚidÚcategoryÚvaluer   r   rò   rî   )rƒ   r   rk   )
r   rß   rý   r   r2   r   r6   r�   r3   r7   )r   r   Úemptyr9   r:   r   r   r   Ú#test_groupby_multiindex_level_emptyÙ  s     ÿýz0TestGrouping.test_groupby_multiindex_level_emptyN)/rg   rh   ri   r   ÚmarkZparametrizer3   ZmakeFloatIndexZmakeStringIndexZmakeIntIndexZmakeDateIndexZmakePeriodIndexru   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   rj   ™   s–   ûþ

E.

ýþ
		
(
þþ
þ  ÿþ  ÿþõþ

rj   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!   rS   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   rK   rÀ   Ú	get_groupr
   Zto_pydatetimeÚstrr3   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   rS   rl   é   )r¨   r|   z"Interval\(10, 15, closed='right'\)r   )r   r   r–   Úcutr  ZIntervalr3   r7   r   r   r   )r   r¨   r¸   Zbinsr   r9   r:   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   )rW   rX   r   r   r   r½   5  s     z@TestGetGroup.test_get_group_grouped_by_tuple.<locals>.<listcomp>)r  )r   r«   r   r  r3   r7   r–   r  )r   r   rô   r:   r9   Ú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 )NrQ   c                 s   s,   | ]$}t j d dd¡D ]}||fV  qqdS rR   rT   rV   r   r   r   rZ   >  s       zKTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<genexpr>r[   c                    s   ˆ j | df S r\   r]   r^   r_   r   r   r`   B  ra   zJTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<lambda>r   )r   r   r  rK   rÀ   Úkeysr3   r7   rd   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 ksFt‚d S )Nr   r‚   r1   ©r€   )	r–   r—   r	   r÷   r   r   ÚnextÚiterr)   )r   rk   r$   Zseriesr²   r,   r   r   r   Útest_groupby_with_emptyI  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�g d�}t | d¡ ¡ |¡ t | d¡ 	¡ |¡ |jd	d
dg }t | d¡ 
d¡|¡ d S )Nrš   Zabssbabr   rS   rœ   r˜   )r”   )rk   r   r%   r!   r   )r   rK   r3   r7   r   r  rO   r   r(   r2   Znth)r   r   rÞ   r   r   r   Útest_groupby_with_single_columnQ  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)   rM   r   r   r   Útest_gb_key_len_equal_axis_len\  s     
þz+TestGetGroup.test_gb_key_len_equal_axis_lenN)
rg   rh   ri   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_groupso  s    zTestIteration.test_groupsc                 C   s,   |  dd„ dd„ g¡}|jjd D ]}q"d S )Nc                 S   s   |   ¡ S rn   )Úweekdayr^   r   r   r   r`   ‚  ra   z9TestIteration.test_grouping_is_iterable.<locals>.<lambda>c                 S   s   | j S rn   )Úyearr^   r   r   r   r`   ‚  ra   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%   rS   )
r	   r6   ro   r©   r   rK   Ú	enumerater)   r3   r4   )r   r˜   Úk1Úk2r,   Úiteratedr:   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%   rS   r   r   r   c                 S   s   i | ]\}}||“qS r   r   )rW   r   Úgpr   r   r   Ú
<dictcomp>¼  s      z7TestIteration.test_multi_iter_frame.<locals>.<dictcomp>r   r   r   r£   rÇ   )r6   r©   r   rC   rD   r   rK   rk   rE   r#  r)   r3   r7   rq   r/   r«   )r   Zthree_groupr$  r%  r   r,   r&  r    r:   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   rM   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dd	�d
g¡}t|jƒdksJt‚|jdksXt‚t	dƒdf|jksnt‚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dd	�d
g¡}t|jƒdk�s2t‚|jdk�sBt‚t	dƒdf|jk�sZt‚t	dƒdf|jk�srt‚| 
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dd	�d
g¡}t|jƒdk�s"t‚|jdk�s2t‚t	dƒdf|jk�sJt‚t	dƒdf|jk�sbt‚t	dƒdf|jk�szt‚| 
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  r5  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   rq   rÀ   r)   Zngroupsr
   r  r3   r7   rO   )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×   rK   r   r   r²   ró   Ú__repr__r)   )r   Úmir   rô   r9   r:   r   r   r   Útest_grouping_string_repr  s    z'TestIteration.test_grouping_string_reprN)
rg   rh   ri   r  r   r*  r1  r3  r7  r:  r   r   r   r   r  n  s   	)4r  c                  C   s˜   t dddgdddgdddgdœƒ d¡} | jtdd�td	d
�gdd�}|jjd jrXt‚|jjd jsjt‚| ¡ }t ddgddgdœƒ}t	 
||¡ d S )Nr   r   r%   r!   rS   )rš   rœ   r-   rš   r•   rœ   rŒ   FrÎ   r   r»   )rœ   r-   )r   rß   r   r   r²   ró   Zin_axisr)   r2   r3   r7   )r   re   r9   r:   r   r   r   Útest_grouping_by_key_is_in_axis  s    (r;  c               	   C   s
  t dddgddœƒ} tdd�}|  |¡}d}tjt|d�� |j}W 5 Q R X ||jksZt‚d	}tjt|d�� |j}W 5 Q R X ||jksŒt‚d
}tjt|d�� |j	}W 5 Q R X ||j	ks¾t‚d}tjt|d�� |j
 W 5 Q R X d}tjt|d�� |j W 5 Q R X d S )Nr   r   r%   )rš   rœ   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   Zassert_produces_warningÚFutureWarningrÀ   r)   r²   r¿   ZaxZindexer)r   Zgrperre   r+   r6  r   r   r   Útest_grouper_groups  s*    

r=  )Ú__doc__Údatetimer   r   Únumpyr6   r   Zpandasr–   r   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingr3   Zpandas.core.groupby.grouperr   r   rj   r  r  r;  r=  r   r   r   r   Ú<module>   s&   (
{    X  