a
    oÝEb³Ž  ã                   @   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   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   úb/home/ja/django-apps/lartica_env/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   sf   |  d¡j ¡ }|  d¡d  ¡ }t ||¡ d|d< |  d¡ ¡ }|  d¡ tj¡}t ||¡ d S )Nr   r   g      ø?Úmean)	r   r   ÚsumÚtmÚassert_series_equalr-   ÚaggÚnpÚassert_frame_equal©r   r   ÚresultÚexpectedr   r   r   Útest_column_select_via_attr8   s    z)TestSelection.test_column_select_via_attrc                 C   s¢   t g d¢g d¢tj d¡tj d¡tj d¡dœƒ}| d¡ddg  ¡ }| d¡|jdd	…   ¡ }|jd d …g d
¢f  d¡ ¡ }t 	||¡ t 	||¡ d S )N©ÚfooÚbarr9   r:   r9   r:   r9   r9   ©Úoner<   ÚtwoÚthreer=   r=   r<   r>   r"   ©r   r   r   ÚDÚEr   r   r@   r   r    )r   r   r@   )
r   r2   ÚrandomÚrandnr   r-   r   Úlocr/   r3   ©r   r   r5   Úresult2r6   r   r   r   Útest_getitem_list_of_columnsB   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 …g d	¢f  d¡ ¡ }t	 
||¡ t	 
||¡ t	 t¡�" | 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    )r   r    )r   Úlistr2   rB   rC   r   r   r-   rD   r/   r3   Úassert_produces_warningÚFutureWarningrE   r   r   r   Ú!test_getitem_numeric_column_namesU   s    



üÿ z/TestSelection.test_getitem_numeric_column_namesc                 C   s@   t  t¡�" | d¡d  ¡  W d   ƒ n1 s20    Y  d S )Nr   )r   r@   )r/   rK   rL   r   r-   ©r   r   r   r   r   Ú#test_getitem_single_list_of_columnsk   s    z1TestSelection.test_getitem_single_list_of_columnsc                 C   sŒ   t g d¢g d¢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 )Nr8   r;   r"   r?   r   r   r   )
r   r2   rB   rC   r   r-   rD   Úilocr/   r0   )r   r   r5   Zas_frameZ	as_seriesr6   r   r   r   Útest_getitem_single_columnp   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©r2   rB   Úrandint©Ú.0ÚxÚyr   r   r   Ú	<genexpr>†   ó    zJTestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<genexpr>©r   r   c                    s   ˆ j | df S ©Nr   ©rP   ©rY   ©r   r   r   Ú<lambda>Š   r\   zITestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<lambda>)r   r   Úindicesr/   Úassert_dict_equal©r   ÚgbZ	gb_lambdar6   r5   r   ra   r   Ú)test_indices_grouped_by_tuple_with_lambdaƒ   s    ÿ
z7TestSelection.test_indices_grouped_by_tuple_with_lambdaN)Ú__name__Ú
__module__Ú__qualname__r   r,   r7   rG   rM   rO   rQ   rg   r   r   r   r   r      s   
r   c                   @   sÄ  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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!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zej d-d.d/g¡d0d1„ ƒZd2d3„ Zej d-d.d/g¡d4d5„ ƒZd6d7„ Zej d8d.g d9¢gd/g d:¢gg¡d;d<„ ƒZd=d>„ Zd?d@„ Z ej dAdBe!dCe"j#e$g ƒdD�fdEe!dCe"j#e%g dFdG�dD�fdHe!dCe"j#e%g dFdG�dD�fg¡dIdJ„ ƒZ&dKdL„ Z'dMdN„ Z(dOdP„ Z)dQS )RÚTestGroupingc                 C   s–   t t d¡ dd¡tdƒd�}tjtjtjtj	tj
tjfD ]V}|t|ƒƒ|_| tdƒ¡ dd„ ¡ tt|j ¡ ƒƒ|_| tdƒ¡ d	d„ ¡ q:d S )
Né
   rT   r   ZABr   Zabcdec                 S   s   | S ©Nr   r`   r   r   r   rb   ¥   r\   z7TestGrouping.test_grouper_index_types.<locals>.<lambda>c                 S   s   | S rm   r   r`   r   r   r   rb   ¨   r\   )r   r2   ÚarangeÚreshaperJ   r/   ZmakeFloatIndexZmakeStringIndexZmakeUnicodeIndexZmakeIntIndexZmakeDateIndexZmakePeriodIndexÚlenÚindexr   ÚapplyÚreversedÚtolist)r   r   rq   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é   )Údaysr9   r:   ©Únameséd   éá   ©rq   ÚW©ÚkeyÚfreqÚint64©Údtype©Úlevelr‚   r   )Údatetimerv   rw   Útodayr   r   Úfrom_productr   r2   rB   rV   Úreset_indexr   ÚpdÚGrouperr.   r   r   r/   r3   )	r   rv   rw   Zd0ÚdatesZ
date_indexr   r6   r5   r   r   r   Útest_grouper_multilevel_freqª   s$    ÿÿÿÿz)TestGrouping.test_grouper_multilevel_freqc              	   C   sP  t g d¢g d¢dœƒ}| d¡}| ¡ }| tjdd�¡}| ¡ }t ||¡ | tjddd�¡}| ¡ }t ||¡ | dd	„ ¡}g d
¢|d< |jd d …ddgf }t ||¡ t g d¢g d¢g d¢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g d¢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 )!N)r   r   r   r   r   r   ©r   r   r$   r    rT   r!   ©r   r   r   ©r�   r   )r�   Úaxisc                 S   s   |   ¡ S rm   )r.   r`   r   r   r   rb   Û   r\   z8TestGrouping.test_grouper_creation_bug.<locals>.<lambda>rI   r   )r   r   r   r   r   r   )r   r   r   r   r$   r$   ©r   r   r   r"   rƒ   r„   Úabr   Ú20130101©Úperiods)r<   r=   r>   rz   r~   r>   ÚMr†   é   z
2013-01-31)r‚   Únamer<   ©r‡   )r   r   r.   rŒ   r�   r/   r3   rr   rD   r   r2   rn   r   rŠ   rJ   r%   r   ÚDatetimeIndexr   r0   )r   r   r   r6   r5   Úsr   r   r   Útest_grouper_creation_bugÌ   s\    
ÿþþþz&TestGrouping.test_grouper_creation_bugc                 C   s2  t  g d¢¡}ddg|_tt d¡g d¢dœ|d�}| dtjdd	�g¡ 	¡ }| 
¡  ddg¡ 	¡ }t ||¡ | tjdd	�dg¡ 	¡ }| 
¡  ddg¡ 	¡ }t ||¡ | 
d¡}| dtjdd	�g¡ 	¡ }| 
¡  ddg¡ 	¡ }t ||¡ | tjdd	�dg¡ 	¡ }| 
¡  ddg¡ 	¡ }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   rœ   )r   Úfrom_tuplesr{   r   r2   rn   r   rŒ   r�   r-   r‹   r/   r3   )r   ÚidxZdf_multir5   r6   Z	df_singler   r   r   Útest_grouper_column_and_index  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   rZ   )©r   r   ©r   r   )r$   r    )rT   r!   rz   é   éÿÿÿÿr$   r~   rœ   )r   r¥   r   r2   rn   ro   r   r-   r‹   r   Zastyperƒ   r/   r3   )r   Z	idx_namesr¦   r   Z	by_levelsZ
by_columnsr   r   r   Útest_groupby_levels_and_columns4  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�}|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 )N)r   r   r   r   r   r   )r   r   r   r   T)Ú
categoriesZordered)r#   r   r   r   )r“   r‡   Úobservedr    r   r~   )r#   rq   )
r2   ÚarrayÚintr   r   r   r.   r/   r3   ÚT)r   r®   r   r­   r#   Zcat_columnsr   r5   Zexpected_dataZexpected_columnsr6   r   r   r   Ú*test_groupby_categorical_index_and_columnsB  s$    "ÿ*ÿ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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=   rz   r~   rœ   r™   r†   )é   rš   é   r´   rš   rµ   r$   )r‚   r˜   )r   r   rŠ   rJ   r   r   rŒ   r�   r.   r/   r3   r4   r   r   r   Ú#test_grouper_getting_correct_binnerY  s"    ÿþÿ
þþz0TestGrouping.test_grouper_getting_correct_binnerc                 C   s    t | d¡jƒddgksJ ‚d S )Nr   r:   r9   )Úsortedr   ÚgrouperrN   r   r   r   Útest_grouper_iterp  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   rN   r   r   r   Útest_empty_groupss  s    zTestGrouping.test_empty_groupsc                 C   s2   |  d¡}|  |j¡ ¡ }| ¡ }t ||¡ d S )Nr   )r   r¸   r-   r/   r3   )r   r   r*   r5   r6   r   r   r   Útest_groupby_grouperx  s    
z!TestGrouping.test_groupby_grouperc                 C   sØ   ddl m} |ddiƒ}| ddi¡ t¡}| dg¡ t¡}t ||¡ |g d¢tdƒd�}ddd	d	d
œ}| |¡ ¡ }| |¡ t	j¡}| g d¢¡ ¡ }| g d¢¡ ¡ }t ||¡ t ||¡ t ||¡ d S )Nr   )r   ZT1rT   ZT2)ç      ð?ç       @g      @g      @rH   r~   r   ©r    r¢   r+   Úd)r   r   r   r   )
Úpandasr   r   r1   r.   r/   r0   rJ   r-   r2   )r   r   rž   r5   r6   ÚmappingrF   Z	expected2r   r   r   Útest_groupby_dict_mapping  s    z&TestGrouping.test_groupby_dict_mappingrq   ©r   r   r   r$   r¾   c                 C   s   g | ]}t d dd| ƒ‘qS )iå  é   rš   )r   )rX   Ú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    r~   )r   r   r   r   )r    r    )rq   r›   r    r$   )r   r   Úlastrq   r›   r/   Zassert_equal)r   Zframe_or_seriesrq   ÚobjÚgroupsr5   r6   r   r   r   Ú$test_groupby_series_named_with_tuple“  s    
z1TestGrouping.test_groupby_series_named_with_tuplec                 C   sf   t dddd�}ttj d¡|d�}d}tjt|d�� | dd	„ ¡ W d   ƒ n1 sX0    Y  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   rb   ³  r\   zDTestGrouping.test_groupby_grouper_f_sanity_checked.<locals>.<lambda>)	r   r   r2   rB   rC   r   r   ÚAssertionErrorr   )r   rŽ   Útsr)   r   r   r   Ú%test_groupby_grouper_f_sanity_checked¤  s
    z2TestGrouping.test_groupby_grouper_f_sanity_checkedc                 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   rq   )r   r   r)   r   r   r   Ú%test_grouping_error_on_multidim_inputµ  s    z2TestGrouping.test_grouping_error_on_multidim_inputc                 C   sP   t g d¢g d¢g d¢gƒ}t g d¢¡|_|jdddgd� ¡ }t ||¡ d S )N©r   r   r$   )r    rT   r!   )rÄ   r"   é	   )r]   r¨   )r   r   r   r   ©r“   r‡   )r   r   r¥   r   r   Úfirstr/   r3   )r   r   r5   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   r.   r/   r3   )r   Úmframer5   r6   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)r2   rn   rp   r   r   r1   r-   rN   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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   r¥   r   r   rÊ   r/   rd   )r   ÚlstZmidxr   r*   r6   r5   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    rT   r!   )r   r    r   r$   )r    r¢   r¢   r+   )r   r   r   r   r   r¡   )r¿   r¿   Úerá   ©r¢   r¿   ))r    r¿   râ   )r¢   rá   r+   )r   r   Úfrom_arraysr   rÊ   r/   rd   rÜ   )r   r   r6   r5   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€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 ||	¡ |j	jdd|d� ¡ }|j	jdd|d� ¡ }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å   z2level > 0 or level < -1 only valid with MultiIndexr   rœ   )r‹   r   r.   rÜ   rq   r›   r/   r3   r{   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v r6|j}|jd|d� d	| |¡› �}tjt|d
�� |jd|d� W d   ƒ n1 s†0    Y  d S )Nr   r$   r   r!   )ÚexpZvar1rê   )r   r   )r‡   r“   z&level name foo is not the name of the r   r9   )	r   r%   Ú	set_indexr±   r   Z_get_axis_namer   r   r&   )r   r“   r   r)   r   r   r   Útest_groupby_level_index_names6  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       @r~   ræ   g      @g      6@)r   r   r   r   r«   r   r   r   g      2@g        r¼   )r   r   r2   rn   r   r.   r/   r0   )r   rå   rq   rž   r5   r6   r   r   r   Útest_groupby_level_with_nasB  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   )Zbyr‡   )r   r   Ú	TypeErrorr   )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   r2   r¯   Úintpr/   Úassert_almost_equalr¸   rî   )r   rå   ÚlabelsrØ   r*   Ú
exp_labelsr   r   r   Útest_level_preserve_orderg  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   rq   Zget_level_valuesr2   r¯   ró   r/   rô   r¸   rî   )r   rØ   r*   rö   r   r   r   Útest_grouping_labelst  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 )Nrv   z1/1/2011im  r@   rÌ   r«   ZASr€   z
2011-01-01il  )r   r   rŒ   ZNaTrP   r�   r   r   r   rJ   r%   r/   rd   rÊ   )r   r   r¸   r5   r6   r   r   r   Útest_list_grouper_with_naty  s    
z'TestGrouping.test_list_grouper_with_natzfunc,expectedZ	transformr   )r›   r…   rq   r1   r   ©r›   rr   c                 C   s>   t g g dœƒ}| d¡}t|d |ƒdd„ ƒ}t ||¡ d S )Nr©   r   r   c                 S   s   | S rm   r   r`   r   r   r   rb   ¡  r\   z>TestGrouping.test_evaluate_with_empty_groups.<locals>.<lambda>)r   r   Úgetattrr/   r0   )r   Úfuncr6   r   r   r5   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@J ‚t |jj	d t
jg t
 t
j¡d�¡ t |jj	d t
jg t
 t
j¡d�¡ |jj	d dks J ‚| |¡jjdgks¸J ‚d S )Nr›   Úfloat64)r›   r…   r   r   r„   r   )r   r   r-   r/   r0   rp   r¸   Ú	groupingsZassert_numpy_array_equalZ
group_infor2   r¯   r…   ró   r{   )r   rž   Úgrr5   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   rl   é   r”   r   r   r   rœ   Úobjectr„   rþ   )rí   rî   r{   r   rƒ   )r#   rq   r   r…   )
r   r2   Únanrë   r   r.   r   r   r/   r3   r4   r   r   r   Ú%test_groupby_level_index_value_all_na»  s"    ÿþýø
z2TestGrouping.test_groupby_level_index_value_all_nac                 C   sn   t g d¢g d¢gg d¢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¢   r½   )ÚidÚcategoryÚvaluer   r  r  r   rþ   r	  rú   )r…   r   rq   )r   rë   r	  r   r.   r
   r/   r3   )r   r   Úemptyr5   r6   r   r   r   Ú#test_groupby_multiindex_level_emptyÍ  s    ÿÿz0TestGrouping.test_groupby_multiindex_level_emptyN)*rh   ri   rj   ru   r�   rŸ   r§   r¬   r²   r¶   r¹   rº   r»   rÂ   r   ÚmarkZparametrizer%   rË   rÏ   rÐ   rÕ   rÙ   rÛ   rà   rä   ré   rì   rï   rñ   r÷   rø   rù   r   r2   rþ   r   r	   rý   r  r  r  r   r   r   r   rk   –   st   "F"ýþ
	

(


þþ
þþþ÷þ

rk   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|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 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-2013r  r  ú11-Oct-2013r  r  )r9   r9   r:   r9   r9   r:   r�   )ÚDATEÚlabelZVALr  r   r  r   z<must supply a tuple to get_group with multiple grouping keysr   r9   zHmust supply a same-length tuple to get_group with multiple grouping keys)r9   r:   Úbaz)r   rŒ   Úto_datetimer   rJ   rÊ   Ú	get_groupr   Zto_pydatetimeÚstrr/   r3   r   r   r&   )r   r   r   r�   rè   rF   Zresult3r)   r   r   r   Útest_get_groupà  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   rT   rl   é   r   )r®   rT   r$   r   r~   z"Interval\(10, 15, closed='right'\)r   rl   r  )r   r   rŒ   Úcutr  ZIntervalr/   r3   r   r   r   )r   r®   r¿   Zbinsr   r5   r6   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©   Úidsr~   r  r   r   )ú
2010-01-01ú
2010-01-02r  r  c                 S   s   g | ]
}|f‘qS r   r   )rX   rY   r   r   r   rÆ   (  r\   z@TestGetGroup.test_get_group_grouped_by_tuple.<locals>.<listcomp>)r  )r   r±   r   r  r/   r3   rŒ   r  )r   r   r   r6   r5   Ú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 )NrR   c                 s   s,   | ]$}t j d dd¡D ]}||fV  qqdS rS   rU   rW   r   r   r   r[   1  r\   zKTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<genexpr>r]   c                    s   ˆ j | df S r^   r_   r`   ra   r   r   rb   5  r\   zJTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<lambda>r   )r   r   r  rJ   rÊ   Úkeysr/   r3   re   r   ra   r   Ú+test_get_group_grouped_by_tuple_with_lambda.  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 u sHJ ‚d S )Nr   r„   r@   ©r‚   )rŒ   r�   r   r  r�   r   ÚnextÚiter)r   rq   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�d�}t | d¡ ¡ |¡ t | d¡ 	¡ |¡ t | d¡ 
d¡|¡ d S )	Nr    Zabssbabr   rT   )r    r¢   rž   rú   r~   r   )r   rJ   r/   r3   r   r  rP   r   r'   r.   Znth)r   r   rê   r   r   r   Útest_groupby_with_single_columnD  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)r9   r:   r   r   )r9   r:   r   r   )r9   r  r   r$   )rÔ   rÖ   Úthirdr<   r   rÔ   rÖ   )rÔ   rÖ   r'  )r9   r:   r   r   )r9   r  r   r   )r   rë   r   r(   rD   rN   r   r   r   Útest_gb_key_len_equal_axis_lenM  s    þz+TestGetGroup.test_gb_key_len_equal_axis_lenN)
rh   ri   rj   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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Ê   ÚitemsrD   Ú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 rm   )Úweekdayr`   r   r   r   rb   s  r\   z9TestIteration.test_grouping_is_iterable.<locals>.<lambda>c                 S   s   | j S rm   )Úyearr`   r   r   r   rb   s  r\   r   )r   r¸   rÿ   )r   Ztsframer*   r   r   r   r   Útest_grouping_is_iterablep  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    r¢   r¢   r¢   ©Ú1Ú2r3  r4  r3  r4  r    r3  r   r   r4  r   r¢   r    r$   rT   )	r   r2   rn   r¯   r   rJ   Ú	enumerater/   r0   )r   rž   Úk1Úk2r*   Úiteratedr6   rÅ   r<   r=   r>   Úe1Úe2Úe3r   r   r   Útest_multi_itery  s    üzTestIteration.test_multi_iterc                 C   sŽ  t  g d¢¡}t  g d¢¡}tt j d¡t j 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 ]B\}	\\}
}}||	 \}}}||
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�sXJ ‚| g d¢¡ ¡ }|jjddd�}|D ]
\}}�q~d S )N)r¢   r¢   r¢   r    r    r    r2  r!   )Úv1Úv2r6  r7  )r<   r=   r>   ÚfourÚfiveÚsixr~   r6  r7  r    r3  r    r4  r$   rT   r¢   r   r   r   )r3  r3  r3  r4  r4  r4  c                 S   s   i | ]\}}||“qS r   r   )rX   r�   Úgpr   r   r   Ú
<dictcomp>ª  r\   z7TestIteration.test_multi_iter_frame.<locals>.<dictcomp>r”   r©   rÓ   )r2   r¯   r   rB   rC   r   rJ   rq   rD   r5  r/   r3   rp   r-   r±   )r   Zthree_groupr6  r7  r   r*   r8  r¦   r6   rÅ   r<   r=   r>   r9  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   rN   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sLJ ‚|jdksZJ ‚tdƒdf|jv spJ ‚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jdd	�d
g¡}t|jƒdk�s0J ‚|jdk�s@J ‚tdƒdf|jv �sXJ ‚tdƒdf|jv �spJ ‚| 	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jdd	�d
g¡}t|jƒdk�sJ ‚|jdk�s,J ‚tdƒdf|jv �sDJ ‚tdƒdf|jv �s\J ‚tdƒdf|jv �stJ ‚| 	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-10r~   r™   r"  rK  r   z
2014-09-30z
2013-10-31r   r   )rH  rH  rH  )rI  rJ  i£#  )rL  rM  z
2014-09-15)rL  rM  z
2014-08-05r$   z
2014-08-31)r   rŒ   r�   r   r�   rp   rÊ   Zngroupsr   r  r/   r3   rP   )r   r   r*   Úresr   r   r   Útest_groupby_with_small_elem»  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ã   rJ   r   r   r¸   rÿ   Ú__repr__)r   Úmir   r   r5   r6   r   r   r   Útest_grouping_string_reprï  s    z'TestIteration.test_grouping_string_reprN)
rh   ri   rj   r.  r1  r<  rE  rG  rO  rR  r   r   r   r   r)  _  s   	&4r)  )Ú__doc__Únumpyr2   r   rÀ   rŒ   r   r   r   r   r   r   r   Zpandas._testingZ_testingr/   Zpandas.core.apir	   r
   Zpandas.core.groupby.grouperr   r   rk   r  r)  r   r   r   r   Ú<module>   s    $	{    M 