
    bMh#                    F   d dl 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 d dlmZ d dlmZ d dlmZ ej        fdZi dej        dej        d	d d
ej        dej        dej        dej        dej        dej        dej        dej        dej        dej        dd dej        dej        dej        d ej        ej        d ej        dZej                            d          d             Zd Zd Zd Zej                            ddd g          d!             Zej                            d          d"             Zd# Z d$ Z!d% Z"ej                            d&d'g d( eg d)d'*          fd'd+gg d, eg d)d'*           e	g d-          gfd'd.gg d/ eg d)d'*           eg d)d'*          gfg          ej                            d0dd g          d1                         Z#d2 Z$d3 Z%d4 Z&ej                            ddd g          ej                            d5dd g          ej                            d6dd g          d7                                     Z'd8 Z(d9 Z)d: Z*d; Z+d< Z,ej                            d=d>g e e-d?                    d d@gdAdBgdCf e e-d?                    .                    dD           dBgd dAgdCf e e-dE                    d d@gdAdBgdCfg          dF             Z/dG Z0dH Z1dI Z2ej                            dJddKdgfddLdMgfddLdgfddKdMgfg          dN             Z3dO Z4dP Z5dQ Z6ej                            ddd g          dR             Z7ej                            ddd g          dS             Z8dT Z9dU Z:dV Z;ej                            dWd e e
j<         eg dXdYZ          g d[gd'd+g\          g d)d]^          fd  e eg dXdYZ          g d[g d)d_          fg          d`             Z=ej                            dadej        ej>        g          db             Z?ej@        dc             ZAej                            dddedfg          dg             ZBej                            dddedfg          ej                            d5d dg          dh                         ZCej                            did e
j<         e	djgd?z  dkgd?z  z   dYdlm           e	g dndYdom           e	ddgd?z            g          g dpfd  e
jD         edjdkgd q           eg drd q           e	ddg          gg ds\          dBdBd?d?ej        ej        dAdAej        ej        d@d@gfd e
jD         edjdkgd q           eg drd q           e	ddg          gg ds\          dBdBd?d?ej        ej        dAdAej        ej        d@d@gfg          dt             ZEdu ZFej                            dvg dwg dxg          dy             ZGdz ZHd{ ZId| ZJd} ZKd~ ZLej                            d5d dg          d             ZMej                            d          d             ZNej                            dejO        g dXfejP        g d[fg          d             ZQd ZRej                            dddg          d             ZSd ZTd ZUd ZVd ZWd ZXej                            dddg          deYd5eZfd            Z[ej                            dddg          deYd5eZfd            Z\d Z]ej                            dddg          d             Z^d Z_d Z`d Zaej                            dg d          ej                            ddd g          d                         Zbej                            dddg          ej                            ddd g          d                         Zcej                            dg d          ej                            dddg          ej                            ddd g          d                                     Zdej                            dg d          ej                            dg d          ej                            ddd g          d                                     Zeej                            dg d          d             Zfej                            dd'd+d'd+gg          ej                            dd'd+d'd+gg          d                         Zgej                            d0dd g          ej                            ddgdd.gg          d                         ZhdS )    )datetimeN)CategoricalCategoricalIndex	DataFrameIndex
MultiIndexSeriesqcut)SeriesGroupBy)get_groupby_method_argsc                     d }t          j        t          ||          |          }|                     ||                                          S )zpReindex to a cartesian production for the groupers,
    preserving the nature (Categorical) of each grouper
    c                     t          | t          t          f          rB| j        }t          j        t          j        t          |                    || j                  } | S )N
categoriesordered)	
isinstancer   r   r   
from_codesnparangelenr   )ar   s     e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/groupby/test_categorical.pyfz)cartesian_product_for_groupers.<locals>.f   sX    a*K899 	J&	#j//**z19  A     names
fill_value)r   from_productmapreindex
sort_index)resultargsr   r   r   indexs         r   cartesian_product_for_groupersr&      sR    
   #C4LL>>>E>>%J>77BBDDDr   allanycountcorrwithfirstidxmaxidxminlastmaxmeanmedianminnthnuniqueprodquantilesem)sizeskewstdsumvarz7ignore:invalid value encountered in cast:RuntimeWarningc                     t          | j        d          }d }|                     |d          j                            |          }|j        j        d         dk    sJ d S )N   c                     |                                  |                                 |                                 |                                 dS )Nr2   r/   r)   r0   r@   )groups    r   	get_statsz2test_apply_use_categorical_name.<locals>.get_statsJ   s=    99;;99;;[[]]JJLL	
 
 	
r   Fobservedr   C)r
   rE   groupbyDapplyr%   r   )dfcatsrB   r#   s       r   test_apply_use_categorical_namerK   F   si    a==D
 
 
 ZZuZ--/55i@@F<a C''''''r   c           	         t          g dg dd          }t          g d|d          }t          t          d          dd	          }t          d
dddt          j        gi|          }|                    dd                                          }t          j	        ||           t          g dg dd          }t          g dg dd          }t          ||g dd          }|                    dd          }	t          g ddd	          }
t          dt          g d|
          i          }|	                    d          }t          j	        ||           t          ddgddgddggddg          }t          |j                  |d<   |                    dgd          }|                    d            }t          j	        ||dg                    |                    d          }|j        d!dg         }t          j	        ||           d" }d#}t          j        t"          |$          5  |                    |          }d d d            n# 1 swxY w Y   |j        d!dg                                         }t)          ddgd%          |_        | rd&nt,          }|d                             |          |d<   t          j	        ||           t          d
g d'i          }t1          j        |j        g d()          }d*}t          j        t"          |$          5  |j                            |d                              t                    }d d d            n# 1 swxY w Y   t          j        ||d
                    t          j        |j                            |d                              d+           |d
                    d,}t          j        t"          |$          5  |                    |d                              t                    }d d d            n# 1 swxY w Y   |d
g         }t          j	        ||           |                    |d          }|                    d-           }t          j	        ||d
g                    |                    d.           }d/}t          j        t"          |$          5  |                    t8                    }d d d            n# 1 swxY w Y   |                    t          j        j                  }|                    d0           }t          j	        ||d
g         d1           t          j	        ||d
g         d1           t          j	        ||d
g                    t          j	        ||d
g                    t          j        |j                            |d                              t          j                   |d
                    t          j	        |                    |d                              t          j                   |           t          d
g d2i          }t1          j        |j        g d3)          }d*}t          j        t"          |$          5  |j                            |d                              t                    }d d d            n# 1 swxY w Y   t          j        ||d
                    t          j        |j                            |d                              d4           |d
                    d,}t          j        t"          |$          5  |                    |d                              t                    }d d d            n# 1 swxY w Y   |d
g         }t          j	        ||           t          j	        |                    |d                              d5           |d
g                    t          d
g d6i          }t1          j        |j        g d7t          t          d                    8          }|                    |d                              tB                    }t          |j"        j#        |j"        j$        9          }t          g d6|          }d
|j        _%        t          j        ||           g d:}t          j&        '                    d          (                    d!dd;<          }t          j)        ||d9          }t          t          j&        '                    d          *                    d=                    }|                    |d                                          }|                    t	          j+        |          d                                          }t          ||j#        d          }
|,                    |
          }t          j	        ||           |                    |d          }|-                                }|j.        /                                }t	          j+        |          0                    |          }|0                    |          }t          |dg d:>          }|                    |dd?          -                                }t          j	        ||           t          j)        t	          j1        d          2                    d@          |d9          }t          |          }t          j3        |4                    dA          j        5                    d!          |           t)          g dBdz            }t          j3        |4                    dA          j        5                    d          |           d S )CN	r   r   r   brN   rN   crO   rO   r   rN   rO   dTr   	   rS   rS      rT   rT      r>      r   rN   abcdrN   namer   r   rS   rT   r>   r%   FrC   r   r   rN   rN   r   rN   zrO   rQ   rO   rQ   rO   rQ   yrS   rT   rU   r>   ABvaluesrd   rf   )rU      r   numeric_onlyzJohn P. Doez	Jane Dove	person_idperson_namecolumnsc                     | S N xs    r   <lambda>ztest_basic.<locals>.<lambda>v   s    1 r   r   c                 B    |                      d          j        d         S )Nrk   r   )drop_duplicatesilocrq   s    r   r   ztest_basic.<locals>.f}   s      //4Q77r   7DataFrameGroupBy.apply operated on the grouping columnsmatchrZ   str)rV         )r   
         (   )binsusing SeriesGroupBy.sumc                 *    t          j        |           S ro   r   r;   xss    r   rs   ztest_basic.<locals>.<lambda>       RVBZZ r   zusing DataFrameGroupBy.sumc                 .    t          j        | d          S Nr   axisr   r/   r   s    r   rs   ztest_basic.<locals>.<lambda>   s    bfRa&8&8&8 r   c                 .    t          j        | d          S r   r   r   s    r   rs   ztest_basic.<locals>.<lambda>   s    rvbq'9'9'9 r   zusing DataFrameGroupBy.maxc                 @    t           j                            |           S ro   )r   maximumreducer   s    r   rs   ztest_basic.<locals>.<lambda>   s    rz'8'8'<'< r   )check_dtype)rV   r|   r}   )ir   r~   r   r   r   c                 *    t          j        |           S ro   r   r   s    r   rs   ztest_basic.<locals>.<lambda>   r   r   c                 *    t          j        |           S ro   r   r   s    r   rs   ztest_basic.<locals>.<lambda>   s    26":: r   )rS   r   r   r   r   rS   rT   rU   r>   )labelsr   foobarbazquxd   r8   r   r>   )r   r   sortrD      future_stackr)   r0   r:   r2   z25%z50%z75%r/   )6r   r   r   listr   nanrF   r0   tmassert_frame_equalr	   r;   rk   	transformru   rv   assert_produces_warningFutureWarningrH   copyr   r%   objectastypepdcutr   assert_series_equalr/   r   r   filterr'   r   rf   r   r   rZ   randomdefault_rngintegersr   standard_normalasarrayr!   describecodesargsorttaker   repeatassert_index_equalstackget_level_values) using_infer_stringrJ   data	exp_indexexpectedr#   cat1cat2rI   gbexp_idxrr   gr   msgdtyperO   gbcresult2result3result4result5levelsr   groupeddesc_resultidx
ord_labelsord_dataexp_catsexpcexps                                    r   
test_basicr   V   s   555'''  D
 666TBBCCD fCFFFI#1a01CCCH\\#\..3355F&(++++++QUVVVD+++QUVVVD	DLLLAA	B	BB 
C%	(	(BS$GGGG(F999G$D$D$DEFFHVVV&&F&(+++ 	
]	a-=/ABm,	 	 	A #1=11Am			;-%	00A[[%%F&!]O"4555}--Fvq!f~H&(+++8 8 8 DC		#M	=	=	=                vq!f~""$$HAq6444HN'3EEVE&}5<<UCCH]&(+++ 
C%	&	&B
rt---...A
#C		#M	=	=	= @ @a%00::3??@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 62c7+++
Q''112G2GHH"S'   'C		#M	=	=	= > >A..88==> > > > > > > > > > > > > > > 3%yH&(+++
**Q*
'
'C]]8899F&"cU),,,mm99::G
&C		#M	=	=	= % %--$$% % % % % % % % % % % % % % % mmBJ-..Gmm<<==G'2se9%@@@@'2se9%@@@@'2se9---'2se9--- 24<<E<::AA"&II2c7SSS"**Q*77>>rvFFKKK 
C)	*	*B
rt222333A
#C		#M	=	=	= @ @a%00::3??@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 62c7+++
Q''112G2GHH"S'   'C		#M	=	=	= > >A..88==> > > > > > > > > > > > > > > 3%yH&(+++


1u
%%//0E0EFFC5	  
 
C&	'	'B
rt___[f-F-FGGGAZZEZ**0055F !4ah>NOOOIlll)444HHN68,,, *))FI!!!$$--a-==E!%>>>DRY**1--==hGGHHD\\$\//4466F||BJt,,u|==BBDDHv$/4PPPG((H&(+++ll4%l00G""$$K
*



CD!!&&s++Jyy~~HD-I-I-I  H uuEENNPPH+x000 !")A,,"5"5a"8"8&$OOOD
4
 
 C					-	-	3	D	DQ	G	G#   KKKaO
P
PC					-	-	3	D	DQ	G	G#    sl   8II!I)5M**M.1M.60P22P69P6S>>TT5[["%["*0^&&^*-^*c           
         t          t          j        ddd          t          t	          ddg          t          d          gdgdz  dgdz  z   t          d          gd	d
g                    }|                    d	g|           }t          t          j        ddd          t          t	          ddg          t          d          gdgdz  t          d          gd	d
g                    }d}t          j        t          |          5  |
                    d          }d d d            n# 1 swxY w Y   t          j        ||           d S )NrT      r   rN   r~   r   rV   rS   Index1Index2)r   r   r   r   r%   levelrD      z&you will need to pass a length-1 tuplerx   )r   r   r   r   r   rangerF   r   r   r   	get_groupr   )rD   rI   r   r   r   r#   s         r   test_level_get_groupr      s   	Yq"a  $c3Z00%))<37aS1W$eBii0X&
 
 

 
 
B 	

(h
77A Yq"a  $c3Z00%((;37E!HH%X&
 
 
  H 3C		#M	=	=	= " "S!!" " " " " " " " " " " " " " " &(+++++s   D//D36D3c                     t          dgdz  dgdz  z   g ddz  t          j        d          d          } t          | j        g dd	
          | _        |                     d          d                                         }|                    dd	          }g d}t          |g dd	
          }g dt          |          g}t          j
        |ddg          }t          dgdz  |d          }t          j        ||           d S )Nrd      re   )highmedlowr>   g      (@)rA   doseoutcomes)r   r   r   Tr   rA   r   r   )r   sort_remaining)r   r   r   r   r   r   )rd   rd   rd   re   re   re   r   rT   r)   r%   rZ   )r   r   r   r   r   rF   value_countsr"   r   r   from_arraysr	   r   r   rI   r#   r%   r   s       r   (test_sorting_with_different_categoricalsr     s/   	UQY#****Q.	$	
 	

 
B "'.D.D.DdSSSBGZZ  (5577FQt<<F888E*@*@*@$OOOE+++-=e-D-DEE"5&0ABBBEqcAgU999H68,,,,,r   r   TFc                    t          t          d          |           }t          t          d          ddg|           }t          j        t	          |                    }t          |||d          }|                    dd	gd
          }t          j        ||gdd	g          }t          g d|dg          }|	                    d           }t          j        ||           |                                }t          j        ||           d}	t          j        t          |	          5  |                    t          j                  }d d d            n# 1 swxY w Y   t          j        ||           t          j        ||gdd	g          }t!          d|          }d}	t          j        t          |	          5  |	                    d           }d d d            n# 1 swxY w Y   t          j        ||           d S )Nabcr   aaar   rN   r   )missingdenserf   r   r   TrC   r   )r   rS          @rf   )r%   rm   c                 .    t          j        | d          S r   )r   r0   rq   s    r   rs   ztest_apply.<locals>.<lambda>A  s    RWQQ%7%7%7 r   zusing DataFrameGroupBy.meanrx   rS   r[   rw   c                     dS NrS   rp   rq   s    r   rs   ztest_apply.<locals>.<lambda>R  s     r   )r   r   r   r   r   r   rF   r   r   rH   r   r   r0   r   r   aggr	   r   )
r   r   r   rf   rI   r   r   r   r#   r   s
             r   
test_applyr   1  sl    UW555E $u++3*gNNNGYs5zz""F	w&II	J	JBjj)W-j==G 
 '5!1)W9M
N
N
NCC(DDDH]]7788F&(+++\\^^F&(+++
'C		#M	=	=	= & &RW%%& & & & & & & & & & & & & & & &(+++ 
 '5!1)W9M
N
N
NCas###H
CC		#M	=	=	= , ,{{++, , , , , , , , , , , , , , ,68,,,,,s$   - EE EG$$G(+G(c                 6	   |r5|s3|                      t          j                            d                     t	          g dg dd          }t	          g dg dd          }t          ||g d	d
          }ddgdz  |d<   |                    g d|          }t          j        ||ddgdz  gg d          }t          dt          g d	|          i          
                                }|                                }	|s%t          |||ddggt          d          d          }t          j        |	|           |                    ddg|          }t          j        ||gddg          }t          g d	g dd|          }|                                }	|s"t          |||gt          d          d          }t          j        |	|           t	          g dg dd          g dg dd }
t          |
          }|                    d!|          }|                                }	t#          t          d"          d!t          d#          d$          }t          d%d%gd&d'gd(|          }|sBt#          t          d#          d!t          d#          d$          }|                    |          }t          j        |	|           |                    d!d)g|          }|                    d*          }	t          g d+t	          g dg dd          g d,d-                              d!d)g          }|s!t          ||j        j        d.dggd!d)g          }t          j        |	|           d/D ]N}|\  }}|                    |          }	||j        |k    |j        |k    z           }t          j        |	|           Og d0g d1g d2d3}
t          |
          }t3          j        |d         t7          j        dd4d5                    }||d6<   |                    d6d7gd8|9          }|                    d*          }	|                    d6d7gd|9          }|                    d*                                          }t          j        |	|           d S ):NzTODO(infer_string)reasonr\   r]   Tr   r_   r`   rb   rc   r   r   rT   rE   )rd   re   rE   rC   r   rf   r[   ABCr   r   rd   re   )r   r   r   r   )rf   rE   AB)r   rN   r   rN   r   rN   rO   rS   rS   rT   rT   r~   r   r   r   )catintsvalr  abr   )rZ   r   r   g      ?      4@r   )r  r	  r  r0   )      $@g      >@r  g      D@rS   rT   rS   rT   )r	  r  r  rS   ))r   rS   )rN   rT   )rN   rS   )r   rT   )r~   r   r>   r   r>   rS   rS   r~   r   r   r   2   <   F   )rQ   rO   er   r   rQ   rO   r   r   r   r~   rU   r   r   Fas_indexrD   )applymarkerpytestmarkxfailr   r   rF   r   r   r	   r"   r;   r&   r   r   r   r0   r   r!   r   	set_indexr  rf   r   r  r   r   r   linspacereset_index)requestr   rD   r   r   rI   r   r   r   r#   rQ   groups_single_keyr%   groups_double_keykeyrO   ir  groupsgroups2s                       r   test_observedr$  V  sj     L( LFK--5I-JJKKK+++QUVVVD+++QUVVVD	DLLLAA	B	BBenq BsG 
OOOh	7	7B&	teU^a'(  I (F<<<y$I$I$IJKKVVXXHVVXXF 
1tTE5>2DKKA
 
 
 &(+++	S#J	2	2B&d|C:FFFI<<&B&B&BCC9  H VVXXF 
1tTlDJJ1
 
 
 &(+++    ___d
 
 
 	 	A 
1B 

58
<<##%%F T

4;;  I 3*dBZ@@	RRRH + KKeUT
 
 
 ##E**&(+++ 

E6?X
FF""6**F+++$$$$   !LL	
 	
  i     
1rv}q!f-v
 
 &(+++ 8 0 01",,S11rv{rw!|45
fh////
 &%%+++222	 	A
 
1B
&EBK2q11
2
2CBwKZZ%(58ZLLFZZFjj'5)D8jLLG{{6""..00H&(+++++r   c                    g dg dg dd}t          |          }t          j        |d         g d          }d|_        |                    |dg| 	          }t          j        |g dgddg
          }t          g dg dd|          }| st          ||j        g dgddg          }|	                    d          }t          j        ||           d S )N)rU   rU   r>   rV   rb   )r~   r      "   )C1C2C3r(  )rS   rT   rU   r   r  r)  rC   r   )      @r+  g      @g      @)r  g      Y@g      i@g      A@)r(  r*  r[   r0   )r   r   r   rZ   rF   r   r   r&   rf   r   r   r   )rD   rQ   rI   rf   r  r   r   r#   s           r   test_observed_codes_remapr,    s   ||<<<7I7I7IJJA	1BVBtHlll++FFK

FD>H
EE

 &,,,!7t}
M
M
MC###+E+E+EFFc  H  
1v}lll3eT]
 
 ""6**F&(+++++r   c            	         t          t          j                            d                              ddd          t          j                            d                              ddd          t          j                            d                              ddd          dd          } | j                            t                                        d          | d	<   |                     g d
d          }|	                                }|j
        j        d                                         | j                                        k    sJ |j
        j        d                                         | j                                        k    sJ |j
        j        d                                         | j                                        k    sJ d S )NrT   r      i0u  r   '  )r  int_idother_idr   categoryr  )r  r0  r1  TrC   rS   )r   r   r   r   r   r  r   r{   rF   r)   r%   r   r4   r0  r1  )rI   r   r#   s      r   test_observed_perfr3    s    
9((++44Q%4HHi++A..773U7KK	--a0099!U9OO		
 	

 
B c""))*55BuIjj666jFFG]]__F<q!))++rv~~/?/?????<q!))++ry/@/@/B/BBBBB<q!))++r{/B/B/D/DDDDDDDr   c                 |   t          g dg d          }t          |g dd          }|                    d|           }|j        }| r't	          dd	gd
          t	          dgd
          d}n6t	          dd	gd
          t	          g d
          t	          dgd
          d}t          j        ||           d S )N)r   rO   r   r  r   rS   rT   rU   r  valsr  rC   r   rT   int64r   rS   )r   rO   )r   r   rF   r"  r   r   assert_dict_equal)rD   r  rI   r   r#   r   s         r   test_observed_groupsr<    s     ooo///
B
B
BC	3			22	3	3B


58
,,AXF 
1vW555E1#W<U<U<UVV 1vW---r)))s'***
 
 *****r   z,keys, expected_values, expected_index_levelsr   )r|   	   r   r6  rz   rN   )	rg   r   r   r   r   r=  r   r   r   r>   rV   r   a2)	r|   r   r   r   r=  r   r   r   r   test_seriesc                    t          t          g dg d          t          g dg d          g dg dd                              ddg          }d	| vr|                    d	
          }|                    | d          }|r|d         }|                                }t          |           dk    r|}ng ddg dz  g}t          |||           }t          d|i|          }	|r|	d         }	t          j	        ||	           d S )NrS   rS   rT   r6  r5  r>  )rg   r   r=  )r   r?  rN   rO   r   r?  rN   rl   FrC   rO   rS   	r   r   r   rS   rS   rS   rT   rT   rT   rU   r   rS   rT   )r   r   r[   )
r   r   r  droprF   r;   r   r   r   assert_equal)
keysexpected_valuesexpected_index_levelsr@  rI   r   r#   r%   r   r   s
             r   test_unobserved_in_indexrJ    sO   , 
YYY999===iiiIII>>>		
 	

 
 id  $WWSW!!	D5	)	)B WVVXXF
4yyA~~%,,,a)))m<!
 
 

 #/u===H !C=OFH%%%%%r   c                 j   t          t          dt          j        dgg d          g dd          }|                    d|           }|j        }| rdt          dd	gd
          i}n5t          dd	gd
          t          g d
          t          g d
          d}t          j        ||           d S )Nr   )r   rN   rQ   r5  r6  r7  r  rC   r   rT   r9  r:  )	r   r   r   r   rF   r"  r   r   r;  )rD   rI   r   r#   r   s        r   test_observed_groups_with_nanrL  =  s    	RVS1oooNNNII	
 	

 
B 	

58
,,AXF 
1vW5556 1vW---r)))r)))
 

 *****r   c                  R   t          dt          j        t          j        gg d          } t          g d          }t	          | |d          }|                    dd          d	                             d
          }|d	         j        d
g         }t          j	        ||           d S )Nr   r  r5  r6  )r  serr  FrC   rN  r   )
r   r   r   r	   r   rF   r3   rv   r   r   )r  rN  rI   r#   r   s        r   test_observed_nthrO  R  s    
sBFBF+
H
H
HC


C	3s++	,	,BZZZ..u599!<<F%y~qc"H68,,,,,r   c                 
   t          t          j        dt          j        dgg d          }t          g d          }t	          ||d          }|                    d|                                                                           }| r&t	          t          dgg d          dgd          }n<t	          t          g dg d          dt          j        t          j        gd          }t          j	        ||           d S )	Nr   r  r5  rb   )s1s2rQ  rC   rT   )
r   r   r   r	   r   rF   r+   r  r   r   )rD   rQ  rR  rI   r#   r   s         r   #test_dataframe_categorical_with_nanrS  ]  s   	bfc263/OOO	L	L	LB			B	"B''	(	(BZZxZ006688DDFFF 

uAAA!MM
 
 !///oooNNN"&"&) 
 
 &(+++++r   rD   r   c                    t          g dg d|           }t          g d          }t          ||d          }|                    d||          d                             d          }t          |j        j        d	
          }t          |j                  }|sd||                                <   t          ||k              sd|  d| d| d| }J |            d S )N)rQ   r   rN   r   rQ   rN   )r   rN   r   rQ   r   )labelr	  rU  )rD   r   r	  r+   r   r:  r   zDLabels and aggregation results not consistently sorted
for (ordered=z, observed=z, sort=z
)
Result:
)	r   r	   r   rF   	aggregater%   arrayisnar'   )	r   rD   r   rU  r	  rI   r#   aggrr   s	            r   0test_dataframe_categorical_ordered_observed_sortrZ  q  s3    &&&---  E
 ///
0
0C	U3//	0	0B ZZ(Z>>uEOOPWXXF 6<%X666E&,D &%TYY[[u} !#! !08! !AE! !! ! 	
 	c r   c                     t          j        dd          } t          j                            d                              ddd          }t          j        || d	          }t          t          j                            d          	                    d
                    }|
                    |d                                          }|
                    t          j        |          d                                          }|                    |           }t          |j        |j        d          |_        t!          j        ||           |
                    |d          }|                                }|j                                        }|                    |          }	|                    |          }
|

                    |	d                                          }t!          j        ||           t!          j        |j        |j                   t!          j        |j                            d          |j                            d                     t          j        t          j        d                              d          | d	          }t          |          }t!          j        |                    d          j                            d          |           t7          g ddz            }t!          j        |                    d          j                            d          |           d S )Nz
2014-01-01r>   )periodsrT   r   r   r   Tr   r   FrC   r   r   r   r   rS   )r   
date_ranger   r   r   r   r   r   r   r   rF   r0   r   r!   r   r%   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   rJ   r   r#   r   r   r   r   r   r   r   r   s                r   test_datetimer^    s   ]<333FI!!!$$--a-==E!%>>>DRY**1--==hGGHHD\\$\//4466F||BJt,,u|==BBDDH''H%8>4  HN &(+++ll4%l00G""$$K
*



C3Jyy~~H
U;;DDFFH+x000++X^<<<**1--x~/N/Nq/Q/Q  
 !")A,,"5"5a"8"8&$OOOD
4
 
 C					-	-	3	D	DQ	G	G#   KKKaO
P
PC					-	-	3	D	DQ	G	G#    r   c                  8   t           j                            d          } g d}|                     ddd          }t	          j        ||d          }t          t          j        t          j        d          d          	                    d	d          t          d
                    }||d<   |                    d                              dd                                          }|t          d
                                       |j        d                                          }t          t	          j        g d|d          d          |_        t#          j        ||           |                    dd                                          }|t          d
                                       |j        d                                          }t          t	          j        g d|d          d          |_        t#          j        ||           d S )NrT   r   r   r>   r   r   Tr   rX   rl   rJ   Fr   rC   r   rS   rT   rU   rz   )r   r   r   r   r   r   r   r   r   reshaper   r  rF   r;   r   r   r%   r   r   )sr   r   rJ   rI   r#   r   s          r   test_categorical_indexrd    s   
	a  A)))FJJq!"J%%E!%>>>D	29RYr]]A..66r1==tF||	T	T	TBBvJ \\&!!))E)BBFFHHF$v,,''
U'CCGGIIH%|||VTBBB  HN &(+++ ZZZ//3355F$v,,''
U'CCGGIIH%|||VTBBB  HN &(+++++r   c                     t          g dg dd          } t          t          j                            d                              d          |           }|                    g dd	z                                            }t          j	        |
                    d
          j        |            t          j        |
                    d
          j        j        | j                   d S )N)r   r   r   r   r   Tr   rT   )r   r>   rl   rb   rV   r   )r   r   r   r   r   r   rF   r   r   r   r   rm   assert_categorical_equalrf   )rJ   rI   r#   s      r   !test_describe_categorical_columnsrg    s    $$$///  D
 
29((++;;GDDd	S	S	SBZZq())2244F&,,D,99A4HHH$''/6    r   c                     t          t          d          ddgdz  t          d          dz  d          } | d                             d	          | d<   |                     d
dgd          d                                                                         }|                                }t          ddgdd          }t          j
        |j        |           t          j        |j        j        |j                   |d         |d         z   }t          ddgt          ddgd
                    }t          j        ||           d S )Nr~   rd   re   rV   XYXXYrT   )r   mediumartistrj  r2  rk  FrC   r   r   rZ   r   r>   XYrz   r[   )r   r   r   r   rF   r)   unstackr   r   r   r   rm   rf  rf   r	   r   r   )rI   gcatr#   exp_columnsr   s        r   test_unstack_categoricalrr    s2   	BiiC:>T']]Q=NOO
 
B h<&&z22BxL::x*U:;;C@FFHHPPRRD]]__F"C:u8LLLK&.+666 5{7IJJJ#Yc"Fq!fE3*8$D$D$DEEEH68,,,,,r   c                  n   t          t          j        t          j        ddddddddg
          } t          j        |                                 j        d          }t          j        t          d          5  | 
                    |                                           d d d            d S # 1 swxY w Y   d S )NrS   rT   rU   r>   z$Grouper and axis must be same lengthrx   )r	   r   r   r   r   dropnarf   r  raises
ValueErrorrF   r0   )seriesr   s     r   test_bins_unequal_lenrx    s    RVRVQ1aAq!<==F6&--//(!,,D 
z)O	P	P	P $ $t!!###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   5(B**B.1B.rw  r   r>   rU   rS   rT   rd   re   c                     | dz   S r   rp   )r   s    r   rs   rs     s
    S1W r   rg   c                 *   |                      t          t          d          d          d          }|                    t                    }t          |t	          |                                                    }t          j        ||           d S )NABBAr2  r:  FrC   r[   )rF   r	   r   rV  r   rG  r   r   )rw  r   rF   r#   r   s        r   test_categorical_seriesr}    s{      nnVDLL
CCCenTTGt$$Fd"2499;;"?"?@@@H68,,,,,r   c                     t          t          g dg d          g dg dd                              ddgdd	
                                          } t          t          ddgj        j        j                  ddgddgdg d          }t          j        | |           fd}d}t          j        t          |          5                      d|gdd	
                                          } d d d            n# 1 swxY w Y   t          t          ddgj        j        j                  ddgddgdg d          }t          j        | |           t          g dd          }d}t          j        t          |          5                      d|gdd	
                                          } d d d            n# 1 swxY w Y   t          j        | |           ddg}t          t          ddgj        j        j                  ddgddgdg d          }dD ]d}t          t          d          |          _                            |dd	
                                          } t          j        | |           ed S )NrS   rT   rT   r6  )r~      r  )e   f   g   )r  rd   re   r  rd   FTr  rS   rT   r5  r~   r  r     rl   c                 "    j         | df         S )Nrd   )loc)rrI   s    r   rs   ztest_as_index.<locals>.<lambda>0  s    "&C. r   z*A grouping .* was excluded from the resultrx   r   )r   rN   rN   rz   )Nrm  re   r   )r   r   rF   r;   r  r   r   r   r   r   r	   r   r   r%   )r#   r   r   r   rc  group_columnsrZ   rI   s          @r   test_as_indexr    s   	yyy)))44 	
 	

 
B ZZutZDDHHJJF1v"&*2GHHHbs	
 	

 "!!  H &(+++ 	!   A
6C		#M	=	=	= M MUAJFFJJLLM M M M M M M M M M M M M M M1v"&*2GHHHbs	
 	

 "!!  H &(+++ 	U+++A
6C		#M	=	=	= M MUAJFFJJLLM M M M M M M M M M M M M M M&(+++ CLM1v"&*2GHHHbs	
 	

 "!!  H ! 0 0e4000MEDIIMMOO
fh////	0 0s$   	-DD	D-GG
G
c                     t          d          } t          dt          t          d          | d          i          }t          | | dd          }t          t          d          | dd          }t	          j        |                    ddd	                                          j        |           t	          j        |                    ddd	                                          j        |           t          dt          t          d          | d          i          }t          | | dd          }t          t          d          t          d          dd          }t	          j        |                    ddd	                                          j        |           t	          j        |                    ddd	                                          j        |           d S )
Nr   rd   baTr   rl  bacFr   )	r   r   r   r   r   r   rF   r+   r%   )r   rI   r"   nosort_indexs       r   test_preserve_categoriesr  W  s   eJ 
CT$ZZJPTUUUV	W	WB!*j$SQQQJ#DKKTPSTTTL


3TE
2288::@*   


3UU
3399;;A<  
 
CT$ZZJPUVVVW	X	XB!*j%cRRRJ $DKKeeRUVVVL


3TE
2288::@*   


3UU
3399;;A<    r   c                  J   t          g dg dt          t          d          t          d          d          t          t          d          t          d          d          d          } t          d	d
t          j        gddt          j        gt          t          d          t          d          d          t          t          d          t          d          d          d          }dD ]}|                     |dd                              d          }|                     |dd                              d                                          }|                    |j	                  }t          j        ||           t          j        ||           d S )N)rS   rT   rS   rS   rT   )r~      r      r'  abaabr  Fr   T)rd   re   r(  r)  r   g      ?g      9@r  )r(  r)  byr  rD   rh   rl   )r   r   r   r   r   rF   r0   r  r!   rm   r   r   )rI   exp_fullcolresult1r   r   s         r   test_preserve_categorical_dtyper  u  s   	 %%%d7mmUUSSSd7mmUTRRR		
 	

 
B sBF#bf%d5kkd5kk5QQQd5kkd5kk4PPP		
 	
 H  1 1**ee*DDII J 
 
 JJ#uJ==TtT$$[]] 	
 ##GO#<<
gx000
gx00001 1r   zfunc, valuessecondfourththirdc                    t          g dd          }t          g d|d          }|                    d          } t          ||                       }t          ddgt	          ||j        	          d                              d          }t          j        ||           |                    d          d
         } t          ||                       }|d
         }t          j	        ||           d S )N)r+   r  r  r  Tr   )r`  r`  r  )payloadr  r  r  r`  r:  r  )
r   r   rF   getattrr	   r   r  r   r   r   )funcrf   rO   rI   r   r#   r   sgbs           r   test_preserve_on_ordered_opsr    s    	:::DIIIA	///::	;	;B


9AWQFHVF!'%B%B%BCC i	  &(+++ **Y


&CWS$!!FH68,,,,,r   c                     t          t          j                            d                              d                    } t          j        g d          }t          j        |g dd          }|                     |d          	                                }|                     |d          	                                }t          |j        |j        |j        	          |_        t          j        ||           t          j        g d
          }t          j        |g dd          }|                     |d          	                                }|                     |d          	                                                    |j                  }t          |j        |j        |j        	          |_        t          j        ||           t          g dg dd	          }t#          g d|d          } |                     dd          	                                }|d         j        }t          j        dddt          j        g          }t          j        ||           d S )NrT   r=  rC  rD  Tr   FrC   r   )	r   r   r   rS   rS   rS   rU   rU   rU   ra  rM   rP   rR   rW   rN   r   rS   r>   )r	   r   r   r   r   rW  r   r   rF   r0   r   r%   r   r   r   r   r!   r   rf   r   assert_numpy_array_equal)r   r   rJ   r#   r   s        r   test_categorical_no_compressr    s:   ")''**::1==>>DH00011E!%DAAAD\\$\//4466F
,,uu,
-
-
2
2
4
4C 	dot|  CI 63'''H00011E!%tDDDD\\$\//4466F
,,uu,
-
-
2
2
4
4
<
<T_
M
MC 	dot|  CI 63'''555'''  D
 666TBBCCD\\#\..3355FC[F
(Aq!RV$
%
%C,,,,,r   c                  :   t          d gdz  t          g d          d          } |                     d                                          d         }t	          t          g ddg          t	          g d	d
          d          }t          j        ||           d S )NrU   )trainr  testry  rd   re   r  r  r5  r   r   rZ   r   )r   r   rF   r+   r	   r   r   rI   r#   r   s      r    test_groupby_empty_with_categoryr    s     
$!+6P6P6P*Q*QRR	S	SBZZ__""$$S)FBFG#4555Rxc222  H
 68,,,,,r   c                  ~   t          dt          j                            d                              ddd          i          } d t          ddd          D             }t          ||          }|                     dgd	          } t          j	        | j
        t          dd
d          d|          | d<   |                     dgd          d                                         }|t          |j        d                    }t          |j        |j        j                  |_        t#          j        ||           d S )NvaluerT   r   r/  r   c                 "    g | ]}| d |dz    S )z - i  rp   ).0r!  s     r   
<listcomp>ztest_sort.<locals>.<listcomp>  s*    ===1qu===r   i  T)r  	ascendingi)  F)rightr   value_grouprC   c                 P    t          |                                 d                   S )Nr   )floatsplitrq   s    r   rs   ztest_sort.<locals>.<lambda>  s    eAGGIIaL.A.A r   )r   rz   )r   r   r   r   r   r   r   sort_valuesr   r   r  rF   r)   sortedr%   r   rZ   r   r   )rI   r   
cat_labelsresr   s        r   	test_sortr    s)    
GRY22155>>q%MMN	O	OB==a(<(<===FVV,,J	G9	5	5B
%5#&&eJ  B} **m_u*
5
5m
D
J
J
L
LC
fSY$A$ABBB
CC @@@CI3$$$$$r   c           
         t          g dg dg dg dg dg dg dgg d	          }t          |d
         |          |d
<   |                    d
| d                                          }| rddgddgddgddgg}g d}nddgddgddgddgg}g d}t          |ddgt	          |d
|                    }t          j        ||           d S )N)	(7.5, 10]r~   r~   )r  r   r   )(2.5, 5]rV   r   )(5, 7.5]r   r   )r  r>   r  )(0, 2.5]rS   r  )r  rg   r  )r   r   r   rl   r   r   Fr   rS   r  rV   r   r   r   r~   )r  r  r  r  )r  r  r  r  r   r   rY   rm   r%   )r   r   rF   r+   r   r   r   )r   r   rI   r#   data_valuesindex_valuesr   s          r   
test_sort2r    sN   
 
!!!   	
 (''
 
 
B bk7;;;BwKZZdUZ;;AACCF I2wB!R2r(;HHHBx!R1b'Ar7;HHH|'7KKK  H &(+++++r   c                 \   t          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          gg dg ddg d	          }t          |d
         |          |d
<   | rQddgddgddgddgg}t          ddd          t          ddd          t          ddd          t          ddd          g}nPddgddgddgddgg}t          ddd          t          ddd          t          ddd          t          ddd          g}t          |ddgt          |d
|                    }|                    d
| d                                          }t          j        ||           d S )Ni  rg   rS   rT   rV   )r~   r   rV   r   r>   rS   rg   r  )dtr   r   rl   r  r   r  r   r   r   r~   r   r   rY   r  Fr   )r   r   r   r   rF   r+   r   r   )r   r   rI   r  r  r   r#   s          r   test_sort_datetimeliker    s    
 q!$$q!$$q!$$q!$$q!$$q!$$q!$$ *))///	
 	
 %$$
 
 
B$ 2d8W555BtH 
2wB!R2r(;T1a  T1a  T1a  T1a  	
 Bx!R1b'Ar7;T1a  T1a  T1a  T1a  	
 |$HHH  H
 ZZ4%Z88>>@@F&(+++++r   c                  ~   t          t          g dg d          g dd          } t          g dd          }|                     dd	          j                                        }t          g d
|d          }t          j        ||           |                     dd	          j                            d          }t          g d
|d          }t          j        ||           |                     dd	          j                            d          }t          ddt          j
        g|d          }t          j        ||           |                     dd	          j                            d          }t          dt          j
        t          j
        g|d          }t          j        ||           d S )Nr   r   rN   r  r5  rS   rT   rS   ry  rd   rz   FrC   )rU   rS   r   re   r   	min_countrS   rU   rT   )r   r   r   rF   re   r;   r	   r   r   r   r   rI   expected_idxr#   r   s       r   test_empty_sumr  Q  s   	///oooFFFYYYWW
 
B $OOO#>>>L ZZeZ,,.2244FiiiC888H68,,, ZZeZ,,.22Q2??FiiiC888H68,,, ZZeZ,,.22Q2??Fq!RVnl===H68,,, ZZeZ,,.22Q2??Fq"&"&)<cBBBH68,,,,,r   c                     t          t          g dg d          g dd          } t          g dd          }|                     dd	          j                                        }t          g d
|d          }t          j        ||           |                     dd	          j                            d          }t          g d
|d          }t          j        ||           |                     dd	          j                            d          }t          ddt          j
        g|d          }t          j        ||           d S )Nr  r  r5  r  ry  rd   rz   FrC   )rT   rS   rS   re   r   r  rS   rT   )r   r   r   rF   re   r5   r	   r   r   r   r   r  s       r   test_empty_prodr  m  sT   	///oooFFFYYYWW
 
B $OOO#>>>L ZZeZ,,.3355FiiiC888H68,,, ZZeZ,,.33a3@@FiiiC888H68,,, ZZeZ,,.33a3@@Fq!RVnl===H68,,,,,r   c                  J   t          t          t          d                    t          t          t          j        ddd                    dz            t          j        d          d          } |                     dd	gd
                                          }t          j
        t          g d          t          t          j        ddd                    gdd	g          }t          ddddddddt
          j        dg	i|          }t          j        ||           d S )N	abcbabcbaz2018-06-01 001minrU   )freqr\  r=  )key1key2rf   r  r  FrC   r  r   rf   r   r>   r   rV   r   rT   r[   )r   r   r   r   r]  r   r   rF   r0   r   r   r   r   r   )rI   r#   r   r   s       r   ,test_groupby_multiindex_categorical_datetimer    s+    
[ 1 122R]?KKKLLqP  ill	
 	

 
B ZZ(5Z99>>@@F

!((oFANNNOO	
 v  C (Q1aAq"&!$DESQQQH&(+++++r   zas_index, expectedrB  r2  r:  r  r   rr   )r%   r   rZ   r   rN   rr   c                     t          t          g dd          g dg dd          }|                    ddg| d	
          d                                         }t	          j        ||           d S )NrB  r2  r:  r  r6  r  r   rN   Tr  rr   )r   r	   rF   r;   r   rF  )r  r   rI   r#   s       r   ,test_groupby_agg_observed_true_single_columnr    s    6 
YYYj111						RR
 
B ZZc
XZEEcJNNPPFOFH%%%%%r   r   c                     t          g dg dd          }t          g dg dd          }|                    d|           }t          j        ||           d S )NrP   Fr   )Nr   rN   rO   rS   r   )r   shiftr   rF  )r   ctr   r  s       r   
test_shiftr    s    	)=)=)=u
 
 
B *>*>*>  H ((1(
,
,COC"""""r   c                    |                                  dd         }|d                             d          |d<   |d                             d          |d<   t          g d          |d<   |                    dgd	
          }|S )a  
    DataFrame with multiple categorical columns and a column of integers.
    Shortened so as not to contain all possible combinations of categories.
    Useful for testing `observed` kwarg functionality on GroupBy objects.

    Parameters
    ----------
    df: DataFrame
        Non-categorical, longer DataFrame from another fixture, used to derive
        this one

    Returns
    -------
    df_cat: DataFrame
    Nr>   rd   r2  re   rb   rE   rG   rS   r   )r   r   r	   rE  )rI   df_cats     r   r  r    s    " WWYYrr]F+$$Z00F3K+$$Z00F3K&&F3K[[#Q[''FMr   	operationr   rH   c                    t          g d| d         j        d          }t          g d| d         j        d          }t          j        ||g          }t	          g d|d                                          }|                     ddgd	
          d         }|dk    rdnd}t          j        t          |          5   t          ||          t                    }d d d            n# 1 swxY w Y   t          j        ||           d S )N)r   r   r   r   rd   r  )onethreer  twore   )rT   r>   rS   rU   rE   r   r%   rZ   TrC   rH   using np.sumr   rx   )r   r   r   r   r	   r"   rF   r   r   r   r  r;   r   )	r  r  lev_alev_br%   r   r   r   r#   s	            r    test_seriesgroupby_observed_truer    sR    ...fSk6GcRRRE000s8IPSTTTE"E5>22E<<<u3???JJLLHnnc3Z$n77<G%00..6OC		#M	=	=	= 2 2,),,S112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 68,,,,,s   ?C**C.1C.c                    t          j        t          ddgd          t          g dd          gddg                                          \  }}t	          d	d
t
          j        dt
          j        dg|d          }|dk    rLd}t          j        t          |          5  |
                    dd          }d d d            n# 1 swxY w Y   |                     ddg|          d         }|dk    rdnd}t          j        t          |          5   t          ||          t                    }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr   r   Fr   r  r  r  rd   re   r   rT   r>   rS   rU   rE   r  r   z.The 'downcast' keyword in fillna is deprecatedrx   r   infer)downcastrC   r   r  )r   r   r   	sortlevelr	   r   r   r   r   r   fillnarF   r  r;   r   )	r  rD   r  r%   _r   r   r   r#   s	            r   )test_seriesgroupby_observed_false_or_noner    s   
 &eU^U;;;444eDDD	
 Cj   ikk E1 Aq"&!RVQ7u3OOOHE>'SAAA 	< 	<q7;;H	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<nnc3Z(n;;C@G'0E'9'9
#
#~C		#M	=	=	= 2 2,),,S112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 68,,,,,s$   !CC	C	D??EEzobserved, index, datar   r   rd   r  )r  r  r  r  r  r  r  r  re   )rT   rT   r>   r>   rS   rS   rU   rU   r   r  )rd   re   Nc                     t          ||d          }|                     ddg|          d                             d           }t          j        ||           d S )NrE   r  rd   re   rC   c                 T    |                                  |                                 dS )Nr2   r/   r  rq   s    r   rs   z8test_seriesgroupby_observed_apply_dict.<locals>.<lambda>B  s    !%%''!%%''22 r   )r	   rF   rH   r   r   )r  rD   r%   r   r   r#   s         r   &test_seriesgroupby_observed_apply_dictr    sh    \ 4u3777H^^S#J^::3?EE22 F 68,,,,,r   c                     |                      ddgd          d                                         }|                      ddgd                                          d         }t          j        ||           d S )Nrd   re   FrC   rE   )rF   r0   r   r   )r  r   r#   s      r   4test_groupby_categorical_series_dataframe_consistentr  G  so    ~~sCj5~99#>CCEEH^^S#J^77<<>>sCF68,,,,,r   code)rS   r   r   )r   r   r   c                 @   t          g dg dg dd          }t          j        | t          d                    }d}t	          j        t          |          5  |                    |d	d
          }d d d            n# 1 swxY w Y   |                                }d}t	          j        t          |          5  |j	                            |dd
          }d d d            n# 1 swxY w Y   |                                j	        }t	          j
        ||           d S )Nrb   )r`  r  )rV   r   rg   r   r  r   r5  z+DataFrame.groupby with axis=1 is deprecatedrx   rS   F)r   rD   z5The 'axis' keyword in DataFrame.groupby is deprecatedr   )r   r   r   r   r   r   r   rF   r0   Tr   )r  rI   r  r   r   r#   gb2r   s           r   test_groupby_categorical_axis_1r   N  s    
,<,<,<<<<PP	Q	QB

 $u++
>
>
>C
7C		#M	=	=	= 5 5ZZ!eZ445 5 5 5 5 5 5 5 5 5 5 5 5 5 5WWYYF
AC		#M	=	=	= 8 8dll3Ql778 8 8 8 8 8 8 8 8 8 8 8 8 8 8xxzz|H&(+++++s$   A??BB;C%%C),C)c                 :   t          t          ddg|          ddgdddg	          }|                                }|                    d| 
                              t           j        d                                          }t          j        ||           d S )NBobGregr   rS   rT   )NameItemr  r  rl   rC   T)skipna)	r   r   r   rF   r   r;   r  r   r   )rD   r   rI   r   r#   s        r   $test_groupby_cat_preserves_structurer  ^  s    	eV_g>>>AOO 
 
 
B wwyyH 	

6H
--	Y]4	(	(	  &(+++++r   c                     t          g dt          d          d          } t          j        t          d          5  |                     d                              d            d d d            d S # 1 swxY w Y   d S )Nr\   r>   r<   r	  z'vau'rx   r<   c                 n    t          | j        d         d         g| j        d         d         gd          S )Nr`  r<   vaur	  )r   rv   )rowss    r   rs   z/test_get_nonexistent_category.<locals>.<lambda>t  s7    2u-.	"e8L7MNN  r   )r   r   r  ru  KeyErrorrF   rH   rI   s    r   test_get_nonexistent_categoryr  o  s    	///aAA	B	BB	xw	/	/	/ 
 



5 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   *A44A8;A8c           	         | dk    rt          j        d           t          t          t	          d          t	          d                    t          t	          d          dz  t	          d                    dgd	z  d
          }t          | |          }|rd	nd}|                    ddg|          d         }| dk    rt          ||           rJ d S t          ||           }|s>| dv r:t          j	        t          d          5   ||  d d d            n# 1 swxY w Y   d S  || }t          |          |k    sJ d S )Nngroupngroup is not truly a reductionAABBABCDr5  r  rT   皙?r>   cat_1cat_2r  r  r  r  rC   r  r*   r-   r,   (empty group due to unobserved categoriesrx   )r  skipr   r   r   r   rF   hasattrr  ru  rv  r   )reduction_funcrD   rI   r$   expected_lengthseries_groupbyr   r#   s           r   0test_series_groupby_on_2_categoricals_unobservedr   z  s   !!5666	 f$v,,GGG daDLLIIIUQY	
 	

 
B #>266D#+aaOZZ' 2XZFFwON##>>:::::
..
1
1C *>>>]H
 
 
 	 	 CJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	S$ZFv;;/))))))s   DD Dc           	      &   | dk    rt          j        d           | dk    r5t           j                            d          }|                    |           t          t          t          d          t          d                    t          t          d	          d
z  t          d                    dgdz  d          }t          d          t          d          t          d          t          d          t          d          g}t          | |          }|
                    ddgd          d         }t          ||           }| dv r:t          j        t          d          5   ||  d d d            n# 1 swxY w Y   d S  || }t          |          }	|D ]?}
|j        |
         }t!          j        |	          rt!          j        |          s||	k    sJ @|	dk    r,| dk    r(t%          j        |j        t$          j                  sJ d S d S d S )Nr  r  r*   z6TODO: implemented SeriesGroupBy.corrwith. See GH 32293r   r  r  r5  r  rT   r  r>   r  ACBCCACBCCr  r  FrC   r  r  r  rx   r   r;   )r  r  r  r  r  r   r   r   tupler   rF   r  ru  rv  -_results_for_groupbys_with_missing_categoriesr  r   rX  r   
issubdtyper   integer)r  r  r  rI   
unobservedr$   r  r   r#   zero_or_nanr   r	  s               r   ?test_series_groupby_on_2_categoricals_unobserved_zeroes_or_nansr-    sc    !!5666##{  K ! 
 
 	D!!!	 f$u++FFF daDKKHHHUQY	
 	

 
B ++uT{{E$KKteDkkRJ">266DZZ' 2UZCCGLN
..
1
1C---]H
 
 
 	 	 CJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	S$ZF?OK O Ojo$$NN3+;M;M;M;M aNe33}V\2:66666 3366s   (E::E>E>c           	         | dk    rt          j        d           t          t          t	          d          t	          d                    t          t	          d          t	          d                    g dd	          }g d
}|                    ddgd          }t          | |          } t          ||           | }|D ]}||j        vsJ d S )Nr  2ngroup does not return the Categories on the indexr  r  r5  111112r  r  r  r  r  )rd   2)re   r4  )rE   1)rE   r4  r  r  TrC   )	r  r  r   r   r   rF   r   r  r%   )r  rI   unobserved_catsdf_grpr$   r  r  s          r   >test_dataframe_groupby_on_2_categoricals_when_observed_is_truer8    s    
 !!HIII	 f$u++FFF f$t**EEE)))	
 	

 
B GFFOZZ'*TZ::F">266D
)'&.
)
)4
0C $ $#)#####$ $r   c           	      V   | dk    rt          j        d           t          t          t	          d          t	          d                    t          t	          d          t	          d                    g dd	          }g d
}|                    ddg|          }t          | |          }|sL| dv rHt          j        t          d          5   t          ||           |  d d d            n# 1 swxY w Y   d S  t          ||           | }t          |          }|t          j        u rG|j        |                                                                                                         sJ d S |j        |         |k                                                                    sJ d S )Nr  r/  r  r  r5  r0  r1  r2  r  r3  r  r  rC   r  r  rx   )r  r  r   r   r   rF   r   ru  rv  r  r(  r   r   r  isnullr'   )r  rD   rI   r6  r7  r$   r  r   s           r   ?test_dataframe_groupby_on_2_categoricals_when_observed_is_falser;    s    !!HIII	 f$u++FFF f$t**EEE)))	
 	

 
B GFFOZZ'*XZ>>F">266D *>>>]H
 
 
 	3 	3 ,GFN++T22	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	
)'&.
)
)4
0C<^LH26w'..004466::<<<<<<<(H499;;??AAAAAAAs   C00C47C4c                  p   g dg dg dd} t          |           }t          j        |d         t          j        ddd                    }||d	<   |                    d	d
gddd          }|d                             d          }|                    d          d         }t          j        ||           d S )N)r~   r   r>   rS   r  )rQ   rO   rQ   rO   r  r   r   r   rV   r   r   TFr  r   rD   r0   )	r   r   r   r   r  rF   r   r   r   )rQ   rI   r  r"  r#   r   s         r   3test_series_groupby_categorical_aggregation_getitemr>    s     &6&6&6?S?S?STTA	1B
&EBK2q11
2
2CBwKZZ%(4dUZSSFE]v&&Fzz&!!%(H68,,,,,r   zfunc, expected_valuesc                 :   t          g dg dt          g d          d                              d          }|                    d                              |           }t          d|it          g dd	          
          }t          j        ||           d S )Nr   )r   rS   rS   rT   rT   )r   r   r   r   rS   )idr"  r  r@  r"  r  rD  rz   r[   )r   r   r  rF   r   r   r   r   )r  rH  rI   r#   r   s        r   $test_groupby_agg_categorical_columnsrA  &  s     
!//%oo 11	
 	

 
 ioo  ZZ!!%%d++F	/"%			*I*I*I  H &(+++++r   c                     t          dt          g dg d          i          } t          dddgit          j        ddg                    }|                     g d                              t          j                  }t          j	        ||           |                     g d                                          }t          j	        ||           d S )	Nrd   r  r  r5  rT   rS   r[   r  )
r   r   r   rW  rF   r   r	   r4   r   r   rI   r   r#   s      r   test_groupby_agg_non_numericrD  ;  s    	C___QQQR	S	SB#1vbh1v.>.>???HZZ			""&&v~66F&(+++ZZ			""**,,F&(+++++r   r  c                 h   t          dgt          dgd          j                                        d          }|                    d          d         } t          ||                       }t          dgt          dgd          d|d         j        	          }t          j	        ||           d S )
Ni  rN   r2  r:  ry  rd   re   rz   r%   rZ   r   )
r   r	   r  
as_orderedrF   r  r   r   r   r   )r  rI   
df_groupedr#   r   s        r   <test_groupby_first_returned_categorical_instead_of_dataframerI  F  s     
$fcU*&E&E&E&I&T&T&V&VWW	X	XBC%J&WZ&&((F 	UD6,,,3bgm  H 68,,,,,r   c            	      t   t          j        ddg          } d| j        _        t	          g dt          g dt          |                     d          }t	          dd	d
git          | d                    }|                    ddd          	                                }t          j        ||           d S )NrS   rT   F)rS   rU   rV   rg   r  r5  rW   r   r   g      @rN   rz   r   r   )r   rW  flags	writeabler   r   r   r   rF   r0   r   r   )rJ   rI   r   r#   s       r   test_read_only_category_no_sortrM  U  s    8QFD DJ	ll\\\eDkk!R!R!RSS
 
B sS#J/7GSV7W7W7WXXXHZZ%%Z88==??F&(+++++r   c                     t          g dg dd          } | d                             d          j                            g dd          | d<   t          d	d	d
d	dd
ddd
ddd
d          }|                    dd          }t          g dg dddd          |_        |                     ddgd                                          	                                }t          j        ||           d S )N)smalllargerP  rP  rj  rP  rP  rj  )rE   rd   rd   rE   rd   rE   rd   rE   )r   r   r   r2  )tinyrO  rj  rP  Tr   r   )rd   rE   rS   rU   rT   r   r%   r   )r   r   rZ   r   FrC   )r   r   r  set_categoriesrename_axisr   rm   rF   r8   ro  r   r   rC  s      r   #test_sorted_missing_category_valuesrT  a  sM   		 	 	 <;;	
 	

 
B  	5		
			^^@@@$^OO uI !$$1%%A&&1%%		
 	
 H ##E#88H',,,777  H ZZZ77<<>>FFHHF&(+++++r   c                     t          dg di          } | d                             d          | d<   |                     d          j                                        }t          g dt          g dd          d| d         j                  }t          j	        ||           |                     d          
                    ddi          }|                                }t          j        ||           d S )	Ncol_numrS   rS   rT   rU   r2  col_catr6  rz   rF  r+   )r   r   rF   rX  r+   r	   r   r   r   r   r   to_framer   r  s      r   1test_agg_cython_category_not_implemented_fallbackrZ    s    	I|||,	-	-ByM((44ByMZZ	""*0022F 		IIII...m!	  H 68,,,ZZ	""&&	7';<<F  ""H&(+++++r   c                  x   t          g dg dddt          j        dgg dg dd          } |                     dd	i          } |                     d
dg                              d           }t          j        ddgddggd          }t          ddgddgddgd|          }t          j	        ||           d S )N)rS   rS   rS   rS   r  r  g?g333333?)r   r   r   fee)rd   re   numerical_col
object_colcategorical_colr_  r2  rd   re   c                 N    |                                                                  S ro   )rX  r;   r  s    r   rs   z7test_aggregate_categorical_with_isnan.<locals>.<lambda>  s    27799==?? r   rS   rT   ry  r   r   )r]  r^  r_  r   )
r   r   r   r   rF   r   r   r   r   r   r   s       r   %test_aggregate_categorical_with_isnanra    s    	!34666;;;	
 	

 
B 
%z2	3	3BZZc
##''(B(BCCF"QFQF#3:FFFEVa& !1v
 

   H &(+++++r   c                  p   t          g dg dd          } t          j        g dd          }| d                             |          | d<   d}t	          j        t          |	          5  |                     d
          d                             t                    | d<   d d d            n# 1 swxY w Y   | 
                                }t          g dg dg dd          }|d                             |          |d<   |d                             |          |d<   t	          j        ||           d S )N)rS   rS   rS   rT   rT   rU   )WaitingOnTheWay	Deliveredrc  rd  rc  )
package_idstatus)rc  rd  re  Tr   rg  zusing SeriesGroupBy.maxrx   rf  last_status)re  re  re  rd  rd  rc  )rf  rg  rh  )r   r   CategoricalDtyper   r   r   r   rF   r   r/   r   r   )rI   delivery_status_typer   r#   r   s        r   test_categorical_transformrk    s   	,,,  
	
 
	

 
B .777   h<&&';<<BxL
#C		#M	=	=	= N NJJ|44X>HHMM=N N N N N N N N N N N N N N N WWYYF,,,    	
 	
 H, "(+223GHHHX '}5<<=QRRH]&(+++++s   *7B--B14B1c                 d   t          g d          }g d}t          |||d          }t          ddg          }t          j        ||gddg          }t	          dt
          j        t
          j        dg|d	
          t	          dt
          j        t
          j        dg|d	
          d}||          }|r1|                                                    t
          j	                  }|
                    ddg|          d	         }	 t          |	|                       }
t          j        |
|           d S N)r   r   rS   rS   )r   rS   rS   r   r  r   rS   r   rN   r   rO   rz   )r+   r.   rC   )r   r   r   r   r	   r   r   rt  r   r9  rF   r  r   r   )r  rD   r  r	  rI   r   r   expected_dictr   srs_grpr#   s              r   Ftest_series_groupby_first_on_categorical_col_grouped_on_2_categoricalsrp    s.   
 lll
#
#C
,,C	3S11	2	2B1vD

!4,sCj
A
A
ACBFBFA.#>>>26261-s=== M
 T"H 6??$$++BH55jj#shj77<G#WWd##%%F68,,,,,r   c                 |   t          g d          }g d}t          |||d          }t          ddg          }t          j        ||gddg          }t	          dt
          j        t
          j        dg|d	
          t	          dt
          j        t
          j        dg|d	
          d}||                                          }|r1|                                	                    t
          j
                  }|                    ddg|          }	 t          |	|                       }
t          j        |
|           d S rm  )r   r   r   r   r	   r   r   rY  rt  r   r9  rF   r  r   r   )r  rD   r  r	  rI   r   r   rn  r   r7  r#   s              r   Btest_df_groupby_first_on_categorical_col_grouped_on_2_categoricalsrr    s5   
 lll
#
#C
,,C	3S11	2	2B1vD

!4,sCj
A
A
ACBFBFA.#>>>26261-s=== M
 T"++--H 6??$$++BH55ZZc
XZ66F"WVT""$$F&(+++++r   c                     t          t          g dg d          t          d          d          } |                     ddd          }|j        }t          j        d	d
gd          t          j        dgd          t          j        g d          d}|                                |                                k    sJ |                                D ]#}t          j	        ||         ||                    $d S )N)rN   rN   r   r  r5  rU   )r   r  r   Fr   r   rS   intpr:  rT   )rN   r   rO   )
r   r   r   rF   indicesr   rW  rG  r   r  )rI   r   r#   r   r   s        r   2test_groupby_categorical_indices_unused_categoriesrv  )  s
   	???KKK88	
 	

 
B jjUUj;;G_FXq!fF+++Xqc(((Xb''' H
 ;;==HMMOO++++{{}} @ @
#F3K#????@ @r   c                 X   t          dg di          }|d                             d          |d<    t          |                    d          d         |                       }t	          t          g d          dt          g dd                    }t          j        ||           d S )Nr   r6  r2  rN   rz   )rZ   r%   )	r   r   r  rF   r	   r   r   r   r   )r  rI   r#   r   s       r   1test_groupby_last_first_preserve_categoricaldtyperx  =  s     
C#	$	$BgnnZ((BsG0WRZZ__S)40022FIIISiiic0J0J0J  H 8V,,,,,r   c            
         t          ddgddgddgd          } |                     ddd          } |                     d	d
gd                                          d         }t	          ddgt          j        t          ddgd	          t          ddgd
          g          d          }t          j	        ||           d S )NrS   rT   r~   r  r  r2  rW   r:  r   rN   TrC   rO   rz   r   )
r   r   rF   r4   r	   r   r   r   r   r   r  s      r   )test_groupby_categorical_observed_nuniquerz  I  s    	!Qq!fB8<<	=	=B	z
;;	<	<BZZc
TZ22::<<SAF	
A$q!f3///1A1a&s1S1S1ST
 
   H 68,,,,,r   c            	         t          j        ddgd          } t          ddgddgddggddg	                              d| i          }|                    d          d                                         }t          ddgt          ddgd
          dt          j        ddgd                    }t          j	        ||           d S )NrO  bigTr   rS   rT   grpdescriptionrl   rz   rF  )
r   ri  r   r   rF   r/   r	   r   r   r   )r   rI   r#   r   s       r   ,test_groupby_categorical_aggregate_functionsr  X  s    GU+;TJJJE	
W5zAw<05-:P
 
 
fmU#$$  ZZ}-1133F	QF'''!gu-=tLLL	  H 68,,,,,r   c                    t          ddgg d          }t          t          ddgg d          ddgd          }|                    d| |	          }|                                }| rt          d
ddgi|          }n)t	          g dg d          }t          d
g di|          }d|j        _        t          j        ||           d S )NrS   rT   r6  r5  rU   r>   )rr   ra   rr   )rD   rt  ra   r[   )rU   r>   r   )	r   r   rF   r;   r   r%   rZ   r   r   )rD   rt  r  rI   r   r#   r   r%   s           r   test_groupby_categorical_dropnar  j  s    
q!f
3
3
3C	aV			BBB!QPP	Q	QB	C(6	:	:BVVXXF <cAq6]#666 III66c999-U;;;HN&(+++++r   
index_kind)r   singlemultic                    |dk    r8|s6d}|                      t          j                            |                     n|dk    r|st          j        d           t          t          g dg d|          t          d	          d
          }|dk    rdg}	nI|dk    rdg}	|                    |	          }n*|dk    r$ddg}	|d         |d<   |                    |	          }t          ||          }
|
                    |	|||          }|sL|dv rHt          j        t          d          5   t          ||          |
  d d d            n# 1 swxY w Y   d S  t          ||          |
 }|r |j                            d          j        }n|d         j        j        }t%          g d          }t'          j        ||           |dk    r6|j                            d          j        }t'          j        ||           d S d S )Nr*   zDGH#49950 - corrwith with as_index=False may not have grouping columnr   r   /Result doesn't have categories, nothing to testrT   rS   rT   rU   rS   r>   rU   rT   r   r>   rW   r   r  r  r?  r=  r  r  rx   )r  r  r  r  r  r   r   r   r  r   rF   ru  rv  r  r%   r   r   r  r   r   r   )r  r  r   rD   r  r  r   r   rI   rG  r$   r   	op_resultr#   r   s                  r   test_category_order_reducerr  {  s    ##H#TFK--S-99::::	w		x	LMMMM	\\\lllGTTTq	
 	

 
B Wu	x		u\\$	w		T{c74\\$">266D	D8$	J	JB *>>>]H
 
 
 	/ 	/ (GB''..	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	+N++T2I /11#66A3#.\\\""H&(+++W11$77B
fh///// s   ,EEEr  r  c                    t          t          g dg d|          t          d          d          }|dk    rdg}|                    |          }n*|dk    r$dd	g}|d         |d	<   |                    |          }t	          ||          }|                    || ||
          }	|dk    rt          nd }
d}t          j        |
|          5   t          |	|          | }d d d            n# 1 swxY w Y   |j
                            d          j        }t          g d          }t          j        ||           |dk    r6|j
                            d	          j        }t          j        ||           d S d S )Nr  r  r   r>   rW   r  r   r  r?  r=  r  z%DataFrameGroupBy.fillna is deprecatedrx   )r   r   r   r  r   rF   r   r   r   r  r%   r   r   r   r   )r  r   rD   transformation_funcr  r   rI   rG  r$   r   warnr   r  r#   r   s                  r   test_category_order_transformerr    s    
\\\lllGTTTq	
 	

 
B Xu\\$	w		T{c74\\$"#6;;D	D8$	J	JB/8;;==D
1C		#D	4	4	4 < <4GB 344d;	< < < < < < < < < < < < < < <_--c22=F\\\""H&(+++W11$77B
fh///// s   C--C14C1methodheadtailc                    t          t          g dg d|          t          d          d          }|dk    rdg}nI|dk    rdg}|                    |          }n*|d	k    r$dd
g}|d         |d
<   |                    |          }|                    || ||          } t          ||                      }	|dk    r|	d         j        j        }
n|	j        	                    d          j        }
t          g d          }t          j        |
|           |d	k    r6|	j        	                    d
          j        }
t          j        |
|           d S d S )Nr  r  r   r>   rW   r   r   r  r  r?  r=  )r   r   r   r  rF   r  r  r   r%   r   r   r   r   )r  r   rD   r  r  r   rI   rG  r   r  r#   r   s               r   test_category_order_head_tailr    sy    
\\\lllGTTTq	
 	

 
B Wu	x		u\\$	w		T{c74\\$	D8$	J	JB#F##%%IW3#.11#66A\\\""H&(+++W11$77B
fh///// r   )rH   r   r   c                    |dk    r|dk    s| s|dk    rt          j        d           t          t          g dg d|          t	          d          d          }|dk    rd	g}nI|d
k    rd	g}|                    |          }n*|dk    r$d	dg}|d	         |d<   |                    |          }|                    || ||          }|dk    r|dk    rt          nd }	d}
t          j	        |	|
          5   t          ||          d           }d d d            n# 1 swxY w Y   |dk    s| s|dk    r|d	         j        j        }n|j                            d	          j        }t          g d          }t          j        ||           |dk    r6|j                            d          j        }t          j        ||           d S d S )Nr   r   z(No categories in result, nothing to testr  r  r   r>   rW   r   r  r  r?  r=  rH   rw   rx   c                 .    |                      d          S )NTrh   )r;   rq   s    r   rs   z+test_category_order_apply.<locals>.<lambda>  s    !%%T%2J2J r   )r  r  r   r   r   r  rF   r   r   r   r  r  r   r%   r   r   r   )r  r   rD   r  r  r   rI   rG  r   r  r   r  r#   r   s                 r   test_category_order_applyr    se   
 	+*"7"7 #8#w..>???	\\\lllGTTTq	
 	

 
B Wu	x		u\\$	w		T{c74\\$	D8$	J	JB"g--*2G2G==TD
CC		#D	4	4	4 L L'GB''(J(JKK	L L L L L L L L L L L L L L L+X:3H3H3#.11#66A\\\""H&(+++W11$77B
fh///// s   5DD #D c                 |   |dk    r| st          j        d           t          j        ddd          }t	          g d||          }t          |t          d          d	          }|dk    rd
g}nI|dk    rd
g}|                    |          }n*|dk    r$d
dg}|d
         |d<   |                    |          }|                    || |d          }|	                                }	|rg dng d}
t          |
|j        |d
          }| rIt          d|
i          }|dk    r*t          j        t          ||d                    |_        n[||_        nS|dk    r.t          t          |          t          |          |
d          }nt          t          |          |
d	          }t!          j        |	|           d S )Nr   r  r   i'  r`  r  r   r>   rW   r   r  r  r?  Tr=  )rU   rT   rS   )rT   rS   rU   )r   r   rZ   rN   )r   r?  )r   r?  rN   )r  r  r   r   r   r   r   r  rF   r;   r   r   r   
from_framer%   r	   r   r   )r  r   r  r   r   grouperrI   rG  r   r#   r   r%   r   s                r   test_many_categoriesr    s    WXLMMMM4R((J,,,:wOOOG	uQxx00	1	1BWu	x		u\\$	w		T{c74\\$	D8$	F	FBVVXXF +9999)))D+W3  E  	>c4[))  '295PU=V=V3W3WXXHNN"HNN	w		6%==uDQQRR6%==t<<==&(+++++r   cat_columnsrG  c                 J   t          g dg dd          }||                              d          || <   d}t          |           t          |          z  rt          nd }t	          j        ||          5  |                    |           d d d            d S # 1 swxY w Y   d S )NrW  )r>   rV   r   rg   rW   r2  z+The default of observed=False is deprecatedrx   )r   r   setr   r   r   rF   )r  rG  rI   r   klasss        r   test_groupby_default_deprr  D  s     
LLL99	:	:Bo,,Z88B{O
7C --D		9CMMtE		#E	5	5	5  


4                 s   5BBBa1c                 d   |r2|dk    r,t          t          d          rJ t          j        d           n|dk    r6d}|                     t          j                            |                     nT|dk    rN|sLt          |          dk    r9|s7|s5d}|                     t          j                            |                     t          g dg d	g d
d          }|	                    ddd          }d|vr|
                    d          }|                    |||          }|r|d         }t          ||          }	|sP|dv rL|ddgk    rDt          j        t          d          5   |j        |gg|	R   d d d            n# 1 swxY w Y   d S  |j        |gg|	R  }
 t!          ||          |	 }|r|s|dk    r|                    |          }|s7t%          j        d |j        d d         D             d|fgz             |_        n|s||gz   |_        t+          j        |
|           d S )Nr*   z*corrwith not implemented for SeriesGroupByz1GH#32293: attempts to call SeriesGroupBy.corrwithr   r4   rS   zGH#52848 - raises a ValueError)r   r   rS   )rT   rU   rU   r>  )r  r?  rN   r2  )r  r?  r?  rl   r  rN   r  r  r  rx   r8   c                     g | ]}|d fS ) rp   )r  inds     r   r  z!test_agg_list.<locals>.<listcomp>{  s    8883c2Y888r   r`  )r  r   r  r  r  r  r  r   r   r   rE  rF   r   ru  rv  r   r  rY  r   from_tuplesrm   r   rF  )r  r  rD   r  r@  rG  r   rI   r   r$   r#   r   s               r   test_agg_listr  P  s     ;~33=*55555@AAAA	:	%	%AFK--S-99::::)## 	$IINN   /FK--S-99:::	)))999999EE	F	FB	*J77	8	8B4WWTW""	th	B	BB W">266D *>>>4DRV<CWCW]H
 
 
 	, 	, BFN#+d++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	RV^$,t,,,F*wr>**D1H 5[ 5Nf$<$<$$^44 3%188("23B3"7888S.<Q;RR
 
  3>"22OFH%%%%%s   +FFF)ir   numpyr   r  pandasr   r   r   r   r   r   r	   r
   pandas._testing_testingr   pandas.api.typingr   pandas.tests.groupbyr   r   r&   r(  r  filterwarningsrK   r   r   r   parametrizer   r$  r,  r3  r<  rJ  rL  rO  rS  rZ  r^  rd  rg  rr  rx  r   renamer}  r  r  r  r  r  r  r  r  r  r  r  r  r   r  NaTr  fixturer  r  r  r   r  r  r   r  r  r   r-  r8  r;  r>  r4   r)   rA  rD  rI  rM  rT  rZ  ra  rk  r{   boolrp  rr  rv  rx  rz  r  r  r  r  r  r  r  r  r  rp   r   r   <module>r     sS                                         + + + + + + 8 8 8 8 8 8 DF6 E E E E"1 
261 
261 Q1 1 RV1 bf1 bf1 BF1 
261  BF!1" bf#1$ 
26%1& 
26'1( q)1* BF+1, -1. 
26/10 F6691 1 1 -@ UVV( ( WV(d d dN, , ,<- - -, T5M22!- !- 32!-H UVVo, o, WVo,d, , ,(E E E*+ + +* 2	jjj**9993???@#J'''iiic222EE)))4D4DE	
 $K(((  555  555	
 & u66& & 76' (&D+ + +*- - -, , ,( T5M22dE]33$//  0/ 43 32@( ( (V, , ,2   - - -&$ $ $ v 
a		!Qq!f556 
a			 	 !4!4	5	5aS1v7N7NO	a		!Qq!f556 - - -90 90 90x  <1 1 1B 	8W%&	(G$%	7#$	7#$	 - - -&"- "- "-J- - -% % %, T5M22, , 32,D T5M22/, /, 32/,d- - -8- - -0, , ,2  F,j,VIIIZ888)))DSRUJ   YY  		
 I			<<<""  		
 2& &3 2& bfbf'=>># # ?>#   0 ug&677- - 87-  ug&677eT]33- - 43 87-0  "J"E5'A+!3:CPPPETTT(   
 E5%.1,--
 
 %$$	
  #J#$$eU^UCCC$$%<%<%<eLLLE5%.))
 '&&   1aArvrvq!D	
 #J#$$eU^UCCC$$%<%<%<eLLLE5%.))
 '&&   1aArvrvq!D	
9(+ +X- -Y+ +X-- - - 999			!;<<, , =<,, , ,"
 
 
#* #* #*L17 17 17h$ $ $4 eT]33'B 'B 43'BT UVV	- 	- WV	- niii 6<";< , ,	 ,", , , '6!233- - 43-	, 	, 	,*, *, *,Z, , ,,, , ,65, 5, 5,p '6!233-
-- - - 43-0 '6!233,
,, , , 43,0@ @ @( '6!233- - 43-- - -- - -$, , ," 'C'C'CDDT5M22-0 -0 32 ED-0` '':;;T5M220 0 32 <;0@ 'C'C'CDDFF#344T5M220 0 32 54 ED0B 'C'C'CDD#@#@#@AAT5M22#0 #0 32 BA ED#0L 'C'C'CDD$, $, ED$,N cC:(>??#sS#J!788  98 @? u664&4,!788.& .& 98 76.& .& .&r   