a
    j=icL                     @   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 s0    Y  d S )
N      ABcolumnsz"Columns not found: 'C'"matchCz^[^A]+$)r   groupbypytestraisesKeyError)selfdfg r   s/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/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 s0    Y  |d}| }|jjdksJ |jj	dksJ 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   s   | dj }| dd  }t|| d|d< d}tjt|d0 | d }| dt	j}W d    n1 s~0    Y  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    0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barr;   r<   r;   r<   r;   r;   oner>   twothreer?   r?   r>   r@   r"   r   r   r   DEr   r   rB   r   r    )r   r   rB   )
r   r5   randomrandnr   r-   r   locr0   r6   r   r   r7   result2r8   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 g d	f d }t	
|| t	
|| t	t" |dd
   W d    n1 s0    Y  d S )Nabcdr   r"   )r   r   r    r!   r   r   r$   r    r   r   r    )r   r    )r   listr5   rD   rE   r   r   r-   rF   r0   r6   r2   r3   rG   r   r   r   !test_getitem_numeric_column_namesW   s    



 z/TestSelection.test_getitem_numeric_column_namesc                 C   s@   t t" |dd   W d    n1 s20    Y  d S )Nr   )r   rB   )r0   r2   r3   r   r-   r   r   r   r   r   #test_getitem_single_list_of_columnsm   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 )Nr:   r=   r"   rA   r   r   r   )
r   r5   rD   rE   r   r-   rF   ilocr0   r1   )r   r   r7   Zas_frameZ	as_seriesr8   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r5   rD   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   indicesr0   assert_dict_equalr   gbZ	gb_lambdar8   r7   r   ra   r   )test_indices_grouped_by_tuple_with_lambda   s    
z7TestSelection.test_indices_grouped_by_tuple_with_lambdaN)__name__
__module____qualname__r   r,   r9   rI   rM   rO   rQ   rg   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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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
   rT   r   ZABr   ZabcdeFZ
group_keysc                 S   s   | S Nr   r`   r   r   r   rb      r\   z7TestGrouping.test_grouper_index_types.<locals>.<lambda>c                 S   s   | S ro   r   r`   r   r   r   rb      r\   )r   r5   arangereshaperL   lenrl   r   applyreversedtolist)r   rl   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<   namesd      rl   Wkeyfreqint64dtypelevelr   r   )datetimerw   rx   todayr   r   from_productr   r5   rD   rV   reset_indexr   pdGrouperr/   r   r   r0   r6   )	r   rw   rx   Zd0datesZ
date_indexr   r8   r7   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 ro   )r/   r`   r   r   r   rb      r\   z8TestGrouping.test_grouper_creation_bug.<locals>.<lambda>rK   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@   r{   r   r@   Mr      z
2013-01-31)r   namer>   r   )r   r   r/   r   r   r0   r6   rs   rF   r   r5   rp   r   r   rL   r%   r   DatetimeIndexr   r1   )r   r   r   r8   r7   sr   r   r   test_grouper_creation_bug   s\    
z&TestGrouping.test_grouper_creation_bugc                 C   s  t g d}ddg|_ttdg dd|d}d}tjt|d	@ |	d
t
jddg }| 	d
dg }W d    n1 s0    Y  t|| tjt|d	@ |	t
jddd
g }| 	dd
g }W d    n1 s0    Y  t|| |d}tjt|d	@ |	d
t
jddg }| 	d
dg }W d    n1 sl0    Y  t|| tjt|d	@ |	t
jddd
g }| 	dd
g }W d    n1 s0    Y  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   r   )r   from_tuplesr|   r   r5   rp   r0   r2   r3   r   r   r   r-   r   r6   )r   idxZdf_multir)   r7   r8   Z	df_singler   r   r   test_grouper_column_and_index  s4    
44
66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!   r{      r$   r   r   )r   r   r   r5   rp   rq   r   r-   r   r   Zastyper   r0   r6   )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   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#   rl   )
r5   arrayintr   r   r   r/   r0   r6   T)r   r   r   r   r#   Zcat_columnsr   r7   Zexpected_dataZexpected_columnsr8   r   r   r   *test_groupby_categorical_index_and_columnsK  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?   r{   r   r   r   r   )   r      r   r   r   r$   )r   r   )r   r   r   rL   r   r   r   r   r/   r0   r6   r   r   r7   r8   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J d S )Nr   r<   r;   )sortedr   grouperrN   r   r   r   test_grouper_itery  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_groups|  s    zTestGrouping.test_empty_groupsc                 C   sd   | d}d}tjt|d( | |j }| }W d    n1 sJ0    Y  t|| d S )Nr   r.   r   )r   r0   r2   r3   r   r-   r6   )r   r   r*   r)   r7   r8   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|| |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      @rJ   r   r   r   r   r+   d)r   r   r   r   )
pandasr   r   r4   r/   r0   r1   rL   r-   r5   )r   r   r   r7   r8   mappingrH   Z	expected2r   r   r   test_groupby_dict_mapping  s    z&TestGrouping.test_groupby_dict_mappingr   r   r   r$   r   c                 C   s   g | ]}t d dd| qS )i     r   )r   )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   )rl   r   r    r$   )r   r   lastrl   r   r0   Zassert_equal)r   Zframe_or_seriesrl   objgroupsr7   r8   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   r5   rD   rE   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   rl   )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   firstr0   r6   )r   r   r7   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   secondr   )r   r/   r0   r6   Z
sort_index)r   mframer7   r8   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)r5   rp   rr   r   r   r4   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sJ 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   r0   rd   )r   lstZmidxr   r*   r8   r7   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   r0   rd   r   )r   r   r8   r7   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sJ |jjdksJ t|| t||	 |jj|jjd ksJ |jj|jjd ksJ |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 s0    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   rl   r   r0   r6   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 s0    Y  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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   r5   rp   r   r/   r0   r1   )r   r   rl   r   r7   r8   r   r   r   test_groupby_level_with_nasM  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_argsf  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   r5   r   intpr0   assert_almost_equalr   r   )r   r   labelsr   r*   
exp_labelsr   r   r   test_level_preserve_orderr  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   rl   Zget_level_valuesr5   r   r   r0   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 )Nrw   z1/1/2011im  rB   r   r   ZASr   z
2011-01-01il  )r   r   r   ZNaTrP   r   r   r   r   rL   r%   r0   rd   r   )r   r   r   r7   r8   r   r   r   test_list_grouper_with_nat  s    
z'TestGrouping.test_list_grouper_with_natzfunc,expectedZ	transformr   )r   r   rl   r4   r   r   rs   c                 C   sB   t g g d}|jddd}t|d |dd }t|| d S )Nr   r   Frn   r   c                 S   s   | S ro   r   r`   r   r   r   rb     r\   z>TestGrouping.test_evaluate_with_empty_groups.<locals>.<lambda>)r   r   getattrr0   r1   )r   funcr8   r   r   r7   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sJ ||jjdgksJ d S )Nr   float64)r   r   r   r   r   r   )r   r   r-   r0   r1   rr   r   	groupingsZassert_numpy_array_equalZ
group_infor5   r   r   r   r|   )r   r   grr7   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   rm      r   r   r   r   r   objectr   r   )r   r   r|   r   r   )r#   rl   r   r   )
r   r5   nanr   r   r/   r   r   r0   r6   r   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   rl   )r   r   r  r   r/   r
   r0   r6   )r   r   emptyr7   r8   r   r   r   #test_groupby_multiindex_level_empty  s    z0TestGrouping.test_groupby_multiindex_level_emptyN)0rh   ri   rj   r   markZparametrizer0   ZmakeFloatIndexZmakeStringIndexZmakeIntIndexZmakeDateIndexZmakePeriodIndexrv   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   r5   r   r   r	   r   r  r  r  r   r   r   r   rk      s   

"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 s0    Y  d S )N)10-Oct-2013r  r  11-Oct-2013r  r  )r;   r;   r<   r;   r;   r<   r   )DATElabelZVALr  r   r  r   z<must supply a tuple to get_group with multiple grouping keysr   r;   zHmust supply a same-length tuple to get_group with multiple grouping keys)r;   r<   baz)r   r   to_datetimer   rL   r   	get_groupr   Zto_pydatetimestrr0   r6   r   r   r&   )r   r   r   r   r   rH   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 s0    Y  d S )N)r$   r   r   r!   )r   rT   rm      r   )r   rT   r$   r   r   z"Interval\(10, 15, closed='right'\)r   rm   r  )r   r   r   cutr  ZIntervalr0   r6   r   r   r   )r   r   r   Zbinsr   r7   r8   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   Z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   3  r\   z@TestGetGroup.test_get_group_grouped_by_tuple.<locals>.<listcomp>)r  )r   r   r   r  r0   r6   r   r  )r   r   r  r8   r7   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[   <  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   @  r\   zJTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<lambda>r   )r   r   r  rL   r   keysr0   r6   re   r   ra   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 u sHJ d S )Nr   r   rB   r   )r   r   r   r  r   r   nextiter)r   rl   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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   rL   r0   r6   r   r  rP   r   r'   r/   Znth)r   r   r   r   r   r   test_groupby_with_single_columnO  s    "z,TestGetGroup.test_groupby_with_single_columnc                 C   sj   t g dg dg dgg dd}|ddg}|g d }|jd	 d
ksTJ |jd dksfJ d S )N)r;   r<   r   r   )r;   r<   r   r   )r;   r  r   r$   )r   r   thirdr>   r   r   r   )r   r   r(  )r;   r<   r   r   )r;   r  r   r   )r   r   r   r(   rF   rN   r   r   r   test_gb_key_len_equal_axis_lenX  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 sJ |j| d |d k szJ qzd S )Nr   r   r   r   )r   r   itemsrF   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 ro   )weekdayr`   r   r   r   rb   ~  r\   z9TestIteration.test_grouping_is_iterable.<locals>.<lambda>c                 S   s   | j S ro   )yearr`   r   r   r   rb   ~  r\   r   )r   r   r  )r   Ztsframer*   r   r   r   r   test_grouping_is_iterable{  s    z'TestIteration.test_grouping_is_iterablec                 C   s   t td}tg d}tg d}|||g}t|}dd|ddg fdd|d	g fd
d|dg fd
d|ddg fg}t|D ]B\}\\}}	}
|| \}}}||ksJ ||	ksJ t|
| qd S )Nr!   )r   r   r   r   r   r   12r4  r5  r4  r5  r   r4  r   r   r5  r   r   r    r$   rT   )	r   r5   rp   r   r   rL   	enumerater0   r1   )r   r   k1k2r*   iteratedr8   r   r>   r?   r@   e1e2e3r   r   r   test_multi_iter  s    zTestIteration.test_multi_iterc                 C   s  t g d}t g d}tt jd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sJ ||ksJ t
|| qt 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   r3  r!   )v1v2r7  r8  )r>   r?   r@   fourfivesixr   r7  r8  r   r4  r    r5  r$   rT   r   r   r   r   )r4  r4  r4  r5  r5  r5  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   )r5   r   r   rD   rE   r   rL   rl   rF   r6  r0   r6   rr   r-   r   )r   Zthree_groupr7  r8  r   r*   r9  r   r8   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   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 sJ |	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#  rL  r   z
2014-09-30z
2013-10-31r   r   )rI  rI  rI  )rJ  rK  i#  )rM  rN  z
2014-09-15)rM  rN  z
2014-08-05r$   z
2014-08-31)r   r   r   r   r   rr   r   Zngroupsr   r  r0   r6   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   rL   r   r   r   r  __repr__)r   mir   r  r7   r8   r   r   r   test_grouping_string_repr  s    z'TestIteration.test_grouping_string_reprN)
rh   ri   rj   r/  r2  r=  rF  rH  rP  rS  r   r   r   r   r*  j  s   	&4r*  )__doc__numpyr5   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr0   Zpandas.core.apir	   r
   Zpandas.core.groupby.grouperr   r   rk   r  r*  r   r   r   r   <module>   s    $	}    V 