
    .iJ                         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y)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                  j                  dd	 d
 g      d        Zd Zy)TestSelectionc                 $   t        ddggddg      }|j                  d      }t        j                  t        d      5  |dg    d d d        t        j                  t        d	      5  |ddg    d d d        y # 1 sw Y   5xY w# 1 sw Y   y xY w)
N      ABcolumnsz"Columns not found: 'C'"matchCz^[^A]+$)r   groupbypytestraisesKeyError)selfdfgs      `/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/groupby/test_grouping.pytest_select_bad_colsz"TestSelection.test_select_bad_cols&   s    Ax#s4JJsO]]8+GH 	seH	 ]]895 	 sCjM	 		 		 	s   A:)B:BBc           
         t        g dt        d      t        dd      t        ddd      g      }d}t        j                  t        |	      5  |j                  d
       d d d        t        j                  t        |	      5  |j                  d
dg       d d d        |j                  d      }|j                         }|j                  j                  dk(  sJ |j                  j                  dk(  sJ y # 1 sw Y   xY w# 1 sw Y   mxY w)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 	JJsO	]]:S1 	#JJSz"	# **S/MMOyy  A%%%yy~~"""	 		# 	#s   C7D7D Dc                    |j                  d      j                  j                         }|j                  d      d   j                         }t        j                  ||       d|d<   |j                  d      j                  d      }|j                  d      g d   j                  d      }t        j                  ||       y )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6
C%%4%8::c?#56::6B
fh/    c           	         t        g dg dt        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      d      }|j                  d      ddg   j                         }|j                  d      |j                  dd	    j                         }|j                  d d g d
f   j                  d      j                         }t        j                  ||       t        j                  ||       y )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QYY**1-==a@YY**1-==a@YY**1-==a@
 C#s,113**S/"**Qq/277966!_,-55c:??A
fh/
gx0rC   c                 J   t        t        d      dz  t        j                  j	                  d      j                  d      t        j                  j	                  d      j                  d      t        j                  j	                  d      j                  d      d      }|j                  d      |j                  dd    j                         }|j                  d      ddg   j                         }|j                  d d g d	f   j                  d      j                         }t        j                  ||       t        j                  ||       t        j                  t        d
      5  |j                  d      d   j                          d d d        y # 1 sw Y   y xY w)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?   <!#99((+;;A>99((+;;A>99((+;;A>	
 Arzz!A/446**Q-A',,.66!Y,'//2779
fh/
gx0 ]]:-QR 	'JJqM$$$&	' 	' 	's   -#FF"c                     t        j                  t        d      5  |j                  d      d   j	                          d d d        y # 1 sw Y   y xY w)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 	-JJsOH%**,	- 	- 	-s   #AAc           	      4   t        g dg dt        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      d      }|j                  d      d   j                         }|j                  d d ddgf   j                  d      j                         }|j                  d d df   }|}t        j                  ||       y )	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QYY**1-==a@YY**1-==a@YY**1-==a@
 C%**,66!c3Z-(005::<MM!Q$'	
vx0rC   funcc                 "    | j                         S Nr:   xs    r$   <lambda>zTestSelection.<lambda>   s    1557 rC   c                 &    | j                  d       S )Nc                 "    | j                         S re   rf   )ys    r$   ri   z(TestSelection.<lambda>.<locals>.<lambda>   s    aeeg rC   )r=   rg   s    r$   ri   zTestSelection.<lambda>   s    aee4E.F rC   c                     t        g ddddd      }|j                  ddg      ddg   }t        j                  d	d
gddg      }t        ddgddgd|      } ||      }t	        j
                  ||       y )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    
 YQQQ?@ZZc
#S#J/$$ff%5c3ZHAq6A7sCb
fh/rC   c                     t        dd dD        i      j                  d      }j                  fd      }|j                  }|j                  }t        j                  ||       y )NTuplesc              3      K   | ]=  }t         j                  j                  d       j                  ddd      D ]  }||f 
 ? ywr   r+   ro   NrN   rO   rP   integers.0rh   rl   s      r$   	<genexpr>zJTestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<genexpr>   O      YY2215>>q!QG  F   AA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   se     #
 ZZ!JJ67	::""
VX.rC   N)__name__
__module____qualname__r%   r4   rB   rU   rZ   r]   rb   r   markparametrizer|   r    rC   r$   r   r   %   sY    	#"01&',-
1& [["$FG	0	0/rC   r   c                      e Zd Zej                  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                  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                  j                  dg dg d ed      D  cg c]  }t9        ddd|z          c}}} 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                  j                  d+dg d,gdg d-gg      d.        Z*d/ Z+d0 Z,ej                  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> Z3d? Z4d@ Z5yAc c}}} w )BTestGroupingrx   abcdero   dtypez
2020-01-01periodsc                 V   t        t        j                  d      j                  dd      t	        d      |      }|j                  t	        d      d      j                  d	        |j                  d d d
   |_        |j                  t	        d      d      j                  d        y )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|     ryy},,Q2DJeT


4=U
399+F88DbD>


4=U
399+FrC   c                    t        j                         t        d      z
  }t        |t        j                               }t	        j
                  ||gddg      }t        t        j                  j                  d      j                  ddd	      |
      }|j                         j                  t        dd      t        dd      g      j                         }t        dgd      |_        |j                  t        dd      t        dd      g      j                         }t#        j$                  ||       |j                  t        dd      t        dd      g      j                         }t#        j$                  ||       y )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   s9    ZZ\I2..2tzz|,,,eU^E5>R
ryy,,Q/88CEZX NNWg%c2GC4PQRSU 	 !!G45s+W5s-KL

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

#% 	 	fh/rC   c                 <   t        g dg dd      }|j                  d      }|j                         }|j                  t        d            }|j                         }t	        j
                  ||       |j                  d       }t	        j
                  ||       y )N)r   r   r   r   r   r   r   r   r+   r'   ro   r(   r   r   r   r   c                 "    | j                         S re   rf   rg   s    r$   ri   z8TestGrouping.test_grouper_creation_bug.<locals>.<lambda>   s    1557 rC   )r   r   r:   r	   r;   r>   r   )r!   r"   r#   rA   r@   s        r$   test_grouper_creation_bugz&TestGrouping.test_grouper_creation_bug   sx    /6HIJJJsO557JJw3'(
fh/*+
fh/rC   c                    t        g dg dg dd      }|j                  d      j                         }|j                  t        d      g      }|j                         }t	        j
                  ||       |j                  ddg      j                         }|j                  t        d      t        d      g      }|j                         }t	        j
                  ||       |j                  dt        d      g      }|j                         }t	        j
                  ||       |j                  t        d      dg      }|j                         }t	        j
                  ||       y )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$    $+=DV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	      |
      }|j                  t        dd            j                         }t        j                  t        d      gdd      j                  |      }t        dg|
      }t        j                   ||       |j                  t        d            j                         }|j                  d      j                         }t        j                   ||       y )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  s
   QT:$$$Zq3')
 IIaw'
 W7>?CCE""|$%Dw

'$- 	 D
 	vx0 W512668;;U;+//1
vx0rC   rc   FTc                 V   t        g dg dd      }t        t        t        d      ddgdz  d	            |r|j	                  fd
d      }n|j	                  d      }t        t        |            \  }}|dk(  sJ |j                  |      }t        j                  ||       y )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EFs58h%9A%=dKL7eDBwU3Bd2hhxd#
fh/rC   c                 P   t        j                  g d      }ddg|_        t        t	        j
                  d      g dd|      }|j                  dt        d	      g      j                  d
      }|j                         j                  ddg      j                  d
      }t        j                  ||       |j                  t        d	      dg      j                  d
      }|j                         j                  ddg      j                  d
      }t        j                  ||       |j                  d      }|j                  dt        d	      g      j                  d
      }|j                         j                  ddg      j                  d
      }t        j                  ||       |j                  t        d	      dg      j                  d
      }|j                         j                  ddg      j                  d
      }t        j                  ||       y )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
 g&	))A,%OP
 !!3g(>"?@EESWEX  "**C>:??T?R 	 	fh/ !!7#93"?@EESWEX  "**GS>:??T?R 	 	fh/ ((1	""Cw)?#@AFF G 
 !!#++S'N;@@d@S 	 	fh/ ""G'$:C#@AFF G 
 !!#++WcN;@@d@S 	 	fh/rC   c                    ddg}t        j                  g d|      }t        t        j                  d      j                  dd      |      }|j                  |	      j                         }|j                         j                  |      j                         }|j                  j                  t        j                        |_	        t        j                  ||       y )
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	$$%EYWryy},,R33?JJYJ/446	^^%--i8==?
 (//66rxx@

i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
                  |	      }|j                  d
|      j                         }	t	        |j
                  |      }
t        j                  |	|
       y )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
xx<|\RTW
 'w:tT1a&1a&1a&1a&1a&!I3O+:t

 tvv[1!h7;;=-//9IJ
fh/rC   c                    t        ddit        j                  t        d      t	        dd      gddg	      
      }|j                  t        d      t        dd      g      j                         }t        dg dit        j                  t        d      t	        ddd      gddg	      
      }t        j                  ||       y )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C

#% 	 *+))dZ
qIJen
 	fh/rC   c                 j    |j                  d      }|j                  }t        |      }ddg}||k(  sJ y )Nr   rG   rF   )r   _groupersorted)r!   r"   rz   grouperr@   rA   s         r$   test_grouper_iterzTestGrouping.test_grouper_iter  s8    ZZ_++5>!!!rC   c                     t        j                  t        d      5  |j                  g        d d d        y # 1 sw Y   y xY w)NzNo group keys passed!r   )r   r   r-   r   r\   s     r$   test_empty_groupszTestGrouping.test_empty_groups  s1    ]]:-DE 	JJrN	 	 	s	   7A c                     |j                  d      }|j                  }|j                  |      j                  d      }|j                  d      }t        j                  ||       y )Nr   Tr7   )r   r
  r6   r;   r>   )r!   r"   r2   r  r@   rA   s         r$   test_groupby_grouperz!TestGrouping.test_groupby_grouper  sV    **S/""G$))t)<<<T<2
fh/rC   c                    t        ddi      }|j                  ddi      j                  d      }|j                  dg      j                  d      }t        j                  ||       t        g dt        d            }ddd	d	d
}|j                  |      j                         }|j                  |      j                  d      }t        j                  g dt        j                        }|j                  |      j                         }|j                  |      j                         }t        j                  ||       t        j                  ||       t        j                  ||       y )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  s   D!9D$<(,,U399dV$((/
vx0'tF|<27#((*))G$((0((<rxx899W%**,IIg&++-	
vx0
vw/
vy1rC   r   r   r   r+   rp   r'   i     r   c                      |g d|      }t        g d|d      }|j                  |      j                         } |ddg      }d|j                  _        t        j                  ||       y )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]     l%8E
CV$))+"Aq6*(
)rC   c                    t        ddd      }t        t        j                  j	                  d      j                  d      |      }d}t        j                  t        |      5  |j                  d	        d d d        |j                  d
       j                         }|j                  |j                        j                         }d |j                  _        t        j                  ||       y # 1 sw Y   zxY w)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8 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  s    ="4@BII))!,<<R@N 8]]9C0 	-JJ+,	- K(,,.::bhh'++-"
vx0	- 	-s   %C11C:c           	         t        ddgdz  t        ddd      d      }t        dd	
      }|j                  |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                  j                               dk(  sJ y )Nrq   rr   r+   z
2000-01-01z
2000-01-039hr   )idrr   r9   r   r0  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
 c,ZZ$( |$c*QF|$c*QC|$c*QC|$c*QF	
 	RYY1 299>>#$)))rC   c                     d}t        j                  t        |      5  t        |j                  |ddg          d d d        y # 1 sw Y   y xY w)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 	/RXXr3*~.	/ 	/ 	/s   AAc                    |j                  d      j                         }|j                  d      j                         }t        j                  ||       |j                  d      j                         }|j                  d      j                         }t        j                  ||       |j                  ddg      j                         }|j	                         }t        j                  ||       |j                  ddg      j                         }|j                  ddg      j                         }t        j                  ||       y )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  s)   1999CGGI3;;(;KOOQ
fh/1999CGGI3;;';JNNP
fh/199R9IMMO3>>@
fh/199W9NRRT3;;W% < 

#% 	 	fh/rC   c                 ,   t        j                  t        |j                              |_        d}t	        j
                  t        |      5  |j                  dd      d   j                  dt         j                  i       d d d        y # 1 sw Y   y xY w)Nznested renamer is not supportedr   r   Fas_indexr   Q)
rN   r   r1  r   r   r   r   r   r=   r6   r5  s      r$   test_agg_with_dict_raisesz&TestGrouping.test_agg_with_dict_raises  so    YYs2::/
/]]-S9 	AJJq5J)!,00#rww@	A 	A 	As   6B

Bc                    ddgddgg}t        j                  |      }t        ddgg|      }d}|j                  d      j                  }|d   d	gk(  sJ t        j                  t        |
      5  |j                  dg      j                  }d d d        |d   d	gk(  sJ t        ddgddgg|      }|j                  d      j                  }t        j                  t        |
      5  |j                  dg      j                  }d d d        |k(  sJ t        ddgddgg|      }|j                  d      j                  }t        j                  t        |
      5  |j                  dg      j                  }d d d        t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   9xY w)Nr.   values	to filter r   r   r   In a future version, the keysr   r   )rE  rF  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s|s"""''cB 	=jj"3!45<<G	=s|s"""C1c(+T:::k*11''cB 	<ZZ!2 34;;F	<!!!C1c(+T:::k*11''cB 	<ZZ!2 34;;F	<
VX.!	= 	=	< 	<	< 	<s$   1F*F(F4F%(F14F=c                    t        g dg dg dgt        j                  g dg dg            }d}t        j                  t
        |      5  |j                  d	g      j                  }d d d        |j                  d	      j                  }t        j                  |       t        |j                  t        j                  g dg d
g            }t        j                  t
        |      5  |j                  dg      j                  }d d d        |j                  d	      j                  }t        j                  ||       t        |j                  g d      }t        j                  t
        |      5  |j                  dg      j                  }d d d        |j                  d	      j                  }t        j                  ||       y # 1 sw Y   gxY w# 1 sw Y   xY w# 1 sw Y   TxY w)Nr  r+   r'   ro   r(   r   r'   r   r+   rq   rr   rr   r3   r   r   r   r   r   rG  r   r   )rs   rs   erQ  rr   rs   ))rq   rs   rR  )rr   rQ  r3   )
r   r   from_arraysr;   rH  r   r   r#  r   rD  )r!   r"   r1   rA   r@   df2df3s          r$   test_groupby_multiindex_tuplez*TestGrouping.test_groupby_multiindex_tuple9  s   <6**,@,+OP

 .''cB 	5zz8*-44H	5H%,,
Xv.II**%';<
 ''cB 	8{{J<077H	8H%,,
Xv.		+TU''cB 	8{{J<077H	8H%,,
Xv.-	5 	5	8 	8	8 	8s$   G.G8G(GG%(G1c                    t        g dg dg dgt        j                  g dg dg            }|j                  dg      dd	g   j	                         }|j                  dg      d
   j	                         }t        j                  ||       |j                  dg      dd	g   j                         }|j                  dg      d
   j                         }t        j                  ||       |j                  dg      dd	g   j                         }|j                  dg      d
   j                         }t        j                  ||       |j                  dg      dd	g   j                         }|j                  dg      d
   j                         }	t        j                  ||	       |j                  dg      dd	g   j                         }
|j                  dg      d
   j                         }t        j                  |
|       d}t        j                  t        |      5  |j                  dg      dd	g   j                  }|j                  dg      d
   j                  }d d d        t        j                         y # 1 sw Y    xY w)Nr  rM  rN  rO  rP  r   r   r   r   rr   rG  r   )r   r   rS  r   r6   r;   r>   r:   r.   minmaxrH  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  s8   <6**,@,+OP

 

H:.(/CDIIKjj(,S1668
m[9zz8*-x.BCGGIZZ
+C0446

lJ7XJ/80DEKKMzz8*-c288:
nl;zz8*-x.BCGGIZZ
+C0446

lJ7zz8*-x.BCGGIZZ
+C0446

lJ7-''cB 	? jj(4h5IJQQOJJz237>>M	? 	_m<	? 	?s   #AJJc                    |}|j                         }|j                  d|      j                         }|j                  d|      j                         }|j                  |d   j                  |      j                         }|j                  |d   j                  |      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 |j                  d|      j                         }|j                  d|      j                         }t        j                  ||       t        j                  ||	       d}
t        j                  t        |
      5  |j                  d	       d d d        y # 1 sw Y   y xY w)
Nr   r   r   r   r:  )r   r8  z2level > 0 or level < -1 only valid with MultiIndexr   r   )r   r   r:   rD  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  s   0%%'	--ad-3779--ad-3779MM)G"4";";$MGKKM	MM)H"5"<"<4MHLLN	&	'	}}!!W,,,}}!!X---
gy1
gy1}}!!U[[%6%6q%9999}}!!U[[%6%6q%9999 --gD-9==?--hT-:>>@
gy1
gy1 C]]:S1 	 JJQJ	  	  	 s   $I  I	c                    t        dgdz  dgdz  z   t        d      d      j                  d      }|j                  d       d}t	        j
                  t        |	      5  |j                  d
       d d d        y # 1 sw Y   y xY w)Nr   r+   r   r(   )expvar1rq  r   z+level name foo is not the name of the indexr   rF   )r   r,   	set_indexr   r   r   r-   r5  s      r$   test_groupby_level_index_namesz+TestGrouping.test_groupby_level_index_names  sz    uqyC5194eAhGHRR
 	


;]]:S1 	$JJUJ#	$ 	$ 	$s   !A==Bc                    t        ddgg dgg dg dg      }t        t        j                  d      |      }|j	                  d|	      j                         }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      |      }|j	                  d|	      j                         }t        d
dgddg      }t        j                  ||       y )Nr   r   r  )r   r   r   r   r   r   r   r   )r   r   r   r+   r   r   r   r+   )levelscodesg       @rw   rh  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  s    FL)+-EF
 299S>/.2243+aV4
vx0FL),.FG
 299S>/.2243+c3Z8
vx0rC   c                    |}d}t        j                  t        |      5  |j                          d d d        d}t        j                  t        |      5  |j                  d d        d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Nz*You have to supply one of 'by' and 'level'r   )r   r   )r   r   r*  r   )r!   r<  ri  r1   s       r$   test_groupby_argszTestGrouping.test_groupby_args  sw    0:]]9C0 	MMO	 ;]]9C0 	/MMTM.	/ 	/		 		/ 	/s   A3A?3A<?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                     |j                  d|      }t        j                  |t        j                        }t	        j
                  |j                  j                  |       y )Nr   rh  )r   rN   r   intpr;   assert_almost_equalr
  ids)r!   r   labelsr<  r2   
exp_labelss         r$   test_level_preserve_orderz&TestGrouping.test_level_preserve_order  sI     3:::NXXfbgg.

w//33Z@rC   c                     |j                  |j                  j                  d            }t        j                  g dt        j
                        }t        j                  |j                  j                  d   |       y )Nr   r{  r   )
r   rx   get_level_valuesrN   r   r}  r;   r~  r
  rw  )r!   r<  r2   r  s       r$   test_grouping_labelsz!TestGrouping.test_grouping_labels  s^    2::,22CCAF
 XX<BGGL

w//55a8*ErC   c                 "   t        dt        ddd      i      }t        j                  |j                  d<   t        dd      }d	}|j                  |g      }t        d
      t        t        t        d                  i}t        j                  t        |      5  |j                  }d d d        t        j                  |       |j                  |      }t        d
      di}t        j                  |j                  |       y # 1 sw Y   ^xY w)Nr   z1/1/2011im  r9   r'  r   YSr   rG  z
2011-01-01il  r   )r   r   r   NaTr_   r	   r   r   r
   rY   r,   r;   rH  r   r#  r   )r!   r"   r  r1   rz   rA   r@   s          r$   test_list_grouper_with_natz'TestGrouping.test_list_grouper_with_nat  s    
:s MNOfff40- ZZ	"l+U4c
3C-DE''cB 	YYF	
VX. G$l+S1
V]]H5	 	s   DDzfunc,expected	transformr   r   r   r=   r   r   r   )r   r   rx   r   c                     t        g g d      }|j                  dd      } t        |d   |      d       }t        j                  ||       y )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  sK    4 2"~&JJqTJ*$1t$[1
vx0rC   c                     t        g g g d      }|j                  dd      }|j                  d       }t        g g dd       }t        j                  ||       y )Nr   r   Fr   c                 (    | | j                         z  S re   rf   rg   s    r$   ri   zMTestGrouping.test_groupby_apply_empty_with_group_keys_false.<locals>.<lambda>  s    1quuw; 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  sW    
 Rbr23JJsuJ-./2B/t<
fh/rC   c           	         t        g dd      }|j                  g       }|j                         }|j                  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                  }|j"                  }dg}||k(  sJ y )Nr   float64r  r   r   r   )r   r   r6   set_axisr
   rN   r}  r;   r<   r1  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YYr]::eBbgg67
vx0 2;;(()Q...
##KKOORXXb0AB	
 {{""a''' YYq\++8!!!rC   c           
      n   t        dt        j                  dgd t        j                  dggg d      j                  ddg      }|j	                  ddg      j                         }t        g t        t        dgd	
      t        g d
      gg g gddg      dgd      }t        j                  ||       y )Nrh   r      r   r   r   r   r   strr   r  )rv  rw  rv   r   r   )r*   rx   r   r   )
r   rN   nanrs  r   r:   r   r
   r;   r>   r?   s       r$   %test_groupby_level_index_value_all_naz2TestGrouping.test_groupby_level_index_value_all_na2  s    2662rvvr 23_

)S#J
 	 3*-113se51593MN2hCj
 E	
 	fh/rC   c           	      4   t        g dg dgg d      }|j                  ddg      }||j                  dk     }|j                  d      j	                         }t        dd	gt        g t        j                  d
            }t        j                  ||       y )N){   rq   r  )r  rr   r  )r0  categoryvaluer   r0  r  r   r  r  r  )r   r   rx   )
r   rs  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    o.8S
 \\4,-288a< t$((*I"((6

 	fh/rC   c           	         t        g dg dg dg dt        d      d      }|j                  ddg	      }|j                  d      j	                  d
       }||j
                     }t        j                  |j                  d      |       y )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                 &    | j                  d      S )Nr  r  )sort_valuesrg   s    r$   ri   zHTestGrouping.test_groupby_tuple_keys_handle_multiindex.<locals>.<lambda>j  s    ammvm>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7# $(#5!
( >>&6%?>@,-334VWFNN+
f00d0;XFrC   c                    t        dgdggdg      j                  d       }t        dg      j                  d       }t        dd	      g}|j                  |      j	                          |j                  |      j	                          y )
Nz
05/29/2019z
05/28/2019r   r   c                 2    t        j                  | d         S Nr   r   to_datetimer"   s    r$   ri   zGTestGrouping.test_groupby_grouper_immutable_list_item.<locals>.<lambda>r      BNN2f:6 rC   )r   c                 2    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!   df1rT  grouperss       r$   (test_groupby_grouper_immutable_list_itemz5TestGrouping.test_groupby_grouper_immutable_list_itemn  s     ,,86(KRR6 S 
 )006 1 
 T23H""$H""$rC   N)6r   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$  r,  r3  r6  r=  rB  rK  rV  rf  ro  rt  rx  rz  r  r  r  r   r  r  r  r  r  r  r  r  )r   ir   s   000r$   r   r      su   [[$w- )"))A,)"))AU+,|Q/q1	
	G	G0800>14 [[VeT]30 40 ,0\50&0,"
02& [[ 16q::AYtQQ':	
**1*./
0(A/8/@=B B$10
/ [[1223	
AAF6& [[ ARZZ0
 "**E"BJJUV4W "**E"BJJUV4W	
*1+*1	0"00$0G6%E ;s   &G?r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestGetGroupc                    t        t        j                  g d      g dg dd      }|j                  d      }t	        t        |j                              }|j                  |      }|j                  t        |      j                               }|j                  t        t        |                  }t        j                  ||       t        j                  ||       |j                  ddg      }t	        t        |j                              }|j                  |      }|j                  t        |d         j                         |d   f      }|j                  t        t        |d               |d   f      }t        j                  ||       t        j                  ||       d	}t        j                  t        |
      5  |j                  d       d d d        t        j                  t        |
      5  |j                  d       d d d        d}t        j                  t        |
      5  |j                  d       d d d        y # 1 sw Y   vxY w# 1 sw Y   MxY w# 1 sw Y   y xY w)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   rl  rT   result3r1   s           r$   test_get_groupzTestGetGroup.test_get_group  s    	 D)
" JJv4>"++c"++in::<=++c)C.12
gw/
gw/JJ()4>"++c"++yQ0>>@#a&IJ++s9SV#45s1v>?
gw/
gw/ M]]:S1 	KK	]]:S1 	KK	X]]:S1 	/KK-.	/ 	/	 		 		/ 	/s$   I;I2I%II"%I.c                    t        g d      }g d}|j                  t        j                  |d   |      |      }|j	                  t        j
                  dd            }t        ddgddg      }t        j                  ||       d	}t        j                  t        |
      5  |j	                  t        j
                  dd             d d d        y # 1 sw Y   y xY w)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    l#IIbffQqT4(8I< R[[A./aVAq62
fh/3]]83/ 	-KKB+,	- 	- 	-s   %&CCc                    t        g dgdg      j                  }|j                  d      }t        dddgiddg      }|j                  d      }t	        j
                  ||       t        j                  g d      }t        d|D cg c]  }|f c}i      }|j                  d      }|j                  d      }t        d|d   f|d   fgiddg      }t	        j
                  ||       y c c}w )	N)r   r   r  r   r  rw   r  r   r   )
2010-01-01
2010-01-02r  r  )r  )r   r   r   r   r;   r>   r   r  )r!   r"   r  rA   r@   dtrh   s          r$   test_get_group_grouped_by_tuplez,TestGetGroup.test_get_group_grouped_by_tuple  s    45eWEGGZZedD\21a&Ad#
fh/^^TUb1123ZZo.er!uhA%9:1a&I
fh/	  2s   
C.
c                    t        dd dD        i      j                  d      }j                  fd      }|j                  t        t	        |j
                  j                                           }|j                  t        t	        |j
                  j                                           }t        j                  ||       y )Nr~   c              3      K   | ]=  }t         j                  j                  d       j                  ddd      D ]  }||f 
 ? ywr   r   r   s      r$   r   zKTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<genexpr>  r   r   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#  r2  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7	<<T"))..*:%; <=$$T$y/?/?/D/D/F*G%HI
fh/rC   c                     t        j                  d      }d}t        ||t              }t	        d      }|j                  |      }t        t        |      d       J y )Nr   r   r9   r/  )r   r   r   objectr	   r   r   r   )r!   rx   r*   seriesr  r2   s         r$   test_groupby_with_emptyz$TestGetGroup.test_groupby_with_empty  sT      $e62s#..)DM4(000rC   c                 V   t        dt        d      i      }t        j                  |j	                  d      j                  d      |j                  ddg          t        t        g dd      t        g d      	      }t        j                  |j	                  d      j                         |       t        j                  |j	                  d      j                         |       |j                  g d
   }t        j                  |j	                  d      j                  d      |       y )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"   rq  s      r$   test_groupby_with_single_columnz,TestGetGroup.test_groupby_with_single_column  s    T)_-.
bjjo77<bggq!foNc2E"E<R
 	bjjo335s;
bjjo113S9ggi 
bjjo11!4c:rC   c                     t        g dg dg dgg d      }|j                  ddg      }|j                  g d      j                         }|j                  d	   d
k(  sJ |j                  d   dk(  sJ y )N)rF   rG   r   r   )rF   rG   r   r   )rF   r  r   r+   )r:  r8  thirdrI   r   r:  r8  )r:  r8  r  )rF   rG   r   r   )rF   r  r   r   )r   rs  r   r0   rR   r\   s     r$   test_gb_key_len_equal_axis_lenz+TestGetGroup.test_gb_key_len_equal_axis_len  sz     #%;=ST7
 \\7H-.ZZ45::<vv)*a///vv)*a///rC   N)
r   r   r   r  r  r  r  r  r  r  r   rC   r$   r  r    s&    -/^-00(1;0rC   r  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestIterationc                 n   |j                  dg      }d}t        j                  t        |      5  |j                  }||j                  u sJ 	 d d d        j                         D ]*  \  }}|j                  |   d   |k(  j                         r*J  |j                  ddg      }|j                  }||j                  u sJ |j                         D ]U  \  }}|j                  |   d   |d   k(  j                         sJ |j                  |   d   |d   k(  j                         rUJ  y # 1 sw Y   xY w)Nr   rG  r   r   r   r   )r   r;   rH  r   r#  itemsrR   all)r!   r"   r2   r1   r#  kvs          r$   test_groupszTestIteration.test_groups  s+   **cU#-''cB 	,^^FW^^+++	, LLN 	/DAqFF1IcNa',,...	/ **c3Z('''LLN 	2DAqFF1IcNad*//111FF1IcNad*//111	2	, 	,s   D++D4c                 j    |j                  d d g      }|j                  j                  d   D ]  } y )Nc                 "    | j                         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
    AFF rC   r   )r   r
  r  )r!   tsframer2   r#   s       r$   test_grouping_is_iterablez'TestIteration.test_grouping_is_iterable   s>     //#8:J"KL !!++A. 	A	rC   c                    t        t        j                  d            }t        j                  g d      }t        j                  g d      }|j	                  ||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 ]8  \  }\  \  }}	}
||   \  }}}||k(  sJ ||	k(  sJ t        j                  |
|       : y )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    299Q< XX45XX45))RH%=#q!Qy!#q!v#q!v#q!Qy!	
 '0&9 	."A"
cE!!JBB9999""5"-		.rC   c                    t        j                  g d      }t        j                  g d      }t        t         j                  j	                  d      j                  d      t         j                  j	                  d      j                  d      ||dg d      }|j                  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 ]8  \  }	\  \  }
}}||	   \  }}}||
k(  sJ ||k(  sJ t        j                  ||       : t        j                  g d      |d<   t        j                  g d      |d	<   |j                  dd	g      }|D ci c]  \  }}||
 }}}t        |      dk(  sJ y c c}}w )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  )rN   r   r   rO   rP   rQ   r   rY   rx   rR   r  r;   r>   r1  )r!   three_groupr   r  r"   r2   r  r{   rA   r  rI   rJ   rK   r  r  r  r   gpr#  s                      r$   test_multi_iter_framez#TestIteration.test_multi_iter_frame=  s   XX45XX45ii++A.>>qAii++A.>>qA	 A
 **dD\* =hh#rvvc1#h'(#rvvc1a&k*+#rvvc1a&k*+#rvvc1#h'(	
 '0&9 	-"A"
cE!!JBB9999!!%,		- 88:;488:;4**dD\* *11gc2#r'116{a 2s   /Gc           	         t        t        |j                  d                   t        t        |j                  ddg                   t        t        |d   j                  |d                      t        t        |d   j                  |d   |d   g                   t        t        |j                  d      d                t        t        |j                  ddg      d                y )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67T"**S/#&'(T"**c3Z(-./rC   c                    t        ddgddgdt        j                  ddg            }|j                  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 |j                  t        d      df      }t        j                  ||j                  dgd d f          |j                  t        d      df      }t        j                  ||j                  dgd d f          t        g dg ddt        j                  g d            }|j                  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 |j                  t        d      df      }t        j                  ||j                  ddgd d f          |j                  t        d      df      }t        j                  ||j                  dgd d f          t        g dg ddt        j                  g d            }|j                  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 |j                  t        d      df      }t        j                  ||j                  dgd d f          |j                  t        d      df      }t        j                  ||j                  dgd d f          |j                  t        d      df      }t        j                  ||j                  dgd d f          y )Nstart  .  )eventchange
2014-09-10
2013-10-10rw   r   r/  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	   r1  r#  r  r   r   r;   r>   r_   )r!   r"   r2   ress       r$   test_groupby_with_small_elemz*TestIteration.test_groupby_with_small_eleml  s    (T4LA""L,#?@
 **g40':;7>>"a'''!###,'1W^^CCC,'1W^^CCC<!8' BC
c277A36?3<!8' BC
c277A36?31=OP""#MN
 **g40':;7>>"a'''!###,'1W^^CCC,'1W^^CCC<!8' BC
c277Aq619#56<!8' BC
c277A36?3 1=OP""#MN
 **g40':;7>>"a'''!###,'1W^^CCC,'1W^^CCC,'1W^^CCC<!8' BC
c277A36?3<!8' BC
c277A36?3<!8' BC
c277A36?3rC   c                     t        j                  t        d      t        d      g      }t        g dg|      }|j	                  |d         }|j
                  j                  d   j                         }d}||k(  sJ y )NAABaba)r   r   r+   r   )r   rq   r   zGrouping(('A', 'a')))r   rS  rY   r   r   r
  r  __repr__)r!   r   r"   r  r@   rA   s         r$   test_grouping_string_reprz'TestIteration.test_grouping_string_repr  so    ##T%[$u+$>?	{B/ZZ:'&&q)224)!!!rC   N)
r   r   r   r  r  r  r  r  r  r   r   rC   r$   r  r    s'    2&.(% N024h"rC   r  c                     t        g dg dg dd      j                  d      } | j                  t        d      t        d      gd	      }|j                  j
                  d
   j                  rJ |j                  j
                  d   j                  sJ |j                         }t        ddgddgddgd      }t        j                  ||       y )Nrn   r  )rq   rr   r3   rq   r   rr   r   Fr?  r   r   r   r  ro   )
r   rs  r   r	   r
  r  in_axisr:   r;   r>   )r"   rz   r@   rA   s       r$   test_grouping_by_key_is_in_axisr#    s    	C	D	N	Ns	SB	W3'S)9:U	KB{{$$Q'////;;  #++++VVXF1vQF!Q@AH&(+rC   c                     t        dt        j                  d      t        j                  gi      } | j	                  t        j                  ddgt
        j                              d   j                         }t        ddddt              }|j                  j                  t
        j                        |_        t        j                  ||       y )	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    	Gbll1orvv67	8BZZ!Qrxx89'BFFHF$5)tDH^^**288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>r1     sv   
  
 
 
 
  0H/ H/^H% H%^B0 B0R\" \"~	,	-rC   