
    d                         d Z ddlmZmZ ddlZddlZddlZddlm	Z	m
Z
mZmZmZmZmZmZ 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)CategoricalIndex	DataFrameGrouperIndex
MultiIndexSeries	Timestamp
date_range)Groupingc                   >    e Zd Zd Zd Zd Zd Zd Zd Z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      ^/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/groupby/test_grouping.pytest_select_bad_colsz"TestSelection.test_select_bad_cols   s-   Ax#s444JJsOO]8+GHHH 	 	seHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]89555 	 	 sCjMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   
AA!$A!BB"Bc           
      H   t          g dt          d          t          dd          t          ddd          g          }d}t          j        t          |	          5  |                    d
           d d d            n# 1 swxY w Y   t          j        t          |	          5  |                    d
dg           d d d            n# 1 swxY w Y   |                    d          }|                                }|j        j        dk    sJ |j        j	        dk    sJ d S )N)r   r   r   r      r      r      )r   dataz!Grouper for 'A' not 1-dimensionalr   r   r   r      )
r   ranger   r   
ValueErrorr   countr   nlevelssize)r   r   msggroupedcs        r!   'test_groupby_duplicated_column_errormsgz5TestSelection.test_groupby_duplicated_column_errormsg*   s   (((a%1++uQPQST~~/V
 
 
 2]:S111 	 	JJsOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:S111 	# 	#JJSz"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# **S//MMOOy A%%%%y~""""""s$   B  BB&C

CCc                    |                     d          j                                        }|                     d          d                                         }t          j        ||           d|d<   |                     d                              d          }|                     d          g d                             t          j                  }t          j        ||           d S )Nr   r   g      ?meanTnumeric_only)r   Dr3   )	r   r   sumtmassert_series_equalr3   aggnpassert_frame_equalr   r   resultexpecteds       r!   test_column_select_via_attrz)TestSelection.test_column_select_via_attr;   s    C"&&((::c??3'++--
vx0006
C%%4%88::c??#5#5#56::27CC
fh/////    c           	      |   t          g dg dt          j                            d          t          j                            d          t          j                            d          d          }|                    d          ddg                                         }|                    d          |j        dd	                                                  }|j        d d g d
f                             d                                          }t          j	        ||           t          j	        ||           d S )NfoobarrD   rE   rD   rE   rD   rD   onerG   twothreerH   rH   rG   rI   r&   r   r   r   r6   Er   r   r6   r   r$   )r   r   r6   )
r   r;   randomrandnr   r3   r   locr8   r<   r   r   r>   result2r?   s        r!   test_getitem_list_of_columnsz*TestSelection.test_getitem_list_of_columnsE   s   MMMQQQY__Q''Y__Q''Y__Q'' 
 
 C#s,1133**S//"*QqS/277996!!!___,-55c::??AA
fh///
gx00000rA   c                 T   t          t          d          dz  t          j                            d          t          j                            d          t          j                            d          d          }|                    d          |j        dd                                                  }|                    d          ddg                                         }|j        d d g d	f                             d                                          }t          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   listr;   rL   rM   r   r   r3   rN   r8   r<   r   r   r*   rO   s        r!   !test_getitem_numeric_column_namesz/TestSelection.test_getitem_numeric_column_namesX   s   <<!#9??1%%9??1%%9??1%%	 
 
 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   ".FF!$F!c                     t          j        t          d          5  |                    d          d                                          d d d            d S # 1 swxY w Y   d S )NrU   r   r   )r   r6   )r   r   r*   r   r3   r   r   s     r!   +test_getitem_single_tuple_of_columns_raisesz9TestSelection.test_getitem_single_tuple_of_columns_raisesn   s    ]:-QRRR 	- 	-JJsOOH%**,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   .AAAc           	          t          g dg dt          j                            d          t          j                            d          t          j                            d          d          }|                    d          d                                         }|j        d d ddgf                             d                                          }|j        d d df         }|}t          j	        ||           d S )NrC   rF   r&   rJ   r   r   r   )
r   r;   rL   rM   r   r3   rN   ilocr8   r9   )r   r   r>   as_frame	as_seriesr?   s         r!   test_getitem_single_columnz(TestSelection.test_getitem_single_columns   s    MMMQQQY__Q''Y__Q''Y__Q'' 
 
 C%**,,6!!!c3Z-(0055::<<M!!!Q$'	
vx00000rA   c                     t          dd dD             i                              d          }                    fd          }|j        }|j        }t          j        ||           d S )NTuplesc              3   f   K   | ],}t           j                            d dd          D ]}||fV  	-dS r(      Nr;   rL   randint.0xys      r!   	<genexpr>zJTestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<genexpr>   H      SS1	8I8I!QPQ8R8RSS1ASSSSSSSrA   r   r   c                 "    j         | df         S Nr   r\   ri   r   s    r!   <lambda>zITestSelection.test_indices_grouped_by_tuple_with_lambda.<locals>.<lambda>       A rA   )r   r   indicesr8   assert_dict_equalr   gb	gb_lambdar?   r>   r   s        @r!   )test_indices_grouped_by_tuple_with_lambdaz7TestSelection.test_indices_grouped_by_tuple_with_lambda   s    SSSSST
 
 ZZ!!JJ666677	:"
VX.....rA   N)__name__
__module____qualname__r"   r1   r@   rQ   rW   rZ   r_   ry    rA   r!   r   r      s        	 	 	# # #"0 0 01 1 1&' ' ',- - -
1 1 1&/ / / / /rA   r   c                      e Zd Zej                            dej        ej        ej	        ej
        ej        g          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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ej                            dddg          d             Z d Z!ej                            dddg          d             Z"d Z#ej                            d dg d!gdg d"gg          d#             Z$d$ Z%d% Z&ej                            d&d' e'd(e(j)        )          fd* e'd(e(j)         e*g e(j)        d+,          -          fd. e'd(e(j)         e*g e(j)        d+,          -          fg          d/             Z+d0 Z,d1 Z-d2 Z.d3S )4TestGroupingindexc                    t          t          j        d                              dd          t	          d                    } |t          |                    |_        |                    t	          d          d                              d	            t	          t          |j        
                                                    |_        |                    t	          d          d                              d
            d S )N
   rd   r   ABr   abcdeF
group_keysc                     | S Nr}   ri   s    r!   rr   z7TestGrouping.test_grouper_index_types.<locals>.<lambda>       A rA   c                     | S r   r}   r   s    r!   rr   z7TestGrouping.test_grouper_index_types.<locals>.<lambda>   r   rA   )r   r;   arangereshaperV   lenr   r   applyreversedtolist)r   r   r   s      r!   test_grouper_index_typesz%TestGrouping.test_grouper_index_types   s     ry}},,Q22DJJGGG5R>>


4==U
3399++FFF!2!23344


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

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

#%% 	 	fh/////rA   c                 N   t          g dg dd          }|                    d          }|                                }|                    t          d                    }|                                }t	          j        ||           |                    t          dd                    }|                                }t	          j        ||           |                    d           }g d	|d<   |j        d d dd
gf         }t	          j        ||           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        ||           t          t          j
        dd          t          j        t          d          t          d          t          dd          gg d                    }|                    t          dd                                                    }t          dgt!          j        t%          d          gdd                    }t	          j        ||           |                    t          d                                                    }|                    d                                          }t	          j        ||           d S ) N)r   r   r   r   r   r   r   r   r(   r$   rd   r%   r   r   r   r   r   )r   axisc                 *    |                                  S r   )r7   r   s    r!   rr   z8TestGrouping.test_grouper_creation_bug.<locals>.<lambda>   s    15577 rA   rT   r   )r   r   r   r   r   r   )r   r   r   r   r(   r(   r   r   r   r&   r   r   abr   20130101periods)rG   rH   rI   r   r   rI   Mr      z
2013-01-31)r   namerG   r   )r   r   r7   r   r8   r<   r   rN   r
   r;   r   r	   r   rV   r)   r   pdDatetimeIndexr   r9   )r   r   r    r?   r>   ss         r!   test_grouper_creation_bugz&TestGrouping.test_grouper_creation_bug   s   ///6H6H6HIIJJJJsOO5577JJw3'''((
fh///JJw3Q///00
fh///**++!		<C:.
fh/// $$$+=+=+=DVDVDVWW
 
 ::c??&&((JJC((()**
fh/// ::sCj))--// JJC((('c*:*:*:;<<
fh/// JJW---.//
fh/// JJC(((#.//
fh/// Iaw''')dU1XXz*a'H'H'HI---  
 
 
 7s;;;<<@@BBD"Il$;$;#<3WUUU
 
 
 	vx000 7///0044669959))--//
vx00000rA   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))ar   )r   r   )r   r(   br   )r   r   )r   r(   outerinnerr%   )rG   rG   rH   rH   rG   rG   r   r   r   r   Tr4   )r	   from_tuplesr   r   r;   r   r   r   r3   r   r8   r<   )r   idxdf_multir>   r?   	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/////rA   c                    ddg}t          j        g d|          }t          t          j        d                              dd          |          }|                    |	                                          }|                                                    |                                          }|j	        
                    t          j                  |_	        t          j        ||           d S )
Nri   rj   )r   r   r   r   )r(   r$   )rd   r%   r      r(   r   r   )r	   r   r   r;   r   r   r   r3   r   r   astyper   r8   r<   )r   	idx_namesr   r   	by_levels
by_columnss         r!   test_groupby_levels_and_columnsz,TestGrouping.test_groupby_levels_and_columns>  s    #J	$%E%E%EYWWWry}},,R333???JJYJ//4466	^^%%--i88==??
 (/66rx@@

i44444rA   c                    g d}ddg}t          j        g dg dg dg dg dgt                    }t          ||d          }t	          ||          }|                    dd	|
                                          }t          j        ddgddgddgddgddggt                    }t          ||d          }	t	          ||	          }
t          j        ||
           t	          |j	        |          }|                    d	d	|
                                          }t	          |j	        |	          }
t          j        ||
           d S )N)r   r   r   r   r   r   )r   r   r   r   T)
categoriesordered)r'   r   r   r   )r   r   observedr$   r   r   )r'   r   )
r;   arrayintr   r   r   r7   r8   r<   T)r   r   r   r   r'   cat_columnsr   r>   expected_dataexpected_columnsr?   s              r!   *test_groupby_categorical_index_and_columnsz7TestGrouping.test_groupby_categorical_index_and_columnsL  sr   &&&3Z
x\\<<<|||\\\RTW
 
 'w:tTTTD+666!h??CCEE1a&1a&1a&1a&1a&!I3OO+:t
 
 
 -9IJJJ
fh/// tv[111!h??CCEE-/9IJJJ
fh/////rA   c                    t          ddit          j        t          d          t	          dd          gddg	          
          }|                    t          d          t          dd          g                                          }t          dg dit          j        t          d          t	          ddd          gddg	          
          }t          j	        ||           d S )Nr   r   r   r   P   r   rG   rH   r   r   r   r   r   )   r      r   r   r   r(   )r   r   )
r   r	   r   rV   r   r   r   r7   r8   r<   r=   s       r!   #test_grouper_getting_correct_binnerz0TestGrouping.test_grouper_getting_correct_binnerc  s    !H)dZ
B???@PU  
 
 
 5!!!7S#A#A#AB
 

#%% 	 ***+)dZ
aHHHIen  
 
 
 	fh/////rA   c                 d    t          |                    d          j                  ddgk    sJ d S )Nr   rE   rD   )sortedr   grouperrY   s     r!   test_grouper_iterzTestGrouping.test_grouper_itery  s2    bjjoo-..5%.@@@@@@rA   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   rY   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   Tr4   )r   r   r3   r8   r<   )r   r   r/   r>   r?   s        r!   test_groupby_grouperz!TestGrouping.test_groupby_grouper  sa    **S//GO,,11t1DD<<T<22
fh/////rA   c                 j   t          ddi          }|                    ddi                              t                    }|                    dg                              t                    }t	          j        ||           t          g dt          d                    }ddddd	}|                    |                                          }|                    |                              t          j                  }t          j	        g d
t          j
                  }|                    |                                          }|                    |                                          }t	          j        ||           t	          j        ||           t	          j        ||           d S )NT1rd   T2)      ?       @g      @g      @rS   r   r   r   r   r   r0   d)r   r   r   r   r   )r
   r   r:   r7   r8   r9   rV   r3   r;   r   r   )r   r   r>   r?   mappingrP   exp_key	expected2s           r!   test_groupby_dict_mappingz&TestGrouping.test_groupby_dict_mapping  sk   D!9D$<((,,S1199dV$$((--
vx000'''tF||<<<227##((**))G$$((11(<<<rx88899W%%**,,IIg&&++--	
vx000
vw///
vy11111rA   r   r   r   r(   r   c                 6    g | ]}t          d dd|z             S )i     r   )r   )rh   is     r!   
<listcomp>zTestGrouping.<listcomp>  s(    :::AYtQQ'':::rA   r$   c                      |g d|          }t          g d|d          }|                    |                                          } |ddg          }d|j        _        t          j        ||           d S )Nr   r   r(   r$   r   )r   r   r   r   )r   r   )r   r   r$   r(   )r
   r   lastr   r   r8   assert_equal)r   frame_or_seriesr   objgroupsr>   r?   s          r!   $test_groupby_series_named_with_tuplez1TestGrouping.test_groupby_series_named_with_tuple  s     olll%888E
CCCV$$))++"?Aq6**(
)))))rA   c                    t          ddd          }t          t          j                            d          |          }d}t          j        t          |          5  |                    d            d d d            d S # 1 swxY w Y   d S )	Nz01-Jan-2013r   MSr   r   r   z4Grouper result violates len\(labels\) == len\(data\)r   c                     | dd         S )Nr   r%   r}   r   s    r!   rr   zDTestGrouping.test_groupby_grouper_f_sanity_checked.<locals>.<lambda>  s    3qs8 rA   )	r   r
   r;   rL   rM   r   r   AssertionErrorr   )r   r   tsr.   s       r!   %test_groupby_grouper_f_sanity_checkedz2TestGrouping.test_groupby_grouper_f_sanity_checked  s    ="4@@@BIOOB''u555 F]>555 	- 	-JJ++,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   BB	Bc                     d}t          j        t          |          5  t          |j        |ddg                    d d d            d S # 1 swxY w Y   d S )NzEGrouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensionalr   r   )r   r   r*   r   r   )r   r   r.   s      r!   %test_grouping_error_on_multidim_inputz2TestGrouping.test_grouping_error_on_multidim_input  s    U]:S111 	/ 	/RXr3*~...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   A		AAc                     t          g dg dg dg          }t          j        g d          |_        |                    dddg                                          }t          j        ||           d S )Nr   r   r(   )r$   rd   r%   )r   r&   	   )rm   r   )r   r   r   r   r   r   )r   r	   r   r   r   firstr8   r<   )r   r   r>   s      r!   test_multiindex_passthruz%TestGrouping.test_multiindex_passthru  s{     			999iii899+,D,D,DEE
1a&117799
fb)))))rA   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   secondr  )r   r7   r8   r<   
sort_index)r   mframer>   r?   s       r!   test_multiindex_negative_levelz+TestGrouping.test_multiindex_negative_level  sK   b))--//>>>115577
fh///b))--//>>>004466
fh///r2h//3355$$&&
fh///r7m4488::>>7(;><<@@BB
fh/////rA   c                     t          j        t          |j                            |_        |                    dd          d                             dt           j        i           d S )Nr   Fas_indexr   Q)r;   r   r   r   r   r:   r3   rY   s     r!   &test_multifunc_select_col_integer_colsz3TestGrouping.test_multifunc_select_col_integer_cols  sR    Ys2://
 	

1u
%%a(,,c27^<<<<<rA   c                 v   ddgddgg}t          j        |          }t          ddgg|          }|                    d          j        }|d         dgk    sJ |                    d	g          j        }|d         dgk    sJ t          ddgd
dgg|          }|                    d          j        }|                    d	g          j        }||k    sJ t          ddgd
dgg|          }|                    d          j        }|                    d	g          j        }t          j        ||           d S )Nr+   values	to filter r   r   r   r   )r  r   r   r   )r	   r   r   r   r  r8   ru   )r   lstmidxr   r/   r?   r>   s          r!   #test_multiindex_columns_empty_levelz0TestGrouping.test_multiindex_columns_empty_level  sX   "["$56%c**Cz4000**[))0s|s""""**/0118s|s""""C1c(+T:::::k**1./007!!!!C1c(+T:::::k**1./007
VX.....rA   c                    t          g dg dg dgt          j        g dg dg                    }|                    dg          j        }|                    d          j        }t          j        ||           t          |j        t          j        g dg dg                    }|                    d	g          j        }|                    d          j        }t          j        ||           t          |j        g d
          }|                    d	g          j        }|                    d          j        }t          j        ||           d S )Nr   )r(   r$   rd   r%   )r   r$   r   r(   )r   r   r   r0   )r   r   r   r   r   r   )r   r   er%  r   r   ))r   r   r&  )r   r%  r0   )r   r	   from_arraysr   r  r8   ru   r  )r   r   r?   r>   df2df3s         r!   test_groupby_multiindex_tuplez*TestGrouping.test_groupby_multiindex_tuple  sd   \\<<<6*,@,@,@,,,+OPP
 
 
 ::xj))0H%%,
Xv...I*%%%';';';< 
 
 
 ;;
|,,3H%%,
Xv...	+T+T+TUUU;;
|,,3H%%,
Xv.....rA   sortTFc                    |}|                                 }|                    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        ||	           |j	                            dd|                                          }|j	                            dd|                                          }t          j        ||j	                   t          j        ||	j	                   d}
t          j        t          |
	          5  |                    d
           d d d            d S # 1 swxY w Y   d S )Nr   r   r+  r   r  )r+  r  )r   r   r+  z2level > 0 or level < -1 only valid with MultiIndexr   r   )r   r   r7   r  r   r   r8   r<   r   r   r   r   r*   )r   r+  r  r   frame	deleveledresult0result1	expected0	expected1r.   s              r!   test_groupby_levelzTestGrouping.test_groupby_level  s    %%''	--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 '///==AACC'///==AACC
gy{333
gy{333 C]:S111 	  	 JJQJ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   &K

KKc                    t          dgdz  dgdz  z   t          d          d                              d          }|dv r|j        }|                    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var1r6  )r   r   )r   r   z&level name foo is not the name of the r   rD   )	r   r)   	set_indexr   r   _get_axis_namer   r   r*   )r   r   r   r.   s       r!   test_groupby_level_index_namesz+TestGrouping.test_groupby_level_index_names=  s   uqyC5194eAhhGGHHRR
 
 >!!B


T
***Pr7H7H7N7NPP]:S111 	/ 	/JJUJ...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   B88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       @r   r-  g      @g      6@)r   r   r   r   r   r   r   r   g      2@g        r   )r	   r
   r;   r   r   r7   r8   r9   )r   r+  r   r   r>   r?   s         r!   test_groupby_level_with_nasz(TestGrouping.test_groupby_level_with_nasI  sP    FLLL)+++-E-E-EF
 
 
 29S>>///..22443+aV444
vx000FLLL),,,.F.F.FG
 
 
 29S>>///..22443+c3Z888
vx00000rA   c                 6   |}d}t          j        t          |          5  |                                 d d d            n# 1 swxY w Y   d}t          j        t          |          5  |                    d d            d d d            d S # 1 swxY w Y   d S )Nz*You have to supply one of 'by' and 'level'r   )byr   )r   r   	TypeErrorr   )r   r  r.  r.   s       r!   test_groupby_argszTestGrouping.test_groupby_argsb  s   :]9C000 	 	MMOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ;]9C000 	/ 	/MMTM...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s#   AAA)BBBzsort,labels
r   r   r   r   r   r   r   r(   r(   r(   )
r   r   r   r   r   r   r   r(   r(   r(   c                     |                     d|          }t          j        |t          j                  }t	          j        |j        j        d         |           d S )Nr   r-  )r   r;   r   intpr8   assert_almost_equalr   r=  )r   r+  labelsr  r/   
exp_labelss         r!   test_level_preserve_orderz&TestGrouping.test_level_preserve_ordern  sO     ..qt.44Xfbg..

w4Q7DDDDDrA   c                     |                     |j                            d                    }t          j        g dt          j                  }t          j        |j        j	        d         |           d S )Nr   rC  r   )
r   r   get_level_valuesr;   r   rE  r8   rF  r   r=  )r   r  r/   rH  s       r!   test_grouping_labelsz!TestGrouping.test_grouping_labels{  sc    ..!>!>q!A!ABBX<<<BGLLL

w4Q7DDDDDrA   c                    t          dt          ddd          i          }t          j        |j        d<   t          dd          }|                    |g          }t          d	          t          t          t          d
                              i}t          j        |j        |           |                    |          }t          d	          di}t          j        |j        |           d S )Nr   z1/1/2011im  r6   r  r   ASr   z
2011-01-01il  )r   r   r   NaTr\   r   r   r   r   rV   r)   r8   ru   r  )r   r   r   r>   r?   s        r!   test_list_grouper_with_natz'TestGrouping.test_list_grouper_with_nat  s    
:s M M MNOOff4000 WI&&l++U4c

3C3C-D-DE
V]H555 G$$l++S1
V]H55555rA   zfunc,expected	transformr   r   r   r:   r   r   r   )r   r   r   r   c                     t          g g d          }|                    dd          } t          |d         |          d           }t          j        ||           d S )Nr   r   Fr   r   c                     | S r   r}   r   s    r!   rr   z>TestGrouping.test_evaluate_with_empty_groups.<locals>.<lambda>  s    q rA   )r   r   getattrr8   r9   )r   funcr?   r   r    r>   s         r!   test_evaluate_with_empty_groupsz,TestGrouping.test_evaluate_with_empty_groups  sd    4 2"~~&&JJqUJ++$1t$$[[11
vx00000rA   c           	         t          g dd          }|                    g           }|                                }|                    t	          g t
          j                            }t          j        ||           t          |j
        j                  dk    sJ t          j        |j
        j        d         t          j        g t          j        t
          j                                       t          j        |j
        j        d         t          j        g t          j        t
          j                                       |j
        j        d         dk    sJ |                    |          j
        j        dgk    sJ d S )Nr   float64rR  r   r   r   r   )r
   r   r3   set_axisr   r;   rE  r8   r9   r   r   	groupingsassert_numpy_array_equal
group_infor   r   r   )r   r   grr>   r?   s        r!   test_groupby_emptyzTestGrouping.test_groupby_empty  sM   2F)444YYr]]::eBbg66677
vx000 2:'((A----
#J!!$bhr"'9J9J&K&K&K	
 	
 	
 	#J!!$bhr"'9J9J&K&K&K	
 	
 	
 z$Q'1,,,, yy||#)fX555555rA   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 )Nri   r      r   r   r   r   r   objectr   rZ  )r<  r=  r   r   r   )r'   r   r   r   )
r   r;   nanr8  r   r7   r	   r   r8   r<   r=   s       r!   %test_groupby_level_index_value_all_naz2TestGrouping.test_groupby_level_index_value_all_na  s    262rvr 23___
 
 

)S#J

 	 3*--1133se8444eBi6P6P6PQ2hCj  
 E	
 	
 	
 	fh/////rA   c           	      Z   t          g dg dgg d          }|                    ddg          }||j        dk              }|                    d                                          }t          dd	gt          g t          j        d
                    }t          j	        ||           d S )N){   r   r   )rg  r   r   )idcategoryvaluer   rh  ri  r   rZ  rj  rS  )r   r   r   )
r   r8  rj  r   r7   r   r;   r   r8   r<   )r   r   emptyr>   r?   s        r!   #test_groupby_multiindex_level_emptyz0TestGrouping.test_groupby_multiindex_level_empty  s    __ooo.8S8S8S
 
 
 \\4,--28a< t$$((**I"(666
 
 

 	fh/////rA   N)/rz   r{   r|   r   markparametrizer8   makeFloatIndexmakeStringIndexmakeIntIndexmakeDateIndexmakePeriodIndexr   r   r   r   r   r   r   r   r   r   r   r)   r  r	  r  r  r  r  r#  r*  r4  r:  r>  rB  rI  rL  rP  r
   r;   rZ  r   rX  r`  re  rl  r}   rA   r!   r   r      s       [O	
	 		G 	G	 		G0 0 08C1 C1 C1J,0 ,0 ,0\5 5 50 0 0.0 0 0,A A A  
0 0 02 2 2& [LL   ::q:::	
 * * *- - -"/ / /
* * *0 0 0$= = =/ / /0/ / /2 [VdE]33&  &  43& P
/ 
/ 
/ [VdE]331 1 4310
/ 
/ 
/ [11122223	
 E E EE E E
6 6 6  [ ARZ000
 "*EE"BJUV4W4W4W   "*EE"BJUV4W4W4W  	
 *1 1+ *16 6 600 0 0$0 0 0 0 0rA   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestGetGroupc                    t          t          j        g d          g dg dd          }|                    d          }t	          |j                  d         }|                    |          }|                    t          |                                                    }|                    t          t          |                              }t          j        ||           t          j        ||           |                    ddg          }t	          |j                  d         }|                    |          }|                    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-2013rw  rw  11-Oct-2013rx  rx  )rD   rD   rE   rD   rD   rE   r   )DATElabelVALry  r   rz  r   z<must supply a tuple to get_group with multiple grouping keysr   rD   zHmust supply a same-length tuple to get_group with multiple grouping keys)rD   rE   baz)r   r   to_datetimer   rV   r  	get_groupr   to_pydatetimestrr8   r<   r   r   r*   )r   r   r    r   r1  rP   result3r.   s           r!   test_get_groupzTestGetGroup.test_get_group  s>      	 	 DCC))) 
 
" JJv18nnQ++c""++inn::<<==++c)C..1122
gw///
gw///JJ())18nnQ++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   	H++H/2H/I33I7:I7J>>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   rd   r      r   )r   rd   r(   r   r   z"Interval\(10, 15, closed='right'\)r   r   r  )r   r   r   cutr~  Intervalr8   r<   r   r   r   )r   r   r   binsr    r>   r?   r.   s           r!   test_get_group_empty_binsz&TestGetGroup.test_get_group_empty_bins  s)   lll##~~IIbfQqT4((8I<< R[A..//aVAq6222
fh///3]83/// 	- 	-KKB++,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   5)C++C/2C/c                    t          g dgdg          j        }|                    d          }t          dddgiddg          }|                    d          }t	          j        ||           t          j        g d          }t          dd |D             i          }|                    d          }|                    d	          }t          d|d         f|d         fgiddg          }t	          j        ||           d S )
N)r   r   r  r   idsr   r  r   r   )
2010-01-01
2010-01-02r  r  c                     g | ]}|fS r}   r}   )rh   ri   s     r!   r   z@TestGetGroup.test_get_group_grouped_by_tuple.<locals>.<listcomp>5  s    111111rA   )r  )r   r   r   r~  r8   r<   r   r}  )r   r   r_  r?   r>   dts         r!   test_get_group_grouped_by_tuplez,TestGetGroup.test_get_group_grouped_by_tuple,  s   4445eWEEEGZZedD\21a&AAAd##
fh///^TTTUU11b111233ZZo..er!uhA%9:1a&III
fh/////rA   c                    t          dd dD             i                              d          }                    fd          }|                    t          |j                                                  d                   }|                    t          |j                                                  d                   }t          j        ||           d S )Nra   c              3   f   K   | ],}t           j                            d dd          D ]}||fV  	-dS rc   re   rg   s      r!   rk   zKTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<genexpr>>  rl   rA   rm   c                 "    j         | df         S ro   rp   rq   s    r!   rr   zJTestGetGroup.test_get_group_grouped_by_tuple_with_lambda.<locals>.<lambda>B  rs   rA   r   )r   r   r~  rV   r  keysr8   r<   rv   s        @r!   +test_get_group_grouped_by_tuple_with_lambdaz8TestGetGroup.test_get_group_grouped_by_tuple_with_lambda;  s    SSSSST
 
 ZZ!!JJ666677	<<RY^^%5%5 6 6q 9::$$T)*:*?*?*A*A%B%B1%EFF
fh/////rA   c                     t          j        d          }d}t          ||t                    }t	          d          }|                    |          }t          t          |          d           J d S )Nr}   r   r6   r   )r   r   r
   rc  r   r   nextiter)r   r   r'   seriesr   r/   s         r!   test_groupby_with_emptyz$TestGetGroup.test_groupby_with_emptyI  sn     $$e6222s###..))DMM4((00000rA   c                    t          dt          d          i          }t          j        |                    d                              d          |j        ddg                    t          t          g dd          g           }t          j        |                    d                                          |           t          j        |                    d          	                                |           |j        g d         }t          j        |                    d          
                    d	          |           d S )
Nr   abssbabr   rd   )r   r   r   )r   )r   r   r(   r$   rd   r   )r   rV   r8   r<   r   r~  r\   r   r+   r7   nth)r   r   r6  s      r!   test_groupby_with_single_columnz,TestGetGroup.test_groupby_with_single_columnQ  s   T)__-..
bjjoo77<<bgq!foNNNeOOO#>>>KKK
bjjoo3355s;;;
bjjoo1133S999giii 
bjjoo11!44c:::::rA   c                 
   t          g dg dg dgg d          }|                    ddg          }|                    g d                                          }|j        d	         d
k    sJ |j        d         dk    sJ d S )N)rD   rE   r   r   )rD   rE   r   r   )rD   r|  r   r(   )r  r  thirdrG   r   r  r  )r  r  r  )rD   rE   r   r   )rD   r|  r   r   )r   r8  r   r-   rN   rY   s     r!   test_gb_key_len_equal_axis_lenz+TestGetGroup.test_gb_key_len_equal_axis_len\  s     ###%;%;%;=S=S=ST777
 
 
 \\7H-..ZZ44455::<<v)*a////v)*a//////rA   N)
rz   r{   r|   r  r  r  r  r  r  r  r}   rA   r!   ru  ru    s~        -/ -/ -/^- - -0 0 00 0 01 1 1	; 	; 	;0 0 0 0 0rA   ru  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestIterationc                 >   |                     dg          }|j        }||j        u sJ |j                                        D ]0\  }}|j        |         d         |k                                    sJ 1|                     ddg          }|j        }||j        u sJ |j                                        D ]g\  }}|j        |         d         |d         k                                    sJ |j        |         d         |d         k                                    sJ hd S )Nr   r   r   r   )r   r  itemsrN   all)r   r   r/   r  kvs         r!   test_groupszTestIteration.test_groupso  s-   **cU##''''N((** 	/ 	/DAqF1IcNa',,......**c3Z((''''N((** 	2 	2DAqF1IcNad*//11111F1IcNad*//111111	2 	2rA   c                 b    |                     d d g          }|j        j        d         D ]}d S )Nc                 *    |                                  S r   )weekdayr   s    r!   rr   z9TestIteration.test_grouping_is_iterable.<locals>.<lambda>  s    QYY[[ rA   c                     | j         S r   )yearr   s    r!   rr   z9TestIteration.test_grouping_is_iterable.<locals>.<lambda>  s    AF rA   r   )r   r   r\  )r   tsframer/   r    s       r!   test_grouping_is_iterablez'TestIteration.test_grouping_is_iterable  sJ     //#8#8:J:J"KLL *1- 	 	A	 	rA   c                    t          t          j        d                    }t          j        g d          }t          j        g d          }|                    ||g          }t          |          }dd|ddg         fdd|d	g         fd
d|dg         fd
d|ddg         fg}t          |          D ]<\  }\  \  }}	}
||         \  }}}||k    sJ ||	k    sJ t          j        |
|           =d S )Nr%   )r   r   r   r   r   r   12r  r  r  r  r   r  r   r   r  r   r   r$   r(   rd   )	r
   r;   r   r   r   rV   	enumerater8   r9   )r   r   k1k2r/   iteratedr?   r   rG   rH   rI   e1e2e3s                 r!   test_multi_iterzTestIteration.test_multi_iter  s   29Q<<  X44455X44455))RH%%==#q!Qy!#q!v#q!v#q!Qy!	
 '0&9&9 	. 	."A"
cE!!JBB99999999"5"----		. 	.rA   c                    t          j        g d          }t          j        g d          }t          t           j                            d          t           j                            d          ||dg d          }|                    ddg          }t          |          }|j        }d	d
|j        |dg                  fd	d|j        |ddg                  fdd
|j        |ddg                  fdd|j        |dg                  fg}t          |          D ]<\  }	\  \  }
}}||	         \  }}}||
k    sJ ||k    sJ t          j        ||           =t          j        g d          |d<   t          j        g d          |d<   |                    ddg          }d |D             }t          |          dk    sJ |                    g d                                          }|j                            dd          }|D ]\  }}d S )N)r   r   r   r   r   r   r  r%   )v1v2r  r  )rG   rH   rI   fourfivesixr   r  r  r   r  r$   r  r(   rd   r   r   r   r   )r  r  r  r  r  r  c                     i | ]\  }}||	S r}   r}   )rh   r   gps      r!   
<dictcomp>z7TestIteration.test_multi_iter_frame.<locals>.<dictcomp>  s    111gc2#r111rA   r   r   r  )r;   r   r   rL   rM   r   rV   r   rN   r  r8   r<   r   r3   r   )r   three_groupr  r  r   r/   r  r   r?   r   rG   rH   rI   r  r  r  r  three_levelsr   groups                       r!   test_multi_iter_framez#TestIteration.test_multi_iter_frame  sE   X44455X444559??1%%RY__Q-?-?rQSTT@@@
 
 

 **dD\** ==h#rvc1#h'(#rvc1a&k*+#rvc1a&k*+#rvc1#h'(	
 '0&9&9 	- 	-"A"
cE!!JBB99999999!%,,,, 8:::;;48:::;;4**dD\** 211116{{a #**???;;@@BB.((av(>>! 	 	JC	 	rA   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   )dictr  r   rY   s     r!   test_dictifyzTestIteration.test_dictify  s    T"**S//""###T"**c3Z(())***T"S'//"S'**++,,,T"S'//2c7BsG"45566777T"**S//#&''(((T"**c3Z((-../////rA   c                 B   t          ddgddgdt          j        ddg                    }|                    t	          d	          d
g          }t          |j                  dk    sJ |j        dk    sJ t          d          df|j        v sJ t          d          df|j        v sJ |	                    t          d          df          }t          j        ||j        dgd d f                    |	                    t          d          df          }t          j        ||j        dgd d f                    t          g dg ddt          j        g d                    }|                    t	          d	          d
g          }t          |j                  dk    sJ |j        dk    sJ t          d          df|j        v sJ t          d          df|j        v sJ |	                    t          d          df          }t          j        ||j        ddgd d f                    |	                    t          d          df          }t          j        ||j        dgd d f                    t          g dg ddt          j        g d                    }|                    t	          d	          d
g          }t          |j                  dk    sJ |j        dk    sJ t          d          df|j        v sJ t          d          df|j        v sJ t          d          df|j        v sJ |	                    t          d          df          }t          j        ||j        dgd d f                    |	                    t          d          df          }t          j        ||j        dgd d f                    |	                    t          d          df          }t          j        ||j        dgd d f                    d S )Nstart  .  )eventchange
2014-09-10
2013-10-10r   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   r   r  ngroupsr   r~  r8   r<   r\   )r   r   r/   ress       r!   test_groupby_with_small_elemz*TestIteration.test_groupby_with_small_elem  st    (T4LAA"L,#?@@
 
 
 **g3///9::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
 
 
 **g3///9::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
 
 
 **g3///9::7>""a''''!####,''1W^CCCC,''1W^CCCC,''1W^CCCC<!8!8' BCC
c27A36?333<!8!8' BCC
c27A36?333<!8!8' BCC
c27A36?33333rA   c                     t          j        t          d          t          d          g          }t          g dg|          }|                    |d                   }|j        j        d                                         }d}||k    sJ d S )NAABabar  r   )r   r   r   zGrouping(('A', 'a')))r	   r'  rV   r   r   r   r\  __repr__)r   mir   r_  r>   r?   s         r!   test_grouping_string_reprz'TestIteration.test_grouping_string_repr  s    #T%[[$u++$>??			{B///ZZ:''%a(1133)!!!!!!rA   N)
rz   r{   r|   r  r  r  r  r  r  r  r}   rA   r!   r  r  n  s        2 2 2   . . .(' ' 'R0 0 024 24 24h" " " " "rA   r  c                     t          g dg dg dd                              d          } |                     t          d          t          d          gd	          }|j        j        d
         j        rJ |j        j        d         j        sJ |                                }t          ddgddgd          }t          j	        ||           d S )N)r   r   r   r  )r   r   r0   r   r   r   r   Fr  r   r   r   r   rd   )r   r0   )
r   r8  r   r   r   r\  in_axisr7   r8   r<   )r   rw   r>   r?   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z#A&....:"**** VVXXF1vQF3344H&(+++++rA   c                     t          g ddd          } t          d          }|                     |          }d}t          j        t
          |          5  |j        }d d d            n# 1 swxY w Y   ||j        u sJ d}t          j        t
          |          5  |j        }d d d            n# 1 swxY w Y   ||j        u sJ d	}t          j        t
          |          5  |j        }d d d            n# 1 swxY w Y   ||j        u sJ d
}t          j        t
          |          5  |j	         d d d            n# 1 swxY w Y   d}t          j        t
          |          5  |j
         d d d            d S # 1 swxY w Y   d S )Nr  r   )r   r   r   r   zUse GroupBy.groups insteadr   zUse GroupBy.grouper insteadz-Grouper.obj is deprecated and will be removedzUse Resampler.ax insteadzGrouper.indexer is deprecated)r   r   r   r8   assert_produces_warningFutureWarningr  r   r   axindexer)r   grperrw   r.   r  s        r!   test_grouper_groupsr    s   	++	,	,BE	E		B
&C		#M	=	=	=  l              ")
'C		#M	=	=	=  m              "*
9C		#M	=	=	=  i              "&====
$C		#M	=	=	=                 *C		#M	=	=	=                   sZ   A++A/2A/B22B69B6%C99C= C=,E  EE(E==FF)__doc__datetimer   r   numpyr;   r   pandasr   r   r   r   r   r	   r
   r   r   pandas._testing_testingr8   pandas.core.groupby.grouperr   r   r   ru  r  r  r  r}   rA   r!   <module>r     s          
         	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	       0 0 0 0 0 0t/ t/ t/ t/ t/ t/ t/ t/vM	0 M	0 M	0 M	0 M	0 M	0 M	0 M	0hz0 z0 z0 z0 z0 z0 z0 z0B[" [" [" [" [" [" [" ["|, , ,    rA   