
    PiJ                         d Z ddlmZmZ ddlZddlZddlmZm	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dS )zG
test where we are determining what we are grouping, or getting groups
    )date	timedeltaN)Pandas4WarningSpecificationError)	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      v/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/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_errormsg1   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   Dr6   )r   r   sumtmassert_series_equalr6   aggassert_frame_equalr!   r"   resultexpecteds       r$   test_column_select_via_attrz)TestSelection.test_column_select_via_attrB   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barrF   rG   rF   rG   rF   rF   onerI   twothreerJ   rJ   rI   rK   r   r)   r   r   r   r9   Er   r   r9   r'   )r   r   r9   )r   nprandomdefault_rngstandard_normalr   r6   r   locr;   r>   r!   r"   r@   result2rA   s        r$   test_getitem_list_of_columnsz*TestSelection.test_getitem_list_of_columnsL   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0rC   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   listrN   rO   rP   rQ   r   r   r6   rR   r;   r>   r   r   r-   rS   s        r$   !test_getitem_numeric_column_namesz/TestSelection.test_getitem_numeric_column_names_   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 )NrX   r   r   )r   r9   )r   r   r-   r   r6   r!   r"   s     r$   +test_getitem_single_tuple_of_columns_raisesz9TestSelection.test_getitem_single_tuple_of_columns_raisesu   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 )	NrE   rH   r   r)   rL   r   r   r   )r   rN   rO   rP   rQ   r   r6   rR   ilocr;   r<   )r!   r"   r@   as_frame	as_seriesrA   s         r$   test_getitem_single_columnz(TestSelection.test_getitem_single_columnz   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0rC   funcc                 *    |                                  S Nr:   xs    r$   <lambda>zTestSelection.<lambda>   s    15577 rC   c                 .    |                      d           S )Nc                 *    |                                  S re   rf   )ys    r$   ri   z(TestSelection.<lambda>.<locals>.<lambda>   s    aeegg rC   )r=   rg   s    r$   ri   zTestSelection.<lambda>   s    aee4E4E.F.F rC   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br3   drq   rr   r3   )r   r+   r   r+   namesr   r)   )rq   r3   index)r   r   r   from_tuplesr;   r>   )r!   rc   r"   gbidxrA   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/////rC   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+   ro   NrN   rO   rP   integers.0rh   rl   s      r$   	<genexpr>zJTestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<genexpr>   s        Y22155>>q!QGG   F      rC   r   r   c                 "    j         | df         S Nr   r_   rh   r"   s    r$   ri   zITestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<lambda>       A rC   )r   r   indicesr;   assert_dict_equalr!   rz   	gb_lambdarA   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.....rC   N)__name__
__module____qualname__r%   r4   rB   rU   rZ   r]   rb   r   markparametrizer|   r    rC   r$   r   r   %   s        	 	 	# # #"0 0 01 1 1&' ' ',- - -
1 1 1& [""$F$FG 	0 	0 	0/ / / / /rC   r   c                      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%d& Z&d' Z'd( Z(ej                            d)dg d*gdg d+gg          d,             Z)d- Z*d. Z+ej                            d/d0 e,d1ej-        2          fd3 e,d1ej-         eg ej-        d45          6          fd7 e,d1ej-         eg ej-        d45          6          fg          d8             Z.d9 Z/d: Z0d; Z1d< Z2d= Z3d> Z4d?S )@TestGroupingrx   abcdero   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
   ro   r   AB)r   rx   r   F
group_keysc                     | S re   r   rg   s    r$   ri   z7TestGrouping.test_grouper_index_types.<locals>.<lambda>       A rC   c                     | S re   r   rg   s    r$   ri   z7TestGrouping.test_grouper_index_types.<locals>.<lambda>   r   rC   )r   rN   arangereshaperY   r   applyrx   )r!   rx   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FrC   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   )daysrF   rG   ru   r   r   d      rw   Wkeyfreqint64r   levelr   r   )r   todayr   r   r   from_productr   rN   rO   rP   r   reset_indexr   r	   r:   r
   r   r;   r>   )r!   d0dates
date_indexr"   rA   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/////rC   c                 r   t          g dg dd          }|                    d          }|                                }|                    t          d                    }|                                }t	          j        ||           |                    d           }t	          j        ||           d S )N)r   r   r   r   r   r   r   r   r+   r'   ro   r(   r   r   r   r   c                 *    |                                  S re   rf   rg   s    r$   ri   z8TestGrouping.test_grouper_creation_bug.<locals>.<lambda>   s    15577 rC   )r   r   r:   r	   r;   r>   r   )r!   r"   r#   rA   r@   s        r$   test_grouper_creation_bugz&TestGrouping.test_grouper_creation_bug   s    ///6H6H6HIIJJJJsOO5577JJw3'''((
fh///**++
fh/////rC   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   r:   r	   r;   r>   )r!   r"   rA   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/////rC   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)rI   rJ   rK   ru   r)   r   r   rw   rK   MEr   z
2013-01-31)r   name   rI   r   )r   r   r   rY   r,   r   rN   r   r   r	   r:   pdDatetimeIndexr   as_unitr;   r<   )r!   r   dtimiserr@   exp_dtirA   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0rC   rc   FTc                    t          g dg dd          }t          t          t          d          ddgdz  d	                    |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   ro   )r9   r(   r   T)strictc                     |          S re   r   )r{   mappings    r$   ri   z<TestGrouping.test_grouper_returning_tuples.<locals>.<lambda>2  s    73< rC   F)bysort)
r   dictzipr,   r   nextiter	get_groupr;   r>   )r!   rc   r"   rz   r   rA   r@   r   s          @r$   test_grouper_returning_tuplesz*TestGrouping.test_grouper_returning_tuples+  s     111EEFFs588h%9A%=dKKKLL 	47777eDDBBwU33Bd2hhhxd##
fh/////rC   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)rq   r   )rq   r   )rq   r+   rr   r   rr   r   )rr   r+   outerinnerr(   )rI   rI   rJ   rJ   rI   rI   r   rw   r   r   Tr7   )r   ry   rv   r   rN   r   r   r	   r6   r   r;   r>   )r!   r{   df_multir@   rA   	df_singles         r$   test_grouper_column_and_indexz*TestGrouping.test_grouper_column_and_index<  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/////rC   c                    ddg}t          j        g d|          }t          t          j        d                              dd          |          }|                    |	                                          }|                                                    |                                          }|j	        
                    t          j                  |_	        t          j        ||           d S )
Nrh   rl   ))r   r   r   r   )r+   r'   )ro   r(   ru      r   r+   rw   r   )r   ry   r   rN   r   r   r   r6   r   r   astyper   r;   r>   )r!   	idx_namesr{   r"   	by_levels
by_columnss         r$   test_groupby_levels_and_columnsz,TestGrouping.test_groupby_levels_and_columnsj  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4rC   c                    g d}ddg}t          j        g dg dg dg dg dgt                    }t          ||d          }t          j        ddgddgddgddgddggt                    }t          ||d          }t	          |j        |	          }|                    d
|                                          }	t	          |j        |          }
t          j	        |	|
           d S )Nr   r   r   )r   r   r   r   T)
categoriesorderedr'   r   rw   r   )r   observed)r*   rx   )
rN   arrayintr   r   Tr   r:   r;   r>   )r!   r   r   r   r*   cat_columnsexpected_dataexpected_columnsr"   r@   rA   s              r$   *test_groupby_categorical_index_and_columnsz7TestGrouping.test_groupby_categorical_index_and_columnsx  s   &&&3Z
x\\<<<|||\\\RTW
 
 'w:tTTT1a&1a&1a&1a&1a&!I3OO+:t
 
 

 tv[111!h77;;==-/9IJJJ
fh/////rC   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   rI   rJ   ru   rw   r   r   r   )   r      r  r   r  r+   )r   r   )
r   r   r   rY   r   r   r	   r:   r;   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/////rC   c                 t    |                     d          }|j        }t          |          }ddg}||k    sJ d S )Nr   rG   rF   )r   _groupersorted)r!   r"   rz   grouperr@   rA   s         r$   test_grouper_iterzTestGrouping.test_grouper_iter  sC    ZZ__+5>!!!!!!rC   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                     |                     d          }|j        }|                     |                              d          }|                    d          }t          j        ||           d S )Nr   Tr7   )r   r	  r6   r;   r>   )r!   r"   r2   r  r@   rA   s         r$   test_groupby_grouperz!TestGrouping.test_groupby_grouper  sg    **S//"G$$))t)<<<<T<22
fh/////rC   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T1ro   T2r:   )      ?       @g      @g      @rW   rw   r   r   rp   r6   )r   r   r   r   r   )
r   r   r=   r;   r<   rY   r6   rN   r   r   )r!   sr@   rA   r   rT   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1rC   r   r   r   r+   rp   c                 6    g | ]}t          d dd|z             S )i     r   )r   )r   is     r$   
<listcomp>zTestGrouping.<listcomp>  s(    :::AYtQQ'':::rC   r'   c                      |g d|          }t          g d|d          }|                    |                                          } |ddg          }d|j        _        t          j        ||           d S )Nr   r   r+   r'   rw   )r   r   r   r   )rq   rq   )rx   r   r'   r+   )r   r   lastrx   r   r;   assert_equal)r!   frame_or_seriesrx   objgroupsr@   rA   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**(
)))))rC   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   rw   z''Timestamp' object is not subscriptabler   c                     | dd         S )Nr   r(   r   r   s    r$   ri   zDTestGrouping.test_groupby_grouper_f_sanity_checked.<locals>.<lambda>  s    3qs8 rC   c                     | S re   r   rg   s    r$   ri   zDTestGrouping.test_groupby_grouper_f_sanity_checked.<locals>.<lambda>  s    a rC   )r   r   rN   rO   rP   rQ   r   r   	TypeErrorr   r:   rx   r   r;   r<   )r!   r   tsr1   r@   rA   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 )Nrq   rr   r+   z
2000-01-01z
2000-01-039hr   )idrr   r9   r   r2  r   r   r   z
2000-01-02r'   ro   )
r   r   r	   r   r   r;   r   r%  lenkeys)r!   r"   r  rz   rA   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>>##$$))))))rC   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 )Nz:Grouper for '<class 'pandas.DataFrame'>' not 1-dimensionalr   r   )r   r   r-   r   rx   r!   r"   r1   s      r$   %test_grouping_error_on_multidim_inputz2TestGrouping.test_grouping_error_on_multidim_input  s    J]:S111 	/ 	/RXr3*~...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   A		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   secondfirst)r   r:   r;   r>   
sort_index)r!    multiindex_dataframe_random_datar@   rA   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/////rC   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 )Nznested renamer is not supportedr   r   Fas_indexr   Q)
rN   r   r3  r   r   r   r   r   r=   r6   r7  s      r$   test_agg_with_dict_raisesz&TestGrouping.test_agg_with_dict_raises  s    Ys2://
/]-S999 	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                    ddgddgg}t          j        |          }t          ddgg|          }d}|                    d          j        }|d         d	gk    sJ t          j        t          |
          5  |                    dg          j        }d d d            n# 1 swxY w Y   |d         d	gk    sJ t          ddgddgg|          }|                    d          j        }t          j        t          |
          5  |                    dg          j        }d d d            n# 1 swxY w Y   ||k    sJ t          ddgddgg|          }|                    d          j        }t          j        t          |
          5  |                    dg          j        }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr.   values	to filter r   r   r   In a future version, the keysr   r   )rG  rH  r   r   )	r   ry   r   r   r%  r;   assert_produces_warningr   r   )r!   lstmidxr"   r1   r2   rA   r@   s           r$   #test_multiindex_columns_empty_levelz0TestGrouping.test_multiindex_columns_empty_level  s   "["$56%c**Cz4000-**[))0s|s""""'cBBB 	= 	=jj"3!455<G	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s|s""""C1c(+T:::::k**1'cBBB 	< 	<ZZ!2 344;F	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<!!!!C1c(+T:::::k**1'cBBB 	< 	<ZZ!2 344;F	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<
VX.....s6   7BB#&B#D--D14D1F44F8;F8c                    t          g dg dg dgt          j        g dg dg                    }d}t          j        t
          |          5  |                    d	g          j        }d d d            n# 1 swxY w Y   |                    d	          j        }t          j        ||           t          |j	        t          j        g dg d
g                    }t          j        t
          |          5  |                    dg          j        }d d d            n# 1 swxY w Y   |                    d	          j        }t          j        ||           t          |j	        g d          }t          j        t
          |          5  |                    dg          j        }d d d            n# 1 swxY w Y   |                    d	          j        }t          j        ||           d S )Nr   r+   r'   ro   r(   r   r'   r   r+   rq   rr   rr   r3   r   r   r   r   r   rI  r   r   )rs   rs   erS  rr   rs   ))rq   rs   rT  )rr   rS  r3   )
r   r   from_arraysr;   rJ  r   r   r%  r   rF  )r!   r"   r1   rA   r@   df2df3s          r$   test_groupby_multiindex_tuplez*TestGrouping.test_groupby_multiindex_tuple9  s   \\<<<6*,@,@,@,,,+OPP
 
 

 .'cBBB 	5 	5zz8*--4H	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5H%%,
Xv...I*%%%';';';< 
 
 
 'cBBB 	8 	8{{J<007H	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8H%%,
Xv...	+T+T+TUUU'cBBB 	8 	8{{J<007H	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8H%%,
Xv.....s6   A88A<?A<;D##D'*D'F88F<?F<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}t          j        t          |          5  |                    dg          dd	g         j        }|                    dg          d
         j        }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr   rO  rP  rQ  rR  r   r   r   r   rr   rI  r   )r   r   rU  r   r6   r;   r>   r:   r.   minmaxrJ  r   r%  r   )r!   r"   expected_meanresult_meanexpected_sum
result_sumexpected_countresult_countexpected_min
result_minexpected_max
result_maxr1   expected_groupsresult_groupss                  r$   4test_groupby_multiindex_partial_indexing_equivalencezATestGrouping.test_groupby_multiindex_partial_indexing_equivalenceY  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-'cBBB 	? 	? jj(44h5IJQOJJz2237>M	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	_m<<<<<s   AK  K$'K$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  |                    d	           d d d            d S # 1 swxY w Y   d S )
Nr   r   r   r   r<  )r   r:  z2level > 0 or level < -1 only valid with MultiIndexr   r   )r   r   r:   rF  rx   r   r;   r>   rv   r   r   r-   )r!   r   r>  r"   frame	deleveledresult0result1	expected0	expected1r1   s              r$   test_groupby_levelzTestGrouping.test_groupby_levelz  sQ   0%%''	--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 C]:S111 	  	 JJQJ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   H88H<?H<c                 D   t          dgdz  dgdz  z   t          d          d                              d          }|                    d           d}t	          j        t          |	          5  |                    d
           d d d            d S # 1 swxY w Y   d S )Nr   r+   r   r(   )expvar1rs  r   z+level name foo is not the name of the indexr   rF   )r   r,   	set_indexr   r   r   r-   r7  s      r$   test_groupby_level_index_namesz+TestGrouping.test_groupby_level_index_names  s    uqyC5194eAhhGGHHRR
 
 	


;]:S111 	$ 	$JJUJ###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   1BBB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       @rw   rj  g      @g      6@)r   r   r   r   r   r   r   r   g      2@g        r  )r   r   rN   r   r   r:   r;   r<   )r!   r   rx   r  r@   rA   s         r$   test_groupby_level_with_nasz(TestGrouping.test_groupby_level_with_nas  sN   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0rC   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   r,  r   )r!   r>  rk  r1   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 S )Nr   rj  )r   rN   r   intpr;   assert_almost_equalr	  ids)r!   r   labelsr>  r2   
exp_labelss         r$   test_level_preserve_orderz&TestGrouping.test_level_preserve_order  sN     3:::NNXfbg..

w/3Z@@@@@rC   c                     |                     |j                            d                    }t          j        g dt          j                  }t          j        |j        j	        d         |           d S )Nr   r}  r   )
r   rx   get_level_valuesrN   r   r  r;   r  r	  ry  )r!   r>  r2   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ErC   c                 P   t          dt          ddd          i          }t          j        |j        d<   t          dd          }d	}|                    |g          }t          d
          t          t          t          d                              i}t          j        t          |          5  |j        }d d d            n# 1 swxY w Y   t          j        ||           |                    |          }t          d
          di}t          j        |j        |           d S )Nr   z1/1/2011im  r9   r)  r   YSr   rI  z
2011-01-01il  r   )r   r   r   NaTr_   r	   r   r   r
   rY   r,   r;   rJ  r   r%  r   )r!   r"   r  r1   rz   rA   r@   s          r$   test_list_grouper_with_natz'TestGrouping.test_list_grouper_with_nat  sI   
:s M M MNOOff4000- ZZ	""l++U4c

3C3C-D-DE'cBBB 	 	YF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
VX... G$$l++S1
V]H55555s   2CC
C
zfunc,expected	transformr   r   r   r=   r   r   r   )r   r   rx   r   c                     t          g g d          }|                    dd          } t          |d         |          d           }t          j        ||           d S )Nr   r   Tr   r   c                     | S re   r   rg   s    r$   ri   z>TestGrouping.test_evaluate_with_empty_groups.<locals>.<lambda>  s    q rC   )r   r   getattrr;   r<   )r!   rc   rA   r"   r#   r@   s         r$   test_evaluate_with_empty_groupsz,TestGrouping.test_evaluate_with_empty_groups  sd    4 2"~~&&JJqTJ**$1t$$[[11
vx00000rC   c                     t          g g g d          }|                    dd          }|                    d           }t          g g dd           }t          j        ||           d S )Nr   r   Fr   c                 0    | |                                  z  S re   rf   rg   s    r$   ri   zMTestGrouping.test_groupby_apply_empty_with_group_keys_false.<locals>.<lambda>  s    1quuww; rC   )r   r   rw   )r   r   r   r;   r>   )r!   r"   r#   r@   rA   s        r$   .test_groupby_apply_empty_with_group_keys_falsez;TestGrouping.test_groupby_apply_empty_with_group_keys_false  sx    
 Rbr2233JJsuJ--..//2B//t<<<
fh/////rC   c           	      ^   t          g dd          }|                    g           }|                                }|                    t	          g t
          j                            }t          j        ||           t          |j
        j                  dk    sJ t          j        |j
        j        t          j        g t          j        t
          j                                       |j
        j        dk    sJ |                    |          }|j
        }|j        }dg}||k    sJ d S )Nr   float64r  r   r   r   )r   r   r6   set_axisr
   rN   r  r;   r<   r3  r	  	groupingsassert_numpy_array_equalr  r   r   ngroupsrv   )r!   r  grr@   rA   rz   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....
#KORXb0A0ABBB	
 	
 	
 {"a'''' YYq\\+8!!!!!!rC   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 )Nrh   r      r   r   r   r   r   strr   r  )rx  ry  rv   r   r   )r*   rx   r   r   )
r   rN   nanru  r   r:   r   r
   r;   r>   r?   s       r$   %test_groupby_level_index_value_all_naz2TestGrouping.test_groupby_level_index_value_all_na2  s    262rvr 23___
 
 

)S#J

 	 3*--1133se5111593M3M3MN2hCj  
 E	
 	
 	
 	fh/////rC   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){   rq   r  )r  rr   r  )r2  categoryvaluer   r2  r  r   r  r  r  )r   r   rx   )
r   ru  r  r   r:   r
   rN   r   r;   r>   )r!   r"   emptyr@   rA   s        r$   #test_groupby_multiindex_level_emptyz0TestGrouping.test_groupby_multiindex_level_emptyD  s    __ooo.8S8S8S
 
 
 \\4,--28a< t$$((**I"(666
 
 

 	fh/////rC   c           	      H   t          g dg dg dg dt          d          d          }|                    ddg	          }|                    d                              d
           }||j                 }t          j        |                    d          |           d S )N)
r   r)   	   r'   r+   r+   ro   r  r+   r(   )
r+   r)   r(   r'   r  r   r   r  r   r  )
r(   ro   r  r)   ro   r   r   r   r  r)   )
r   r   r   )r   r'   rt   rt   rt   rt   )ro   )r(   
aaabbbbcde)num1num2num3category_tuplecategory_stringr  r  r   c                 .    |                      d          S )Nr  r  )sort_valuesrg   s    r$   ri   zHTestGrouping.test_groupby_tuple_keys_handle_multiindex.<locals>.<lambda>j  s    ammvm>V>V rC   T)drop)	r   rY   r  r   r   r   r;   r>   r   )r!   r"   rA   r@   s       r$   )test_groupby_tuple_keys_handle_multiindexz6TestGrouping.test_groupby_tuple_keys_handle_multiindexS  s    666666777# # # $(#5#5! 
 
( >>&6%?>@@,--334V4VWWFN+
f00d0;;XFFFFFrC   c                 h   t          dgdggdg                              d           }t          dg                              d           }t          dd	          g}|                    |                                           |                    |                                           d S )
Nz
05/29/2019z
05/28/2019r   r   c                 6    t          j        | d                   S Nr   r   to_datetimer"   s    r$   ri   zGTestGrouping.test_groupby_grouper_immutable_list_item.<locals>.<lambda>r      BN2f:66 rC   )r   c                 6    t          j        | d                   S r  r  r  s    r$   ri   zGTestGrouping.test_groupby_grouper_immutable_list_item.<locals>.<lambda>u  r  rC   1Dr   )r   assignr	   r   head)r!   df1rV  grouperss       r$   (test_groupby_grouper_immutable_list_itemz5TestGrouping.test_groupby_grouper_immutable_list_itemn  s     ,,86(KKKRR66 S 
 
 )))0066 1 
 
 T2223H""$$$H""$$$$$rC   N)5r   r   r   r   r   r   r
   rY   rN   r   floatr   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r,   r&  r.  r5  r8  r?  rD  rM  rX  rh  rq  rv  rz  r|  r  r  r  r   r  r  r  r  r  r  r  r  r   rC   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 00 0 0>1 1 14 [VeT]330 0 430 ,0 ,0 ,0\5 5 50 0 0&0 0 0," " "  
0 0 02 2 2& [LL   ::q:::	
 * * *1 1 1* * *./ / /
0 0 0(A A A/ / /8/ / /@= = =B     B$ $ $1 1 10
/ 
/ 
/ [11122223	
 A A AF F F6 6 6& [ ARZ000
 "*EE"BJUV4W4W4W   "*EE"BJUV4W4W4W  	
 *1 1+ *1	0 	0 	0" " "00 0 0$0 0 0G G G6% % % % %rC   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  )rF   rF   rG   rF   rF   rG   r   )DATElabelVALr  r  r   r   z<must supply a tuple to get_group with multiple grouping keysr   rF   zHmust supply a same-length tuple to get_group with multiple grouping keys)rF   rG   baz)r   r   r  r   r   r   r%  r   r   to_pydatetimer  r;   r>   r   r   r-   )r!   r"   r#   r   rn  rT   result3r1   s           r$   test_get_groupzTestGetGroup.test_get_group  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   ro   r      r   )r   ro   r+   r   rw   z"Interval\(10, 15, closed='right'\)r   r   r  )r   r   r   cutr   Intervalr;   r>   r   r   r    )r!   r   rs   binsr#   r@   rA   r1   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   r  rw   r  r   r   )
2010-01-01
2010-01-02r  r  c                     g | ]}|fS r   r   )r   rh   s     r$   r  z@TestGetGroup.test_get_group_grouped_by_tuple.<locals>.<listcomp>  s    111111rC   )r  )r   r   r   r   r;   r>   r   r  )r!   r"   r  rA   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/////rC   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   rC   r   c                 "    j         | df         S r   r   r   s    r$   ri   zJTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<lambda>  r   rC   )	r   r   r   r   r   r%  r4  r;   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/////rC   c                     t          j        d          }d}t          ||t                    }t	          d          }|                    |          }t          t          |          d           J d S )Nr   r   r9   r1  )r   r   r   objectr	   r   r   r   )r!   rx   r*   seriesr  r2   s         r$   test_groupby_with_emptyz$TestGetGroup.test_groupby_with_empty  sn     $$e6222s###..))DMM4((00000rC   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 )Nrq   abssbabr   ro   )rq   rr   r  )r   r  r   )rx   r   r+   r'   ro   r   )r   rY   r;   r>   r   r   r_   r
   r.   r:   nth)r!   r"   rs  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:::::rC   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)rF   rG   r   r   )rF   rG   r   r   )rF   r  r   r+   )r<  r:  thirdrI   r   r<  r:  )r<  r:  r  )rF   rG   r   r   )rF   r  r   r   )r   ru  r   r0   rR   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//////rC   N)
r   r   r   r  r  r  r  r  r  r  r   rC   r$   r  r    s~        -/ -/ -/^- - -0 0 00 0 0(1 1 1; ; ;0 0 0 0 0rC   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          }d}t          j        t          |          5  |j        }||j        u sJ 	 d d d            n# 1 swxY w Y   |                                D ]0\  }}|j        |         d         |k                                    sJ 1|                     ddg          }|j        }||j        u sJ |                                D ]g\  }}|j        |         d         |d         k                                    sJ |j        |         d         |d         k                                    sJ hd S )Nr   rI  r   r   r   r   )r   r;   rJ  r   r%  itemsrR   all)r!   r"   r2   r1   r%  kvs          r$   test_groupszTestIteration.test_groups  s   **cU##-'cBBB 	, 	,^FW^+++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, LLNN 	/ 	/DAqF1IcNa',,......**c3Z((''''LLNN 	2 	2DAqF1IcNad*//11111F1IcNad*//111111	2 	2s   AAAc                 b    |                     d d g          }|j        j        d         D ]}d S )Nc                 *    |                                  S re   )weekdayrg   s    r$   ri   z9TestIteration.test_grouping_is_iterable.<locals>.<lambda>#  s    QYY[[ rC   c                     | j         S re   )yearrg   s    r$   ri   z9TestIteration.test_grouping_is_iterable.<locals>.<lambda>#  s    AF rC   r   )r   r	  r  )r!   tsframer2   r#   s       r$   test_grouping_is_iterablez'TestIteration.test_grouping_is_iterable   sK     //#8#8:J:J"KLL !+A. 	 	A	 	rC   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(   )rq   rq   rq   rr   rr   rr   12r  r   r  r   rq   r  r   r   r   r   rr   r'   r+   ro   )	r   rN   r   r   r   rY   	enumerater;   r<   )r!   r  k1k2r2   iteratedrA   r  rI   rJ   rK   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"----		. 	.rC   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 d S )N)rr   rr   rr   rq   rq   rq   r  r   r(   )v1v2r  r  )rI   rJ   rK   fourfivesixrw   r  r  rq   r  r'   r   r+   ro   rr   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>a  s    111gc2#r111rC   )rN   r   r   rO   rP   rQ   r   rY   rx   rR   r  r;   r>   r3  )r!   three_groupr  r  r"   r2   r  r{   rA   r  rI   rJ   rK   r  r  r  r%  s                    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rC   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_dictifyd  s    T"**S//""###T"**c3Z(())***T"S'//"S'**++,,,T"S'//2c7BsG"45566777T"**S//#&''(((T"**c3Z((-../////rC   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-10rw   r   r1  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	   r3  r%  r  r   r   r;   r>   r_   )r!   r"   r2   ress       r$   test_groupby_with_small_elemz*TestIteration.test_groupby_with_small_eleml  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3rC   c                     t          j        t          d          t          d          g          }t          g dg|          }|                    |d                   }|j        j        d                                         }d}||k    sJ d S )NAABaba)r   r   r+   r   )r   rq   r   zGrouping(('A', 'a')))r   rU  rY   r   r   r	  r  __repr__)r!   r   r"   r  r@   rA   s         r$   test_grouping_string_reprz'TestIteration.test_grouping_string_repr  s    #T%[[$u++$>??			{B///ZZ:''&q)2244)!!!!!!rC   N)
r   r   r   r  r  r  r  r  r  r$  r   rC   r$   r  r    s        2 2 2&  . . .(%  %  % N0 0 024 24 24h" " " " "rC   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 |                                }t          ddgddgddgd          }t          j	        ||           d S )Nrn   r  )rq   rr   r3   rq   r   rr   r   FrA  r   r   r   r  ro   )
r   ru  r   r	   r	  r  in_axisr:   r;   r>   )r"   rz   r@   rA   s       r$   test_grouping_by_key_is_in_axisr'    s    	CC	D	D	N	Ns	S	SB	W3'''S)9)9)9:U	K	KB{$Q'////; #++++VVXXF1vQF!Q@@AAH&(+++++rC   c                     t          dt          j        d          t          j        gi          } |                     t          j        ddgt
          j                            d                                         }t          ddddt                    }|j                            t
          j                  |_        t          j        ||           d S )	Nr  r   r   r   TFr   r  )r   r   	Timedeltar  r   rN   r   r   anyr   boolrx   r   r;   r<   )r"   r@   rA   s      r$   test_groupby_any_with_timedeltar,    s    	Gbl1oorv67	8	8BZZ!Qrx88899'BFFHHF$5))tDDDH^**2844HN68,,,,,rC   ) __doc__datetimer   r   numpyrN   r   pandas.errorsr   r   pandasr   r   r   r	   r
   r   r   r   r   r   pandas._testing_testingr;   pandas.core.groupby.grouperr   r   r   r  r  r'  r,  r   rC   r$   <module>r5     s          
            
    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
       0 0 0 0 0 0H/ H/ H/ H/ H/ H/ H/ H/^H% H% H% H% H% H% H% H%^B0 B0 B0 B0 B0 B0 B0 B0R\" \" \" \" \" \" \" \"~	, 	, 	,	- 	- 	- 	- 	-rC   