
    bMhH                     6   d Z ddlmZmZ ddlZddlZddlZddlm	Z	m
Z
mZmZmZmZmZmZmZ ddlmZ ddlmZ  G d d          Z G d d	          Z G d
 d          Z G d d          Zd Zd Zej                            dg d          d             ZdS )zG
test where we are determining what we are grouping, or getting groups
    )date	timedeltaN)	CategoricalIndex	DataFrameGrouperIndex
MultiIndexSeries	Timestamp
date_rangeperiod_range)Groupingc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                            dd	 d
 g          d             Zd ZdS )TestSelectionc                 P   t          ddggddg          }|                    d          }t          j        t          d          5  |dg          d d d            n# 1 swxY w Y   t          j        t          d	          5  |ddg          d d d            d S # 1 swxY w Y   d S )
N      ABcolumnsz"Columns not found: 'C'"matchCz^[^A]+$)r   groupbypytestraisesKeyError)selfdfgs      b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/groupby/test_grouping.pytest_select_bad_colsz"TestSelection.test_select_bad_cols    s-   Ax#s444JJsOO]8+GHHH 	 	seHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]89555 	 	 sCjMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   
AA!$A!BB"Bc           
      H   t          g dt          d          t          dd          t          ddd          g          }d}t          j        t          |	          5  |                    d
           d d d            n# 1 swxY w Y   t          j        t          |	          5  |                    d
dg           d d d            n# 1 swxY w 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   nlevelssize)r   r    msggroupedcs        r"   'test_groupby_duplicated_column_errormsgz5TestSelection.test_groupby_duplicated_column_errormsg+   s   (((a%1++uQPQST~~/V
 
 
 2]:S111 	 	JJsOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:S111 	# 	#JJSz"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# **S//MMOOy A%%%%y~""""""s$   B  BB&C

CCc                    |                     d          j                                        }|                     d          d                                         }t          j        ||           d|d<   |                     d                              d          }|                     d          g d                             d          }t          j        ||           d S )Nr   r   g      ?meanTnumeric_only)r   Dr4   )r   r   sumtmassert_series_equalr4   aggassert_frame_equalr   r    resultexpecteds       r"   test_column_select_via_attrz)TestSelection.test_column_select_via_attr<   s    C"&&((::c??3'++--
vx0006
C%%4%88::c??#5#5#56::6BB
fh/////    c           	         t          g dg dt          j                            d                              d          t          j                            d                              d          t          j                            d                              d          d          }|                    d          ddg                                         }|                    d          |j        dd	                                                  }|j        d d g d
f                             d                                          }t          j
        ||           t          j
        ||           d S )NfoobarrD   rE   rD   rE   rD   rD   onerG   twothreerH   rH   rG   rI   r   r'   r   r   r   r7   Er   r   r7   r%   )r   r   r7   )r   nprandomdefault_rngstandard_normalr   r4   r   locr9   r<   r   r    r>   result2r?   s        r"   test_getitem_list_of_columnsz*TestSelection.test_getitem_list_of_columnsF   s?   MMMQQQY**1--==a@@Y**1--==a@@Y**1--==a@@ 
 
 C#s,1133**S//"*QqS/277996!!!___,-55c::??AA
fh///
gx00000rA   c                    t          t          d          dz  t          j                            d                              d          t          j                            d                              d          t          j                            d                              d          d          }|                    d          |j        dd                                                  }|                    d          ddg                                         }|j	        d d g d	f                             d                                          }t          j        ||           t          j        ||           t          j        t          d
          5  |                    d          d                                          d d d            d S # 1 swxY w Y   d S )Nabcdr   r'   )r   r   r%   r&   r   r   r)   r%   r   r   r%   "Cannot subset columns with a tupler   )r   r%   )r   listrL   rM   rN   rO   r   r   r4   rP   r9   r<   r   r   r+   rQ   s        r"   !test_getitem_numeric_column_namesz/TestSelection.test_getitem_numeric_column_namesY   s   <<!#9((++;;A>>9((++;;A>>9((++;;A>>	 
 
 Arz!A#/4466**Q--A',,..6!!!YYY,'//227799
fh///
gx000 ]:-QRRR 	' 	'JJqMM$$$&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   .GGGc                     t          j        t          d          5  |                    d          d                                          d d d            d S # 1 swxY w Y   d S )NrW   r   r   )r   r7   )r   r   r+   r   r4   r   r    s     r"   +test_getitem_single_tuple_of_columns_raisesz9TestSelection.test_getitem_single_tuple_of_columns_raiseso   s    ]:-QRRR 	- 	-JJsOOH%**,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   .AAAc           	      r   t          g dg dt          j                            d                              d          t          j                            d                              d          t          j                            d                              d          d          }|                    d          d                                         }|j        d d ddgf                             d                                          }|j        d d df         }|}t          j
        ||           d S )	NrC   rF   r   r'   rJ   r   r   r   )r   rL   rM   rN   rO   r   r4   rP   ilocr9   r:   )r   r    r>   as_frame	as_seriesr?   s         r"   test_getitem_single_columnz(TestSelection.test_getitem_single_columnt   s   MMMQQQY**1--==a@@Y**1--==a@@Y**1--==a@@ 
 
 C%**,,6!!!c3Z-(0055::<<M!!!Q$'	
vx00000rA   funcc                 *    |                                  S Nr8   xs    r"   <lambda>zTestSelection.<lambda>   s    15577 rA   c                 .    |                      d           S )Nc                 *    |                                  S rd   re   )ys    r"   rh   z(TestSelection.<lambda>.<locals>.<lambda>   s    aeegg rA   )r;   rf   s    r"   rh   zTestSelection.<lambda>   s    aee4E4E.F.F rA   c                    t          g ddddd          }|                    ddg          ddg         }t          j        d	d
gddg          }t          ddgddgd|          } ||          }t	          j        ||           d S )Nr   r   r   r)   r%      abr1   drp   rq   r1   )r   r)   )r   r)   namesr   r'   )rp   r1   index)r   r   r	   from_tuplesr9   r<   )r   rb   r    gbidxr?   r>   s          r"   test_getitem_from_grouperz'TestSelection.test_getitem_from_grouper   s    
 YYYQQQ??@@ZZc
##S#J/$ff%5c3ZHHHAq6A77sCCCb
fh/////rA   c                     t          dd dD             i                              d          }                    fd          }|j        }|j        }t          j        ||           d S )NTuplesc              3      K   | ]?}t           j                            d                               ddd          D ]}||fV  	@dS r   r)   rn   NrL   rM   rN   integers.0rg   rk   s      r"   	<genexpr>zJTestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<genexpr>   s        Y22155>>q!QGG   F      rA   r   r   c                 "    j         | df         S Nr   r^   rg   r    s    r"   rh   zITestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<lambda>       A rA   )r   r   indicesr9   assert_dict_equalr   rx   	gb_lambdar?   r>   r    s        @r"   )test_indices_grouped_by_tuple_with_lambdaz7TestSelection.test_indices_grouped_by_tuple_with_lambda   s      #  
 
 ZZ!!JJ666677	:"
VX.....rA   N)__name__
__module____qualname__r#   r2   r@   rS   rY   r\   ra   r   markparametrizerz   r    rA   r"   r   r      s        	 	 	# # #"0 0 01 1 1&' ' ',- - -
1 1 1& [""$F$FG 	0 	0 	0/ / / / /rA   r   c                   v   e Zd Zej                            d e ed                     e ej	        d                     e ej	        de
                     edd           edd          g          d             Zd Zd	 Zd
 Zd Zej                            dddg          d             Zd Zd Zd Zd Zd Zd Zd Zd Zej                            dg dg dd  ed          D             g          d             Zd Zd Zd Zd  Z d! Z!d" Z"d# Z#d$ Z$d% Z%ej                            d&ddg          d'             Z&d( Z'ej                            d&ddg          d)             Z(d* Z)ej                            d+dg d,gdg d-gg          d.             Z*d/ Z+d0 Z,ej                            d1d2 e-d3ej.        4          fd5 e-d3ej.         eg ej.        d67          8          fd9 e-d3ej.         eg ej.        d67          8          fg          d:             Z/d; Z0d< Z1d= Z2d>S )?TestGroupingrv   abcdern   dtypez
2020-01-01periodsc                    t          t          j        d                              dd          t	          d          |          }|                    t	          d          d                              d	            |j        d d d
         |_        |                    t	          d          d                              d            d S )N
   rn   r   AB)r   rv   r   F
group_keysc                     | S rd   r   rf   s    r"   rh   z7TestGrouping.test_grouper_index_types.<locals>.<lambda>       A rA   c                     | S rd   r   rf   s    r"   rh   z7TestGrouping.test_grouper_index_types.<locals>.<lambda>   r   rA   )r   rL   arangereshaperX   r   applyrv   )r   rv   r    s      r"   test_grouper_index_typesz%TestGrouping.test_grouper_index_types   s     ry}},,Q22DJJeTTT


4==U
3399++FFF8DDbD>


4==U
3399++FFFFFrA   c                    t          j                    t          d          z
  }t          |t          j                              }t	          j        ||gddg          }t          t          j        	                    d          
                    ddd	          |
          }|                                                    t          dd          t          dd          g                                          }t          dgd          |_        |                    t          dd          t          dd          g                                          }t#          j        ||           |                    t          dd          t          dd          g                                          }t#          j        ||           d S )N   )daysrD   rE   rs   r   r   d      ru   Wkeyfreqint64r   levelr   r   )r   todayr   r   r	   from_productr   rL   rM   rN   r   reset_indexr   r   r8   r   r   r9   r<   )r   d0dates
date_indexr    r?   r>   s          r"   test_grouper_multilevel_freqz)TestGrouping.test_grouper_multilevel_freq   s    Z\\I2....2tz||,,,eU^E5>RRR
ry,,Q//88CEEZXXX NNWg%c222GC4P4P4PQRRSUU 	 !!G4445s+++W5s-K-K-KL
 

#%% 	 	fh/// 13'''qs)C)C)CD
 

#%% 	 	fh/////rA   c                    t          g dg dd          }|                    d          }|                                }|                    t          d                    }|                                }t	          j        ||           d}t	          j        t          |          5  t          dd	          }d d d            n# 1 swxY w Y   |                    |          }|                                }t	          j        ||           d
}t	          j        t          |          5  |                    d           }d d d            n# 1 swxY w Y   g d|d<   |j	        d d ddgf         }t	          j        ||           d S )N)r   r   r   r   r   r   r   r   r)   r%   rn   r&   r   r   r   r   z6Grouper axis keyword is deprecated and will be removedr   r   )r   axisz7DataFrameGroupBy.apply operated on the grouping columnsc                 *    |                                  S rd   re   rf   s    r"   rh   z8TestGrouping.test_grouper_creation_bug.<locals>.<lambda>   s    quuww rA   rV   r   )
r   r   r8   r   r9   r<   assert_produces_warningFutureWarningr   rP   )r   r    r!   r?   r>   r/   gprs          r"   test_grouper_creation_bugz&TestGrouping.test_grouper_creation_bug   s   ///6H6H6HIIJJJJsOO5577JJw3'''((
fh///F'SAAA 	+ 	+c***C	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+JJsOO
fh///G'SAAA 	0 	0WW..//F	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0!		<C:.
fh/////s$   )CCC-EEEc                 b   t          g dg dg dd          }|                    d                                          }|                    t          d          g          }|                                }t	          j        ||           |                    ddg                                          }|                    t          d          t          d          g          }|                                }t	          j        ||           |                    dt          d          g          }|                                }t	          j        ||           |                    t          d          dg          }|                                }t	          j        ||           d S )N)r   r   r   r   r   r   )r   r   r   r   r)   r)   r   r   r   r   r   r   r   )r   r   r8   r   r9   r<   )r   r    r?   r!   r>   s        r"   test_grouper_creation_bug2z'TestGrouping.test_grouper_creation_bug2   s    $$$+=+=+=DVDVDVWW
 
 ::c??&&((JJC((()**
fh/// ::sCj))--// JJC((('c*:*:*:;<<
fh/// JJW---.//
fh/// JJC(((#.//
fh/////rA   c                    t          dd|          }t          j        t          d          t	          d          |gg d          }t          t          j        dd	          |
          }|                    t          dd                    
                                }t          j        t          d          gdd                              |          }t          dg|
          }t          j        ||           |                    t          d                    
                                }|                    d          
                                }t          j        ||           d S )N20130101r   )r   unitab)rG   rH   rI   rs   r'   r   r   ru   rI   MEr   z
2013-01-31)r   name   rG   r   )r   r	   r   rX   r*   r
   rL   r   r   r   r8   pdDatetimeIndexr   as_unitr9   r:   )r   r   dtimiserr>   exp_dtir?   s           r"   test_grouper_creation_bug3z'TestGrouping.test_grouper_creation_bug3  so   QT:::$$ZZq3')))
 
 
 Iaw'''
 
 
 W7>>>??CCEE"|$$%Dw
 
 

'$-- 	 D
 
 
 	vx000 W5111226688;;U;++//11
vx00000rA   rb   FTc                    t          g dg dd          }t          t          t          d          ddgdz                      |r|                    fdd	
          }n|                    d	
          }t          t          |                    \  }}|dk    sJ |                    |          }t          j	        ||           d S )Nr   r   r   r   )r   r%   r)   r   )XYr%   )r   rn   )r7   r&   r   c                     |          S rd   r   )ry   mappings    r"   rh   z<TestGrouping.test_grouper_returning_tuples.<locals>.<lambda>7  s    73< rA   F)bysort)
r   dictzipr*   r   nextiter	get_groupr9   r<   )r   rb   r    rx   r   r?   r>   r   s          @r"   test_grouper_returning_tuplesz*TestGrouping.test_grouper_returning_tuples0  s     111EEFFs588h%9A%=>>?? 	47777eDDBBwU33Bd2hhhxd##
fh/////rA   c                    t          j        g d          }ddg|_        t          t	          j        d          g dd|          }|                    dt          d	          g                              d
          }|	                                                    ddg                              d
          }t          j        ||           |                    t          d	          dg                              d
          }|	                                                    ddg                              d
          }t          j        ||           |	                    d          }|                    dt          d	          g                              d
          }|	                                                    ddg                              d
          }t          j        ||           |                    t          d	          dg                              d
          }|	                                                    ddg                              d
          }t          j        ||           d S )N)rp   r   )rp   r   )rp   r)   rq   r   rq   r   )rq   r)   outerinnerr&   )rG   rG   rH   rH   rG   rG   r   ru   r   r   Tr5   )r	   rw   rt   r   rL   r   r   r   r4   r   r9   r<   )r   ry   df_multir>   r?   	df_singles         r"   test_grouper_column_and_indexz*TestGrouping.test_grouper_column_and_indexA  s   
 $HHH
 
 g&	)A,,%O%O%OPP
 
 
 !!3g(>(>(>"?@@EESWEXX  ""**C>::??T?RR 	 	fh/// !!7#9#9#93"?@@EESWEXX  ""**GS>::??T?RR 	 	fh/// ((11	""Cw)?)?)?#@AAFF G 
 
 !!##++S'N;;@@d@SS 	 	fh/// ""G'$:$:$:C#@AAFF G 
 
 !!##++WcN;;@@d@SS 	 	fh/////rA   c                    ddg}t          j        g d|          }t          t          j        d                              dd          |          }|                    |	                                          }|                                                    |                                          }|j	        
                    t          j                  |_	        t          j        ||           d S )
Nrg   rk   )r   r   r   r   )r)   r%   )rn   r&   rs      r   r)   ru   r   )r	   rw   r   rL   r   r   r   r4   r   r   astyper   r9   r<   )r   	idx_namesry   r    	by_levels
by_columnss         r"   test_groupby_levels_and_columnsz,TestGrouping.test_groupby_levels_and_columnso  s    #J	$%E%E%EYWWWry}},,R333???JJYJ//4466	^^%%--i88==??
 (/66rx@@

i44444rA   c                 n   g d}ddg}t          j        g dg dg dg dg dgt                    }t          ||d          }t	          ||          }d}t          j        t          |	          5  |                    d
d|          	                                }d d d            n# 1 swxY w Y   t          j        ddgddgddgddgddggt                    }	t          ||d          }
t	          |	|
          }t          j
        ||           t	          |j        |          }d}t          j        t          |	          5  |                    dd|          	                                }d d d            n# 1 swxY w Y   t	          |	j        |
          }t          j
        ||           d S )Nr   r   r   )r   r   r   r   T)
categoriesordered)r(   r   +DataFrame.groupby with axis=1 is deprecatedr   r   r   )r   r   observedr%   r   ru   5The 'axis' keyword in DataFrame.groupby is deprecated)r(   rv   )rL   arrayintr   r   r9   r   r   r   r8   r<   T)r   r   r   r   r(   cat_columnsr    depr_msgr>   expected_dataexpected_columnsr?   r/   s                r"   *test_groupby_categorical_index_and_columnsz7TestGrouping.test_groupby_categorical_index_and_columns}  st   &&&3Z
x\\<<<|||\\\RTW
 
 'w:tTTTD+666@'XFFF 	J 	JZZQa(ZCCGGIIF	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J1a&1a&1a&1a&1a&!I3OO+:t
 
 
 -9IJJJ
fh/// tv[111E'SAAA 	J 	JZZQa(ZCCGGIIF	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J-/9IJJJ
fh/////s$   2+B))B-0B-+E??FFc                    t          ddit          j        t          d          t	          dd          gddg	          
          }|                    t          d          t          dd          g                                          }t          dg dit          j        t          d          t	          ddd          gddg	          
          }t          j	        ||           d S )Nr   r   r   r   P   r   rG   rH   rs   ru   r   r   r   )   r      r
  r   r  r)   )r   r   )
r   r	   r   rX   r   r   r   r8   r9   r<   r=   s       r"   #test_grouper_getting_correct_binnerz0TestGrouping.test_grouper_getting_correct_binner  s    !H)dZ
B???@PU  
 
 
 5!!!7T#B#B#BC
 

#%% 	 ***+)dZ
qIIIJen  
 
 
 	fh/////rA   c                     |                     d          }d}t          j        t          |          5  |j        }d d d            n# 1 swxY w Y   t          |          }ddg}||k    sJ d S )Nr   &DataFrameGroupBy.grouper is deprecatedr   rE   rD   )r   r9   r   r   groupersorted)r   r    rx   r/   r  r>   r?   s          r"   test_grouper_iterzTestGrouping.test_grouper_iter  s    ZZ__6'SAAA 	! 	!jG	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!5>!!!!!!   AAAc                     t          j        t          d          5  |                    g            d d d            d S # 1 swxY w Y   d S )NzNo group keys passed!r   )r   r   r+   r   r[   s     r"   test_empty_groupszTestGrouping.test_empty_groups  s    ]:-DEEE 	 	JJrNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ?AAc                 P   |                     d          }d}t          j        t          |          5  |j        }d d d            n# 1 swxY w Y   |                     |                              d          }|                    d          }t          j        ||           d S )Nr   r  r   Tr5   )r   r9   r   r   r  r4   r<   )r   r    r0   r/   r  r>   r?   s          r"   test_groupby_grouperz!TestGrouping.test_groupby_grouper  s    **S//6'SAAA 	& 	&oG	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&G$$))t)<<<<T<22
fh/////r  c                 B   t          ddi          }|                    ddi                              d          }|                    dg                              d          }t          j        ||           t          g dt          d                    }ddd	d	d
}|                    |                                          }|                    |                              d          }t          j        g dt          j	                  }|                    |                                          }|                    |                                          }t          j        ||           t          j        ||           t          j        ||           d S )NT1rn   T2r8   )      ?       @g      @g      @rU   ru   r   r   ro   r4   )r   r   r   r   r   )
r
   r   r;   r9   r:   rX   r4   rL   r   r   )r   sr>   r?   r   rR   exp_key	expected2s           r"   test_groupby_dict_mappingz&TestGrouping.test_groupby_dict_mapping  si   D!9D$<((,,U3399dV$$((//
vx000'''tF||<<<227##((**))G$$((00(<<<rx88899W%%**,,IIg&&++--	
vx000
vw///
vy11111rA   r   r   r   r)   ro   c                 6    g | ]}t          d dd|z             S )i     r   )r   )r   is     r"   
<listcomp>zTestGrouping.<listcomp>  s(    :::AYtQQ'':::rA   r%   c                      |g d|          }t          g d|d          }|                    |                                          } |ddg          }d|j        _        t          j        ||           d S )Nr   r   r)   r%   ru   )r   r   r   r   )rp   rp   )rv   r   r%   r)   )r
   r   lastrv   r   r9   assert_equal)r   frame_or_seriesrv   objgroupsr>   r?   s          r"   $test_groupby_series_named_with_tuplez1TestGrouping.test_groupby_series_named_with_tuple  s     olll%888E
CCCV$$))++"?Aq6**(
)))))rA   c                 ,   t          ddd          }t          t          j                            d                              d          |          }d}t          j        t          |          5  |	                    d	            d d d            n# 1 swxY w Y   |	                    d
           
                                }|	                    |j                  
                                }d |j        _        t          j        ||           d S )Nz01-Jan-2013r   MSr   r   r   ru   z''Timestamp' object is not subscriptabler   c                     | dd         S )Nr   r&   r   r   s    r"   rh   zDTestGrouping.test_groupby_grouper_f_sanity_checked.<locals>.<lambda>  s    3qs8 rA   c                     | S rd   r   rf   s    r"   rh   zDTestGrouping.test_groupby_grouper_f_sanity_checked.<locals>.<lambda>  s    a rA   )r   r
   rL   rM   rN   rO   r   r   	TypeErrorr   r8   rv   r   r9   r:   )r   r   tsr/   r>   r?   s         r"   %test_groupby_grouper_f_sanity_checkedz2TestGrouping.test_groupby_grouper_f_sanity_checked  s0   ="4@@@BI))!,,<<R@@NNN 8]9C000 	- 	-JJ++,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- KK((,,..::bh''++--"
vx00000s   1BBBc           	         t          ddgdz  t          ddd          d          }t          dd	
          }|                    |dg          }t	          d          dfddgt	          d          dfdgt	          d          dfdgt	          d          dfddgi}t          j        |j        |           t          |j        	                                          dk    sJ d S )Nrp   rq   r)   z
2000-01-01z
2000-01-039hr   )idrq   r7   r   r8  r   r   r   z
2000-01-02r%   rn   )
r   r   r   r   r   r9   r   r+  lenkeys)r   r    r  rx   r?   s        r"   test_groupby_with_datetime_keyz+TestGrouping.test_groupby_with_datetime_key  s   Cj1nlFFF 
 
 c,,,ZZ$(( |$$c*QF|$$c*QC|$$c*QC|$$c*QF	
 	RY111 29>>##$$))))))rA   c                     d}t          j        t          |          5  t          |j        |ddg                    d d d            d S # 1 swxY w Y   d S )NzEGrouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensionalr   r   )r   r   r+   r   rv   r   r    r/   s      r"   %test_grouping_error_on_multidim_inputz2TestGrouping.test_grouping_error_on_multidim_input  s    U]:S111 	/ 	/RXr3*~...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   A		AAc                 Z   t          g dg dg dg          }t          j        g d          |_        d}t	          j        t          |          5  |                    dddg	          }d d d            n# 1 swxY w Y   |                                }t	          j	        ||           d S )
Nr   r   r)   )r%   rn   r&   )r"  r'   	   )r   r   )r   r   r   r   r   r   r   r   )
r   r	   rw   r   r9   r   r   r   firstr<   )r   r    r  rx   r>   s        r"   test_multiindex_passthruz%TestGrouping.test_multiindex_passthru  s     			999iii899+,D,D,DEE
@'XFFF 	2 	21a&11B	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2
fb)))))s   A77A;>A;c                    |                     d                                          }|                     d                                          }t          j        ||           |                     d                                          }|                     d                                          }t          j        ||           |                     ddg                                          }|                                }t          j        ||           |                     ddg                                          }|                     ddg                                          }t          j        ||           d S )Nr   r   secondrC  )r   r8   r9   r<   
sort_index)r    multiindex_dataframe_random_datar>   r?   s       r"   test_multiindex_negative_levelz+TestGrouping.test_multiindex_negative_level   si   1999CCGGII3;;(;KKOOQQ
fh///1999CCGGII3;;';JJNNPP
fh///199R9IIMMOO3>>@@
fh///199W9NNRRTT3;;W% < 
 

#%% 	 	fh/////rA   c                 @   t          j        t          |j                            |_        d}t	          j        t          |          5  |                    dd          d                             dt           j	        i           d d d            d S # 1 swxY w Y   d S )Nz7Passing a dictionary to SeriesGroupBy.agg is deprecatedr   r   Fas_indexr   Q)
rL   r   r9  r   r9   r   r   r   r;   r4   r=  s      r"   &test_multifunc_select_col_integer_colsz3TestGrouping.test_multifunc_select_col_integer_cols4  s    Ys2://
 H'SAAA 	A 	AJJq5J))!,00#rw@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   	=BBBc                 v   ddgddgg}t          j        |          }t          ddgg|          }|                    d          j        }|d         dgk    sJ |                    d	g          j        }|d         dgk    sJ t          ddgd
dgg|          }|                    d          j        }|                    d	g          j        }||k    sJ t          ddgd
dgg|          }|                    d          j        }|                    d	g          j        }t          j        ||           d S )Nr,   values	to filter r   r   r   r   )rR  rS  r   r   )r	   rw   r   r   r+  r9   r   )r   lstmidxr    r0   r?   r>   s          r"   #test_multiindex_columns_empty_levelz0TestGrouping.test_multiindex_columns_empty_level<  sX   "["$56%c**Cz4000**[))0s|s""""**/0118s|s""""C1c(+T:::::k**1./007!!!!C1c(+T:::::k**1./007
VX.....rA   c                    t          g dg dg dgt          j        g dg dg                    }|                    dg          j        }|                    d          j        }t          j        ||           t          |j        t          j        g dg dg                    }|                    d	g          j        }|                    d          j        }t          j        ||           t          |j        g d
          }|                    d	g          j        }|                    d          j        }t          j        ||           d S )Nr&  r)   r%   rn   r&   r   r%   r   r)   rp   rq   rq   r1   r   r   r   r   r   r   )rr   rr   er\  rq   rr   ))rp   rr   r]  )rq   r\  r1   )r   r	   from_arraysr   r+  r9   r   rQ  )r   r    r?   r>   df2df3s         r"   test_groupby_multiindex_tuplez*TestGrouping.test_groupby_multiindex_tupleT  sd   \\<<<6*,@,@,@,,,+OPP
 
 
 ::xj))0H%%,
Xv...I*%%%';';';< 
 
 
 ;;
|,,3H%%,
Xv...	+T+T+TUUU;;
|,,3H%%,
Xv.....rA   c                    t          g dg dg dgt          j        g dg dg                    }|                    dg          dd	g                                         }|                    dg          d
                                         }t          j        ||           |                    dg          dd	g                                         }|                    dg          d
                                         }t          j        ||           |                    dg          dd	g                                         }|                    dg          d
                                         }t          j        ||           |                    dg          dd	g         	                                }|                    dg          d
         	                                }	t          j        ||	           |                    dg          dd	g         
                                }
|                    dg          d
         
                                }t          j        |
|           |                    dg          dd	g         j        }|                    dg          d
         j        }t          j        ||           d S )Nr&  rX  rY  rZ  r[  r   r   r   r   rq   )r   r	   r^  r   r4   r9   r<   r8   r,   minmaxr+  r   )r   r    expected_meanresult_meanexpected_sum
result_sumexpected_countresult_countexpected_min
result_minexpected_max
result_maxexpected_groupsresult_groupss                 r"   4test_groupby_multiindex_partial_indexing_equivalencezATestGrouping.test_groupby_multiindex_partial_indexing_equivalencem  s   \\<<<6*,@,@,@,,,+OPP
 
 

 

H:..(/CDIIKKjj(,,S16688
m[999zz8*--x.BCGGIIZZ
++C04466

lJ777XJ//80DEKKMMzz8*--c288::
nl;;;zz8*--x.BCGGIIZZ
++C04466

lJ777zz8*--x.BCGGIIZZ
++C04466

lJ777**hZ00(H1EFM

H:..s3:
_m<<<<<rA   r   c                    |}|                                 }|                    d|                                          }|                    d|                                          }|                    |d         j        |                                          }|                    |d         j        |                                          }	d|j        _        d|	j        _        |j        j        dk    sJ |j        j        dk    sJ t          j        ||           t          j        ||	           |j        j        |j        j        d         k    sJ |j        j        |j        j        d         k    sJ |                    d|                                          }|                    d|                                          }t          j        ||           t          j        ||	           d}
t          j	        t          |
          5  |j                            dd|	                                          }|j                            dd|	                                          }d d d            n# 1 swxY w Y   t          j        ||j                   t          j        ||	j                   d
}
t          j        t          |
          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   rC  )r   rF  r   r   )r   r   r   z2level > 0 or level < -1 only valid with MultiIndexr   )r   r   r8   rQ  rv   r   r9   r<   rt   r   r   r  r   r   r+   )r   r   rI  r    frame	deleveledresult0result1	expected0	expected1r/   s              r"   test_groupby_levelzTestGrouping.test_groupby_level  sL    1%%''	--ad-337799--ad-337799MM)G"4";$MGGKKMM	MM)H"5"<4MHHLLNN	&	'	}!W,,,,}!X----
gy111
gy111}!U[%6q%99999}!U[%6q%99999 --gD-99==??--hT-::>>@@
gy111
gy111 <'SAAA 	H 	HgooAADoAAEEGGGgooAADoAAEEGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	gy{333
gy{333 C]:S111 	  	 JJQJ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s%   AI??JJK??LLc                 `   t          dgdz  dgdz  z   t          d          d                              d          }|dv r
|j        }d}nd	}t	          j        t          |
          5  |                    d|           d d d            n# 1 swxY w Y   d|                    |           }t          j
        t          |
          5  t	          j        t          |
          5  |                    d|           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r)   r   r&   )expvar1r|  )r   r   r   r   r   )r   r   z&level name foo is not the name of the rD   )r   r*   	set_indexr  r9   r   r   r   _get_axis_namer   r   r+   )r   r   r    r  r/   s        r"   test_groupby_level_index_namesz+TestGrouping.test_groupby_level_index_names  s   uqyC5194eAhhGGHHRR
 
 >!!BDHHNH'XFFF 	/ 	/JJUJ...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/Pr7H7H7N7NPP]:S111 	3 	3+MJJJ 3 3

T
2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3sH   )BBBD#'D?D#D	D#D	D##D'*D'c                 R   t          ddgg dgg dg dg          }t          t          j        d          |          }|                    d|	                                          }t          d
dgddg          }t          j        ||           t          ddgg dgg dg dg          }t          t          j        d          |          }|                    d|	                                          }t          d
dgddg          }t          j        ||           d S )Nr   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r)   r   r   r   r)   )levelscodesg       @ru   rs  g      @g      6@)r   r   r   r   r   r   r   r   g      2@g        r  )r	   r
   rL   r   r   r8   r9   r:   )r   r   rv   r  r>   r?   s         r"   test_groupby_level_with_nasz(TestGrouping.test_groupby_level_with_nas  sP    FLLL)+++-E-E-EF
 
 
 29S>>///..22443+aV444
vx000FLLL),,,.F.F.FG
 
 
 29S>>///..22443+c3Z888
vx00000rA   c                 6   |}d}t          j        t          |          5  |                                 d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                    d d            d d d            d S # 1 swxY w Y   d S )Nz*You have to supply one of 'by' and 'level'r   )r   r   )r   r   r2  r   )r   rI  rt  r/   s       r"   test_groupby_argszTestGrouping.test_groupby_args  s   0:]9C000 	 	MMOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ;]9C000 	/ 	/MMTM...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s#   AAA)BBBzsort,labels
r   r   r   r   r   r   r   r)   r)   r)   )
r   r   r   r   r   r   r   r)   r)   r)   c                     |                     d|          }t          j        |t          j                  }t	          j        |j        j        d         |           d S )Nr   rs  )r   rL   r   intpr9   assert_almost_equal_grouperr  )r   r   labelsrI  r0   
exp_labelss         r"   test_level_preserve_orderz&TestGrouping.test_level_preserve_order  sS     3:::NNXfbg..

w/5a8*EEEEErA   c                     |                     |j                            d                    }t          j        g dt          j                  }t          j        |j        j	        d         |           d S )Nr   r  r   )
r   rv   get_level_valuesrL   r   r  r9   r  r  r  )r   rI  r0   r  s       r"   test_grouping_labelsz!TestGrouping.test_grouping_labels  sn    2::,2CCAFF
 
 X<<<BGLLL

w/5a8*EEEEErA   c                    t          dt          ddd          i          }t          j        |j        d<   t          dd          }|                    |g          }t          d	          t          t          t          d
                              i}t          j        |j        |           |                    |          }t          d	          di}t          j        |j        |           d S )Nr   z1/1/2011im  r7   r/  r   YSr   z
2011-01-01il  )r   r   r   NaTr^   r   r   r   r   rX   r*   r9   r   r+  )r   r    r  r>   r?   s        r"   test_list_grouper_with_natz'TestGrouping.test_list_grouper_with_nat   s    
:s M M MNOOff4000 WI&&l++U4c

3C3C-D-DE
V]H555 G$$l++S1
V]H55555rA   zfunc,expected	transformr   r   r   r;   r   r   r   )r   r   rv   r   c                     t          g g d          }|                    dd          } t          |d         |          d           }t          j        ||           d S )Nr   r   Fr   r   c                     | S rd   r   rf   s    r"   rh   z>TestGrouping.test_evaluate_with_empty_groups.<locals>.<lambda>,  s    q rA   )r   r   getattrr9   r:   )r   rb   r?   r    r!   r>   s         r"   test_evaluate_with_empty_groupsz,TestGrouping.test_evaluate_with_empty_groups  sd    4 2"~~&&JJqUJ++$1t$$[[11
vx00000rA   c           	         t          g dd          }|                    g           }|                                }|                    t	          g t
          j                            }t          j        ||           t          |j
        j                  dk    sJ t          j        |j
        j        d         t          j        g t          j        t
          j                                       t          j        |j
        j        d         t          j        g t          j        t
          j                                       |j
        j        d         dk    sJ |                    |          }d}t          j        t"          |	          5  |j        }d d d            n# 1 swxY w Y   |j        }dg}||k    sJ d S )
Nr   float64r  r   r   r   r   z#SeriesGroupBy.grouper is deprecatedr   )r
   r   r4   set_axisr   rL   r  r9   r:   r9  r  	groupingsassert_numpy_array_equal
group_infor   r   r   r   r  rt   )r   r  grr>   r?   rx   r/   r  s           r"   test_groupby_emptyzTestGrouping.test_groupby_empty/  s   2F)444YYr]]::eBbg66677
vx000 2;())Q....
#K"1%rx"(27:K:K'L'L'L	
 	
 	
 	#K"1%rx"(27:K:K'L'L'L	
 	
 	
 {%a(A---- YYq\\3'SAAA 	! 	!jG	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!8!!!!!!s   F&&F*-F*c           
         t          dt          j        dgd t          j        dggg d                              ddg          }|                    ddg                                          }t          g t          t          dgd	
          t          g d
          gg g gddg          dgd          }t          j	        ||           d S )Nrg   r      r   r   r   r   r   strr   r  )r  r  rt   r   r   )r(   rv   r   r   )
r   rL   nanr~  r   r8   r	   r   r9   r<   r=   s       r"   %test_groupby_level_index_value_all_naz2TestGrouping.test_groupby_level_index_value_all_naM  s    262rvr 23___
 
 

)S#J

 	 3*--1133se5111593M3M3MN2hCj  
 E	
 	
 	
 	fh/////rA   c           	      Z   t          g dg dgg d          }|                    ddg          }||j        dk              }|                    d                                          }t          dd	gt          g t          j        d
                    }t          j	        ||           d S )N){   rp   r  )r  rq   r  )r8  categoryvaluer   r8  r  r   r  r  r  )r   r   rv   )
r   r~  r  r   r8   r   rL   r   r9   r<   )r   r    emptyr>   r?   s        r"   #test_groupby_multiindex_level_emptyz0TestGrouping.test_groupby_multiindex_level_empty_  s    __ooo.8S8S8S
 
 
 \\4,--28a< t$$((**I"(666
 
 

 	fh/////rA   N)3r   r   r   r   r   r   r   rX   rL   r   floatr   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r*   r,  r4  r;  r>  rD  rJ  rO  rV  ra  rq  rz  r  r  r  r  r  r  r
   r  r  r  r  r  r   rA   r"   r   r      s       [E$$w--  E)")A,,E)")AU+++,,J|Q///Lq111	
	 	G G	 	G0 0 080 0 000 0 0>1 1 14 [VeT]330 0 430 ,0 ,0 ,0\5 5 50 0 060 0 0," " "  
0 0 02 2 2& [LL   ::q:::	
 * * *1 1 1* * *./ / /

* 
* 
*0 0 0(A A A/ / /0/ / /2= = => [VdE]33'  '  43' R3 3 3" [VdE]331 1 4310
/ 
/ 
/ [11122223	
 F F FF F F6 6 6  [ ARZ000
 "*EE"BJUV4W4W4W   "*EE"BJUV4W4W4W  	
 *1 1+ *1" " "<0 0 0$0 0 0 0 0rA   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestGetGroupc                    t          t          j        g d          g dg dd          }|                    d          }t	          t          |j                            }|                    |          }|                    t          |          	                                          }|                    t          t          |                              }t          j        ||           t          j        ||           |                    ddg          }t	          t          |j                            }|                    |          }|                    t          |d                   	                                |d         f          }|                    t          t          |d                             |d         f          }t          j        ||           t          j        ||           d	}t          j        t          |
          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          |
          5  |                    d           d d d            n# 1 swxY w Y   d}t          j        t          |
          5  |                    d           d d d            d S # 1 swxY w Y   d S )N)10-Oct-2013r  r  11-Oct-2013r  r  )rD   rD   rE   rD   rD   rE   r   )DATElabelVALr  r  r   r   z<must supply a tuple to get_group with multiple grouping keysr   rD   zHmust supply a same-length tuple to get_group with multiple grouping keys)rD   rE   baz)r   r   to_datetimer   r   r   r+  r   r   to_pydatetimer  r9   r<   r   r   r+   )r   r    r!   r   rw  rR   result3r/   s           r"   test_get_groupzTestGetGroup.test_get_groupt  sD      	 	 DCC))) 
 
" JJv4>>""++c""++inn::<<==++c)C..1122
gw///
gw///JJ())4>>""++c""++yQ00>>@@#a&IJJ++s9SV#4#455s1v>??
gw///
gw/// M]:S111 	 	KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:S111 	 	KK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	X]:S111 	/ 	/KK-...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s6   H99H= H=JJJ)KKKc                    t          g d          }g d}|                    t          j        |d         |          |          }|                    t          j        dd                    }t          ddgddg          }t          j        ||           d	}t          j	        t          |
          5  |                    t          j        dd                     d d d            d S # 1 swxY w Y   d S )N)r)   r   r"  r&   )r   rn   r      r   )r   rn   r)   r   ru   z"Interval\(10, 15, closed='right'\)r   r   r  )r   r   r   cutr   Intervalr9   r<   r   r   r   )r   r   rr   binsr!   r>   r?   r/   s           r"   test_get_group_empty_binsz&TestGetGroup.test_get_group_empty_bins  s)   lll##~~IIbfQqT4((8I<< R[A..//aVAq6222
fh///3]83/// 	- 	-KKB++,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   5)C++C/2C/c                    t          g dgdg          j        }|                    d          }t          dddgiddg          }|                    d          }t	          j        ||           t          j        g d          }t          dd |D             i          }|                    d          }|                    d	          }t          d|d         f|d         fgiddg          }t	          j        ||           d S )
N)r   r   r  r   idsru   r  r   r   )
2010-01-01
2010-01-02r  r  c                     g | ]}|fS r   r   )r   rg   s     r"   r$  z@TestGetGroup.test_get_group_grouped_by_tuple.<locals>.<listcomp>  s    111111rA   )r  )r   r  r   r   r9   r<   r   r  )r   r    r  r?   r>   dts         r"   test_get_group_grouped_by_tuplez,TestGetGroup.test_get_group_grouped_by_tuple  s   4445eWEEEGZZedD\21a&AAAd##
fh///^TTTUU11b111233ZZo..er!uhA%9:1a&III
fh/////rA   c                    t          dd dD             i                              d          }                    fd          }|                    t          t	          |j                                                                      }|                    t          t	          |j                                                                      }t          j        ||           d S )Nr|   c              3      K   | ]?}t           j                            d                               ddd          D ]}||fV  	@dS r~   r   r   s      r"   r   zKTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<genexpr>  r   rA   r   c                 "    j         | df         S r   r   r   s    r"   rh   zJTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<lambda>  r   rA   )	r   r   r   r   r   r+  r:  r9   r<   r   s        @r"   +test_get_group_grouped_by_tuple_with_lambdaz8TestGetGroup.test_get_group_grouped_by_tuple_with_lambda  s      #  
 
 ZZ!!JJ666677	<<T")..*:*:%;%; < <==$$T$y/?/D/D/F/F*G*G%H%HII
fh/////rA   c                     t          j        d          }d}t          ||t                    }t	          d          }|                    |          }t          t          |          d           J d S )Nr   r   r7   r7  )r   r   r
   objectr   r   r   r   )r   rv   r(   seriesr  r0   s         r"   test_groupby_with_emptyz$TestGetGroup.test_groupby_with_empty  sn     $$e6222s###..))DMM4((00000rA   c                    t          dt          d          i          }t          j        |                    d                              d          |j        ddg                    t          t          g dd          t          g d          	          }t          j        |                    d                                          |           t          j        |                    d          	                                |           |j        g d
         }t          j        |                    d          
                    d          |           d S )Nrp   abssbabr   rn   )rp   rq   r  )r   r  r   )rv   r   r)   r%   rn   r   )r   rX   r9   r<   r   r   r^   r   r,   r8   nth)r   r    r|  s      r"   test_groupby_with_single_columnz,TestGetGroup.test_groupby_with_single_column  s   T)__-..
bjjoo77<<bgq!foNNNc222E"E<R<R<R
 
 
 	bjjoo3355s;;;
bjjoo1133S999giii 
bjjoo11!44c:::::rA   c                 
   t          g dg dg dgg d          }|                    ddg          }|                    g d                                          }|j        d	         d
k    sJ |j        d         dk    sJ d S )N)rD   rE   r   r   )rD   rE   r   r   )rD   r  r   r)   )rC  rF  thirdrG   r   rC  rF  )rC  rF  r  )rD   rE   r   r   )rD   r  r   r   )r   r~  r   r.   rP   r[   s     r"   test_gb_key_len_equal_axis_lenz+TestGetGroup.test_gb_key_len_equal_axis_len  s     ###%;%;%;=S=S=ST777
 
 
 \\7H-..ZZ44455::<<v)*a////v)*a//////rA   N)
r   r   r   r  r  r  r  r  r  r  r   rA   r"   r  r  s  s~        -/ -/ -/^- - -0 0 00 0 0(1 1 1; ; ;0 0 0 0 0rA   r  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestIterationc                 >   |                     dg          }|j        }||j        u sJ |j                                        D ]0\  }}|j        |         d         |k                                    sJ 1|                     ddg          }|j        }||j        u sJ |j                                        D ]g\  }}|j        |         d         |d         k                                    sJ |j        |         d         |d         k                                    sJ hd S )Nr   r   r   r   )r   r+  itemsrP   all)r   r    r0   r+  kvs         r"   test_groupszTestIteration.test_groups  s-   **cU##''''N((** 	/ 	/DAqF1IcNa',,......**c3Z((''''N((** 	2 	2DAqF1IcNad*//11111F1IcNad*//111111	2 	2rA   c                 b    |                     d d g          }|j        j        d         D ]}d S )Nc                 *    |                                  S rd   )weekdayrf   s    r"   rh   z9TestIteration.test_grouping_is_iterable.<locals>.<lambda>  s    QYY[[ rA   c                     | j         S rd   )yearrf   s    r"   rh   z9TestIteration.test_grouping_is_iterable.<locals>.<lambda>  s    AF rA   r   )r   r  r  )r   tsframer0   r!   s       r"   test_grouping_is_iterablez'TestIteration.test_grouping_is_iterable  sK     //#8#8:J:J"KLL !+A. 	 	A	 	rA   c                    t          t          j        d                    }t          j        g d          }t          j        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 ]<\  }\  \  }}	}
||         \  }}}||k    sJ ||	k    sJ t          j        |
|           =d S )Nr&   )rp   rp   rp   rq   rq   rq   12r  r  r  r  rp   r  r   r   r  r   rq   r%   r)   rn   )	r
   rL   r   r   r   rX   	enumerater9   r:   )r   r  k1k2r0   iteratedr?   r#  rG   rH   rI   e1e2e3s                 r"   test_multi_iterzTestIteration.test_multi_iter  s   29Q<<  X44455X44455))RH%%==#q!Qy!#q!v#q!v#q!Qy!	
 '0&9&9 	. 	."A"
cE!!JBB99999999"5"----		. 	.rA   c                    t          j        g d          }t          j        g d          }t          t           j                            d                              d          t           j                            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 ]<\  }	\  \  }
}}||	         \  }}}||
k    sJ ||k    sJ t          j        ||           =t          j        g d          |d<   t          j        g d          |d	<   |                    dd	g          }d |D             }t          |          dk    sJ |                    g d                                          }d}t          j        t           |          5  |j                            dd          }d d d            n# 1 swxY w Y   |D ]\  }}d S )N)rq   rq   rq   rp   rp   rp   r  r   r&   )v1v2r  r  )rG   rH   rI   fourfivesixru   r  r  rp   r  r%   r  r)   rn   rq   r   r   )r  r  r  r  r  r  c                     i | ]\  }}||	S r   r   )r   r   gps      r"   
<dictcomp>z7TestIteration.test_multi_iter_frame.<locals>.<dictcomp>O  s    111gc2#r111rA   r   r   r   r   rB  )rL   r   r   rM   rN   rO   r   rX   rv   rP   r  r9   r<   r9  r4   r   r   r  )r   three_groupr  r  r    r0   r  ry   r?   r#  rG   rH   rI   r  r  r  r+  three_levelsr  r   groups                        r"   test_multi_iter_framez#TestIteration.test_multi_iter_frame*  s   X44455X44455i++A..>>qAAi++A..>>qAA	  A@@
 
 
 **dD\** ==h#rvc1#h'(#rvc1a&k*+#rvc1a&k*+#rvc1#h'(	
 '0&9&9 	- 	-"A"
cE!!JBB99999999!%,,,, 8:::;;48:::;;4**dD\** 211116{{a #**???;;@@BB@'XFFF 	C 	C"n,,!6,BBG	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C! 	 	JC	 	s   *IIIc           	         t          t          |                    d                               t          t          |                    ddg                               t          t          |d                             |d                                        t          t          |d                             |d         |d         g                               t          t          |                    d          d                              t          t          |                    ddg          d                              d S )Nr   r   r   )r   r   r   r[   s     r"   test_dictifyzTestIteration.test_dictifyZ  s    T"**S//""###T"**c3Z(())***T"S'//"S'**++,,,T"S'//2c7BsG"45566777T"**S//#&''(((T"**c3Z((-../////rA   c                 B   t          ddgddgdt          j        ddg                    }|                    t	          d	          d
g          }t          |j                  dk    sJ |j        dk    sJ t          d          df|j        v sJ t          d          df|j        v sJ |	                    t          d          df          }t          j        ||j        dgd d f                    |	                    t          d          df          }t          j        ||j        dgd d f                    t          g dg ddt          j        g d                    }|                    t	          d	          d
g          }t          |j                  dk    sJ |j        dk    sJ t          d          df|j        v sJ t          d          df|j        v sJ |	                    t          d          df          }t          j        ||j        ddgd d f                    |	                    t          d          df          }t          j        ||j        dgd d f                    t          g dg ddt          j        g d                    }|                    t	          d	          d
g          }t          |j                  dk    sJ |j        dk    sJ t          d          df|j        v sJ t          d          df|j        v sJ t          d          df|j        v sJ |	                    t          d          df          }t          j        ||j        dgd d f                    |	                    t          d          df          }t          j        ||j        dgd d f                    |	                    t          d          df          }t          j        ||j        dgd d f                    d S )Nstart  .  )eventchange
2014-09-10
2013-10-10ru   r   r7  r
  r   z
2014-09-30z
2013-10-31r   r   )r  r  r  )r  r	  i#  )r  r  z
2014-09-15)r  r  z
2014-08-05r)   z
2014-08-31)r   r   r   r   r   r9  r+  ngroupsr   r   r9   r<   r^   )r   r    r0   ress       r"   test_groupby_with_small_elemz*TestIteration.test_groupby_with_small_elemb  st    (T4LAA"L,#?@@
 
 
 **g4000':;;7>""a''''!####,''1W^CCCC,''1W^CCCC<!8!8' BCC
c27A36?333<!8!8' BCC
c27A36?333111=O=O=OPP"#M#M#MNN
 
 
 **g4000':;;7>""a''''!####,''1W^CCCC,''1W^CCCC<!8!8' BCC
c27Aq61119#5666<!8!8' BCC
c27A36?333 111=O=O=OPP"#M#M#MNN
 
 
 **g4000':;;7>""a''''!####,''1W^CCCC,''1W^CCCC,''1W^CCCC<!8!8' BCC
c27A36?333<!8!8' BCC
c27A36?333<!8!8' BCC
c27A36?33333rA   c                     t          j        t          d          t          d          g          }t          g dg|          }|                    |d                   }|j        j        d                                         }d}||k    sJ d S )NAABabar@  r   )r   rp   r   zGrouping(('A', 'a')))r	   r^  rX   r   r   r  r  __repr__)r   r   r    r  r>   r?   s         r"   test_grouping_string_reprz'TestIteration.test_grouping_string_repr  s    #T%[[$u++$>??			{B///ZZ:''&q)2244)!!!!!!rA   N)
r   r   r   r  r  r  r  r  r  r  r   rA   r"   r  r    s        2 2 2   . . .(. . .`0 0 024 24 24h" " " " "rA   r  c                     t          g dg dg dd                              d          } |                     t          d          t          d          gd	          }|j        j        d
         j        rJ |j        j        d         j        sJ d}t          j        t          |          5  |
                                }d d d            n# 1 swxY w Y   t          ddgddgd          }t          j        ||           d S )Nrm   r  )rp   rq   r1   rp   r   rq   r   FrL  r   r   z*A grouping .* was excluded from the resultr   r   r"  rn   )rq   r1   )r   r~  r   r   r  r  in_axisr9   r   r   r8   r<   )r    rx   r/   r>   r?   s        r"   test_grouping_by_key_is_in_axisr    sJ   	CC	D	D	N	Ns	S	SB	W3'''S)9)9)9:U	K	KB{$Q'////; #++++ 7C		#M	=	=	=                1vQF3344H&(+++++s   1CCCc                     t          g ddd          } t          d          }|                     |          }d}t          j        t
          |          5  |j        }d d d            n# 1 swxY w Y   ||j        u sJ d}t          j        t
          |          5  |j        }d d d            n# 1 swxY w Y   ||j        u sJ d	}t          j        t
          |          5  |j	        }d d d            n# 1 swxY w Y   ||j	        u sJ d
}t          j        t
          |          5  |j
         d d d            n# 1 swxY w Y   d}t          j        t
          |          5  |j         d d d            d S # 1 swxY w Y   d S )Nr@  r   rp   rq   rp   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   r9   r   r   r+  r  r  r*  axindexer)r    grperrx   r/   r  s        r"   test_grouper_groupsr    s   	++	,	,BE	E		B
&C		#M	=	=	=  l              ")
'C		#M	=	=	=  m              "+
9C		#M	=	=	=  i              "&====
$C		#M	=	=	=                 *C		#M	=	=	=                   sZ   A++A/2A/B22B69B6%C99C= C=,E  EE(E==FFattr)group_indexresult_indexgroup_arraylikec                    t          g dg dd          }|                    d          }|  d}t          j        t          |          5  t          |j        j        d         |            d d d            d S # 1 swxY w Y   d S )Nrm   r  r  rp   z is deprecatedr   r   )r   r   r9   r   r   r  r  r  )r  r    rx   r/   s       r"   test_depr_grouping_attrsr$    s     
33	4	4B	CB
!
!
!C		#M	=	=	= 0 0%a($///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   !A::A>A>) __doc__datetimer   r   numpyrL   r   pandasr   r   r   r   r   r	   r
   r   r   r   pandas._testing_testingr9   pandas.core.groupby.grouperr   r   r   r  r  r  r  r   r   r$  r   rA   r"   <module>r,     s          
         
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
       0 0 0 0 0 0H/ H/ H/ H/ H/ H/ H/ H/^~
0 ~
0 ~
0 ~
0 ~
0 ~
0 ~
0 ~
0JB0 B0 B0 B0 B0 B0 B0 B0Rb" b" b" b" b" b" b" b"J, , ,   < !S!S!STT0 0 UT0 0 0rA   