§
    Ð! hZ•  ã                  ó,  — d Z ddlmZ ddlZddlZddlmZmZmZm	Z	 ddl
ZddlmZmZ ddlmc mZ ddl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mZ dd
l m!Z!m"Z"m#Z#m$Z$m%Z% ddl&m'Z'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: erddl;m<Z<m=Z=m>Z> ddl?m@Z@ d1d„ZAd„ ZB G d„ d¦  «        ZC G d„ d¦  «        ZD G d„ deD¦  «        ZEd2d „ZF G d!„ d"ee         ¦  «        ZG G d#„ d$eG¦  «        ZH G d%„ d&eG¦  «        ZIdd'œd3d0„ZJdS )4a  
Provide classes to perform the groupby aggregate operations.

These are not exposed to the user and provide implementations of the grouping
operations, primarily in cython. These classes (BaseGrouper and BinGrouper)
are contained *in* the SeriesGroupBy and DataFrameGroupBy objects.
é    )ÚannotationsN)ÚTYPE_CHECKINGÚCallableÚGenericÚfinal)ÚNaTÚlib)Ú	ArrayLikeÚAxisIntÚNDFrameTÚShapeÚnpt©ÚAbstractMethodError)Úcache_readonly)Úmaybe_cast_pointwise_resultÚmaybe_downcast_to_dtype)Úensure_float64Úensure_int64Úensure_platform_intÚensure_uint64Úis_1d_only_ea_dtype)ÚisnaÚ
maybe_fill)Ú	DataFrame)Úgrouper)ÚCategoricalIndexÚIndexÚ
MultiIndexÚensure_index)ÚSeries)Úcompress_group_indexÚdecons_obs_group_idsÚget_flattened_listÚget_group_indexÚget_group_index_sorterÚget_indexer_dict)ÚHashableÚIteratorÚSequence)ÚNDFrameÚreturnÚNonec                ór   — t          | t          j        ¦  «        r|t          k    rt	          d¦  «        ‚d S d S )NzMust produce aggregated value)Ú
isinstanceÚnpÚndarrayÚobjectÚ
ValueError)ÚobjÚdtypes     úQc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\pandas/core/groupby/ops.pyÚcheck_result_arrayr7   P   sA   € õ �#•r”zÑ"Ô"ð >Ø•FŠ?ˆ?õ Ð<Ñ=Ô=Ð=ð	>ð >Øˆ?ó    c                ó€   — t          | d¦  «        r-| j        } | j        dk    rt          | ¦  «        dk    r| d         } | S )zb
    Extract the result object, it might be a 0-dim ndarray
    or a len-1 0-dim, or a scalar
    Ú_valuesé   r   )Úhasattrr:   ÚndimÚlen)Úress    r6   Úextract_resultr@   [   sD   € õ
 ˆs�IÑÔð àŒkˆØŒ8�qŠ=ˆ=�S ™XœX¨š]˜]à�a”&ˆCØ€Jr8   c                  ó˜  — e Zd ZU dZ eg d¢¦  «        ZdQd
„Zi d ej        e	j
        d¬¦  «        “d ej        e	j
        d¬¦  «        “dd“dd“d ej        e	j        d¬¦  «        “d ej        e	j        d¬¦  «        “dd“dd“dd“dd“dd“d ej        e	j        d¬¦  «        “d  ej        e	j        d ¬¦  «        “d!d"“d#d$“d%d&“d'd(“d)d*d+d,d-d.œd/œZd0ed1<   d'd2iZedRd3„¦   «         Zeej        dSd7„¦   «         ¦   «         ZdTd:„ZdUd>„ZdVd?„ZdVd@„ZedAdAdBœdWdH„¦   «         ZedWdI„¦   «         ZedXdM„¦   «         ZedNdOœdYdP„¦   «         ZdAS )ZÚWrappedCythonOpaB  
    Dispatch logic for functions defined in _libs.groupby

    Parameters
    ----------
    kind: str
        Whether the operation is an aggregate or transform.
    how: str
        Operation name, e.g. "mean".
    has_dropped_na: bool
        True precisely when dropna=True and the grouper contains a null value.
    )ÚanyÚallÚrankÚcountÚsizeÚidxminÚidxmaxÚkindÚstrÚhowÚhas_dropped_naÚboolr,   r-   c                ó0   — || _         || _        || _        d S ©N©rJ   rL   rM   )ÚselfrJ   rL   rM   s       r6   Ú__init__zWrappedCythonOp.__init__}   s   € ØˆŒ	ØˆŒØ,ˆÔÐÐr8   rC   )Úval_testrD   ÚsumÚ	group_sumÚprodÚ
group_prodrH   ©ÚnamerI   ÚminÚ	group_minÚmaxÚ	group_maxÚmeanÚ
group_meanÚmedianÚgroup_median_float64ÚvarÚ	group_varÚstdÚsemÚskewÚ
group_skewÚfirstÚ	group_nthÚlastÚ
group_lastÚohlcÚ
group_ohlcÚgroup_cumprodÚgroup_cumsumÚgroup_cumminÚgroup_cummaxÚ
group_rank)ÚcumprodÚcumsumÚcumminÚcummaxrE   )Ú	aggregateÚ	transformzdict[str, dict]Ú_CYTHON_FUNCTIONSé   c                ó(   — || j         d         v rdS dS )Nrx   ry   )rz   )ÚclsrL   s     r6   Úget_kind_from_howz!WrappedCythonOp.get_kind_from_how¡   s   € à�#Ô'¨Ô4Ð4Ð4Ø�;Øˆ{r8   r5   únp.dtypeÚ
is_numericc                óv  — |j         }| j        |         |         }t          |¦  «        r|}nt          t          |¦  «        }|r|S |t          j        t          ¦  «        k    rH|dv rt          d|› d|› d�¦  «        ‚|dv r|S |dk    rnd|j	        vrt          d|› d|› d�¦  «        ‚|S t          d|¦  «        ‚)	N)ra   rt   z2function is not implemented for this dtype: [how->z,dtype->ú])re   rf   rH   rI   rg   r2   zPThis should not be reached. Please report a bug at github.com/pandas-dev/pandas/)
rZ   rz   ÚcallableÚgetattrÚ
libgroupbyr0   r5   r2   ÚNotImplementedErrorÚ__signatures__)r}   rJ   rL   r5   r€   Ú	dtype_strÚftypeÚfs           r6   Ú_get_cython_functionz$WrappedCythonOp._get_cython_function©   s+  € ð
 ”Jˆ	ØÔ% dÔ+¨CÔ0ˆõ �E‰?Œ?ð 	+ØˆAˆAå�
 EÑ*Ô*ˆAØð 	ØˆHØ•b”h�vÑ&Ô&Ò&Ð&ØÐ+Ð+Ð+å)ð7Ø ð7ð 7Ø*3ð7ð 7ð 7ñô ð ð Ð:Ð:Ð:à�Ø˜’�àØ Ô!1Ð1Ð1å)ð7Ø ð7ð 7Ø*3ð7ð 7ð 7ñô ð ð ˆHå%ð0àñô ð r8   Úvaluesú
np.ndarrayc                ó
  — | j         }|dv rt          |¦  «        }ng|j        j        dv rY|dv s| j        dk    r| j        rt          |¦  «        }n3|dv r/|j        j        dk    rt          |¦  «        }nt          |¦  «        }|S )zÖ
        Cast numeric dtypes to float64 for functions that only support that.

        Parameters
        ----------
        values : np.ndarray

        Returns
        -------
        values : np.ndarray
        )ra   re   rf   rg   Úiu)rc   r_   ry   )rU   rm   rW   ru   rt   Úi)rL   r   r5   rJ   rM   r   r   )rR   rŒ   rL   s      r6   Ú_get_cython_valsz WrappedCythonOp._get_cython_valsÔ   s¦   € ð ŒhˆàÐ2Ð2Ð2õ $ FÑ+Ô+ˆFˆFàŒ\Ô $Ð&Ð&Ø�oÐ%Ð%Ø”	˜[Ò(Ð(¨TÔ-@Ð(õ (¨Ñ/Ô/��àÐDÐDÐDà”<Ô$¨Ò+Ð+Ý)¨&Ñ1Ô1�F�Få*¨6Ñ2Ô2�Fàˆr8   ÚngroupsÚintr   c                óÚ   — | j         }| j        }| j                             |d¦  «        }|dk    r||f}n6|dk    rt	          d¦  «        ‚|dk    r|j        }n|f|j        dd …         z   }|S )Nr;   rm   z<arity of more than 1 is not supported for the 'how' argumentry   )rL   rJ   Ú_cython_arityÚgetr†   Úshape)rR   r’   rŒ   rL   rJ   ÚarityÚ	out_shapes          r6   Ú_get_output_shapez!WrappedCythonOp._get_output_shapeù   s�   € ØŒhˆØŒyˆàÔ"×&Ò& s¨AÑ.Ô.ˆð �&Š=ˆ=Ø  %Ð(ˆIˆIØ�QŠYˆYÝ%ØNñô ð ð �[Ò Ð ØœˆIˆIà ˜
 V¤\°!°"°"Ô%5Ñ5ˆIØÐr8   c                ó�   — | j         }|dk    rd}n#|dv rd}n|j        dv r|j        › |j        › �}nd}t          j        |¦  «        S )NrE   Úfloat64©rH   rI   ÚintpÚiufcbr2   )rL   rJ   Úitemsizer0   r5   )rR   r5   rL   Ú	out_dtypes       r6   Ú_get_out_dtypezWrappedCythonOp._get_out_dtype  sf   € ØŒhˆà�&Š=ˆ=Ø!ˆIˆIØÐ(Ð(Ð(ð ˆIˆIàŒz˜WÐ$Ð$Ø$œzÐ;¨5¬>Ð;Ð;�	�	à$�	ÝŒx˜	Ñ"Ô"Ð"r8   c                ó   — | j         }|dv r<|t          j        t          ¦  «        k    rt          j        t          j        ¦  «        S n6|dv r2|j        dv r|S |j        dv rt          j        t          j        ¦  «        S |S )a  
        Get the desired dtype of a result based on the
        input dtype and how it was computed.

        Parameters
        ----------
        dtype : np.dtype

        Returns
        -------
        np.dtype
            The desired dtype of the result.
        )rU   ru   rU   rW   rt   )r_   ra   rc   re   rf   ÚfcÚiub)rL   r0   r5   rN   Úint64rJ   rœ   )rR   r5   rL   s      r6   Ú_get_result_dtypez!WrappedCythonOp._get_result_dtype  sƒ   € ð ŒhˆàÐ=Ð=Ð=Ø�œ¥™œÒ&Ð&Ý”x¥¤Ñ)Ô)Ð)ð 'àÐ;Ð;Ð;ØŒz˜TÐ!Ð!Ø�Ø”˜uÐ$Ð$Ý”x¥¤
Ñ+Ô+Ð+Øˆr8   N)ÚmaskÚresult_maskÚ	min_countÚcomp_idsr¨   únpt.NDArray[np.bool_] | Noner©   c          	     óø   — |j         dk    r\|d d d …f         }|�|d d d …f         }|�|d d d …f         } | j        |f|||||dœ|¤Ž}	|	j        d         dk    r|	d         S |	j        S  | j        |f|||||dœ|¤ŽS )Nr;   )rª   r’   r«   r¨   r©   r   )r=   Ú_call_cython_opr—   ÚT)
rR   rŒ   rª   r’   r«   r¨   r©   ÚkwargsÚvalues2dr?   s
             r6   Ú_cython_op_ndim_compatz&WrappedCythonOp._cython_op_ndim_compat6  sí   € ð Œ;˜!ÒÐà˜d A A A˜g”ˆHØÐØ˜D ! ! !˜G”}�ØÐ&Ø)¨$°°°¨'Ô2�Ø&�$Ô&Øðà#ØØ!ØØ'ðð ð ðð ˆCð Œy˜Œ|˜qÒ Ð Ø˜1”v�ð ”5ˆLà#ˆtÔ#Øð
àØØØØ#ð
ð 
ð ð
ð 
ð 	
r8   c               óf  — |}|j         }	|	j        dv }
|	j        dv }|r|                     d¦  «        }d}
n |	j        dk    r|                     d¦  «        }|j         dk    r|                     t          j        ¦  «        }| j        dv rŒ|€t          |¦  «        }|	t          k    r5|d	         r-| 	                    ¦   «         r| 
                    ¦   «         }d||<   |                     t          d
¬¦  «                             t          j        ¦  «        }d}
|j        }|�|j        }|�|j        }|                      ||¦  «        }|                      | j        | j        |j         |
¦  «        }|                      |¦  «        }|                      |j         ¦  «        }t%          t	          j        ||¬¦  «        ¦  «        }| j        dk    rìt	          j        |t          j        ¬¦  «        }| j        dv r |d!||||||||dœ|¤Ž nÐ| j        dv r| j        dv r||d<    |||||f|||dœ|¤Ž n¨| j        dv r+ |d!|||||dœ|¤Ž |                     t          d
¬¦  «        }nt| j        dv r5 |d!||||||dœ|¤Ž |	t          k    r|                     t          ¦  «        }n6t-          | j        › d�¦  «        ‚| j        dk    r||d<    |d!||||||dœ|¤Ž | j        dk    r‘| j        dvrˆ|j         j        dv rz|sxt/          | j        dv rdnd|¦  «        }||k     }| 	                    ¦   «         rC|�||                              ¦   «         sJ ‚n$|                     d ¦  «        }t          j        ||<   |j        }| j        | j        vr+|                      |j         ¦  «        }t9          ||¦  «        }n|}|S )"NrŸ   ÚmMr¦   TÚbÚuint8Úfloat16)rC   rD   ÚskipnaF)Úcopy©r5   rx   )rH   rI   r[   r]   r_   rk   ri   rU   )ÚoutÚcountsrŒ   Úlabelsrª   r¨   r©   Úis_datetimelike)rf   re   rc   rm   rW   ra   )re   rf   r¾   )rª   r¨   r©   )r»   rŒ   r½   r¨   r©   )rg   )r»   r¼   rŒ   r½   r¨   r©   z is not implementedrE   r©   )r»   rŒ   r½   r’   r¾   r¨   r�   r�   )rU   rW   r   r;   rœ   © )r5   rJ   ÚviewÚastyper0   Úfloat32rL   r   r2   rC   r¹   rN   Úint8r¯   rš   r‹   r‘   r¢   r   ÚemptyÚzerosr¦   r†   r]   rD   ÚnanÚcast_blocklistr§   r   )rR   rŒ   rª   r’   r«   r¨   r©   r°   Úorig_valuesr5   r€   r¾   r™   Úfuncr¡   Úresultr¼   ÚcutoffÚempty_groupsÚ	res_dtypeÚ	op_results                        r6   r®   zWrappedCythonOp._call_cython_opb  s¼  € ð ˆà”ˆØ”Z 7Ð*ˆ
àœ*¨Ð,ˆàð 	*Ø—[’[ Ñ)Ô)ˆFØˆJˆJØŒZ˜3ÒÐØ—[’[ Ñ)Ô)ˆFØŒ<˜9Ò$Ð$Ø—]’]¥2¤:Ñ.Ô.ˆFàŒ8�~Ð%Ð%Øˆ|Ý˜F‘|”|�Ø�ŠˆØ˜(Ô#ð ,à—x’x‘z”zð ,à!'§¢¡¤˜Ø'+˜˜t™Ø—]’]¥4¨e�]Ñ4Ô4×9Ò9½"¼'ÑBÔBˆFØˆJà”ˆØÐØ”6ˆDØÐ&Ø)œm�à×*Ò*¨7°FÑ;Ô;ˆ	Ø×(Ò(¨¬°D´H¸f¼lÈJÑWÔWˆØ×&Ò& vÑ.Ô.ˆØ×'Ò'¨¬Ñ5Ô5ˆ	å�BœH Y°iÐ@Ñ@Ô@ÑAÔAˆØŒ9˜Ò#Ð#Ý”X˜g­R¬XÐ6Ñ6Ô6ˆFØŒxð 	ð 	ð 	ð �ð 
ØØ!Ø!Ø#Ø'ØØ +Ø$3ð
ð 
ð ð
ð 
ð 
ð 
ð ”ÐLÐLÐLØ”8˜~Ð-Ð-Ø0?�FÐ,Ñ-Ø�ØØØØð		ð
 (ØØ +ð	ð 	ð ð	ð 	ð 	ð 	ð ”˜^Ð+Ð+Ø�ð ØØ!Ø#ØØ +ðð ð ðð ð ð  Ÿš¥t°%˜Ñ8Ô8��Ø”˜XÐ%Ð%Ø�ð ØØ!Ø!Ø#ØØ +ðð ð ðð ð ð �F’?�?Ø#Ÿ]š]­6Ñ2Ô2�Føõ *¨T¬XÐ*JÐ*JÐ*JÑKÔKÐKð Œx˜6Ò!Ð!à(3��}Ñ%ØˆDð ØØØØØ /Øðð ð ðð ð ð Œ9˜Ò#Ð#¨¬Ð8LÐ(LÐ(Lð Œ|Ô  DÐ(Ð(°Ð(å $¤(¨oÐ"=Ð"=˜Q˜QÀ1ÀiÑPÔP�Ø%¨š�Ø×#Ò#Ñ%Ô%ð 6Ø"Ð.Ø*¨<Ô8×<Ò<Ñ>Ô>Ð>Ð>Ð>Ð>ð "(§¢¨yÑ!9Ô!9˜Ý/1¬v˜˜|Ñ,à”ˆàŒ8˜4Ô.Ð.Ð.ð
 ×.Ò.¨{Ô/@ÑAÔAˆIÝ/°¸	ÑBÔBˆIˆIàˆIàÐr8   Úaxisr   r
   c                ó°   — |j         dk    rt          d¦  «        ‚|j         dk    r|dk    s
J |¦   «         ‚d S t          |j        ¦  «        s|dk    sJ ‚d S d S )Né   z.number of dimensions is currently limited to 2r;   r   )r=   r†   r   r5   )rR   rÏ   rŒ   s      r6   Ú_validate_axiszWrappedCythonOp._validate_axis   sr   € àŒ;˜Š?ˆ?Ý%Ð&VÑWÔWÐWØŒ;˜!ÒÐØ˜1’9�9�9˜d‘9”9�9�9�9Ý$ V¤\Ñ2Ô2ð 	ð ˜1’9�9�9�9ð	ð 	ð �9r8   éÿÿÿÿ)rª   c          	     óÂ   — |                       ||¦  «         t          |t          j        ¦  «        s |j        d| j        | j        |||dœ|¤ŽS  | j        |f|||ddœ|¤ŽS )zW
        Call our cython function, with appropriate pre- and post- processing.
        )rL   rM   rª   r’   ÚidsN)rª   r’   r«   r¨   r¿   )rÒ   r/   r0   r1   Ú_groupby_oprL   rM   r²   )rR   rŒ   rÏ   rª   r«   r’   r°   s          r6   Úcython_operationz WrappedCythonOp.cython_operation  s©   € ð 	×Ò˜D &Ñ)Ô)Ð)å˜&¥"¤*Ñ-Ô-ð 		à%�6Ô%ð Ø”HØ#Ô2Ø#ØØðð ð ðð ð ð +ˆtÔ*Øð
àØØØð
ð 
ð ð
ð 
ð 	
r8   )rJ   rK   rL   rK   rM   rN   r,   r-   )rL   rK   r,   rK   )rJ   rK   rL   rK   r5   r   r€   rN   )rŒ   r�   r,   r�   )r’   r“   rŒ   r�   r,   r   )r5   r   r,   r   )rŒ   r�   rª   r“   r’   r“   r«   r�   r¨   r¬   r©   r¬   r,   r�   )rÏ   r   rŒ   r
   r,   r-   )rŒ   r
   rÏ   r   rª   r“   r«   r�   r’   r“   r,   r
   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	frozensetrÇ   rS   Ú	functoolsÚpartialr…   Úgroup_any_allÚgroup_idxmin_idxmaxrd   rz   Ú__annotations__r•   Úclassmethodr~   Úcacher‹   r‘   rš   r¢   r§   r   r²   r®   rÒ   r×   r¿   r8   r6   rB   rB   i   s,  € € € € € € ðð ð �YØCÐCÐCñô €Nð-ð -ð -ð -ð
ØÐ$�9Ô$ ZÔ%=ÈÐNÑNÔNð
àÐ$�9Ô$ ZÔ%=ÈÐNÑNÔNð
ð �;ð
ð �Lð	
ð
 Ð'�iÔ'¨
Ô(FÈXÐVÑVÔVð
ð Ð'�iÔ'¨
Ô(FÈXÐVÑVÔVð
ð �;ð
ð �;ð
ð �Lð
ð Ð,ð
ð �;ð
ð Ð$�9Ô$ ZÔ%9ÀÐFÑFÔFð
ð Ð$�9Ô$ ZÔ%9ÀÐFÑFÔFð
ð �Lð
ð �[ð
ð  �Lð!
ð" �Lð#
ð( 'Ø$Ø$Ø$Ø ð
ð 
ð)*ð *Ðð ð ð ñ ð: ˜Q�K€Màðð ð ñ „[ðð Ø„_ð'ð 'ð 'ñ „_ñ „[ð'ðR#ð #ð #ð #ðJð ð ð ð&#ð #ð #ð #ð ð ð ð ð4 ð .2Ø48ð)
ð )
ð )
ð )
ð )
ñ „Uð)
ðV ð[ð [ð [ñ „Uð[ðz ðð ð ñ „Uðð ð ð!
ð !
ð !
ð !
ð !
ñ „Uð!
ð !
ð !
r8   rB   c                  óD  — e Zd ZU dZded<   	 	 dPdQd„ZedRd„¦   «         ZedSd„¦   «         ZdTd„Z	edUd„¦   «         Z
	 dVdWd„ZedVdXd„¦   «         Zeed„ ¦   «         ¦   «         ZedYd „¦   «         ZedZd"„¦   «         Zeed[d$„¦   «         ¦   «         Zed\d&„¦   «         Zed]d(„¦   «         Zed^d*„¦   «         Zed_d,„¦   «         Zeed`d-„¦   «         ¦   «         Zeed`d.„¦   «         ¦   «         Zedad0„¦   «         ZedZd1„¦   «         Zedbd3„¦   «         ZeedUd4„¦   «         ¦   «         Zedcd6„¦   «         Zeddd7„¦   «         Zeded9„¦   «         Ze	 dfdgd@„¦   «         Z e	 dhdidF„¦   «         Z!edjdH„¦   «         Z"e	 dVdkdL„¦   «         Z#eedZdM„¦   «         ¦   «         Z$eedZdN„¦   «         ¦   «         Z%dOS )lÚBaseGrouperaŒ  
    This is an internal Grouper class, which actually holds
    the generated groups

    Parameters
    ----------
    axis : Index
    groupings : Sequence[Grouping]
        all the grouping instances to handle in this grouper
        for example for grouper list to groupby, need to pass the list
    sort : bool, default True
        whether this grouper will give sorted result or not

    r   rÏ   TÚ	groupingsúSequence[grouper.Grouping]ÚsortrN   Údropnar,   r-   c                ó–   — t          |t          ¦  «        s
J |¦   «         ‚|| _        t          |¦  «        | _        || _        || _        d S rP   )r/   r   rÏ   ÚlistÚ
_groupingsÚ_sortré   )rR   rÏ   ræ   rè   ré   s        r6   rS   zBaseGrouper.__init__B  sH   € õ ˜$¥Ñ&Ô&Ð,Ð,¨Ñ,Ô,Ð&àˆŒ	Ý26°y±/´/ˆŒØˆŒ
ØˆŒˆˆr8   úlist[grouper.Grouping]c                ó   — | j         S rP   )rì   ©rR   s    r6   ræ   zBaseGrouper.groupingsP  s
   € àŒÐr8   r   c                ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3  ó$   K  — | ]}|j         V — Œd S rP   )r’   ©Ú.0Úpings     r6   ú	<genexpr>z$BaseGrouper.shape.<locals>.<genexpr>V  s$   è è € Ð=Ð= d�T”\Ð=Ð=Ð=Ð=Ð=Ð=r8   )Útupleræ   rð   s    r6   r—   zBaseGrouper.shapeT  s!   € åÐ=Ð=¨d¬nÐ=Ñ=Ô=Ñ=Ô=Ð=r8   úIterator[Hashable]c                ó*   — t          | j        ¦  «        S rP   )ÚiterÚindicesrð   s    r6   Ú__iter__zBaseGrouper.__iter__X  s   € Ý�D”LÑ!Ô!Ð!r8   r“   c                ó*   — t          | j        ¦  «        S rP   )r>   ræ   rð   s    r6   ÚnkeyszBaseGrouper.nkeys[  s   € å�4”>Ñ"Ô"Ð"r8   r   Údatar   r   ú#Iterator[tuple[Hashable, NDFrameT]]c              #  ór   K  — |                       ||¬¦  «        }| j        }t          ||¦  «        E d{V —† dS )úš
        Groupby iterator

        Returns
        -------
        Generator yielding sequence of (name, subsetted object)
        for each group
        ©rÏ   N)Ú_get_splitterÚgroup_keys_seqÚzip)rR   rÿ   rÏ   ÚsplitterÚkeyss        r6   Úget_iteratorzBaseGrouper.get_iterator_  sP   è è € ð ×%Ò% d°Ð%Ñ6Ô6ˆØÔ"ˆÝ�t˜XÑ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&r8   r+   ÚDataSplitterc                óV   — | j         \  }}}t          |||| j        | j        |¬¦  «        S )zV
        Returns
        -------
        Generator yielding subsetted objects
        )Ú
sorted_idsÚsort_idxrÏ   )Ú
group_infor  Ú_sorted_idsÚ	_sort_idx)rR   rÿ   rÏ   rÕ   Ú_r’   s         r6   r  zBaseGrouper._get_splittern  s?   € ð œ/‰ˆˆQ�ÝØØØØÔ'Ø”^Øð
ñ 
ô 
ð 	
r8   c                óš   — t          | j        ¦  «        dk    r| j        d         S | j        \  }}}t	          ||| j        | j        ¦  «        S ©Nr;   r   )r>   ræ   Úlevelsr  r$   Úcodes©rR   rÕ   r  r’   s       r6   r  zBaseGrouper.group_keys_seq  sL   € õ ˆtŒ~ÑÔ !Ò#Ð#Ø”;˜q”>Ð!à"œo‰OˆC��Gõ & c¨7°D´KÀÄÑLÔLÐLr8   ú$dict[Hashable, npt.NDArray[np.intp]]c                óî   — t          | j        ¦  «        dk    r,t          | j        t          ¦  «        r| j        d         j        S d„ | j        D ¦   «         }d„ | j        D ¦   «         }t          ||¦  «        S )z"dict {group name -> group indices}r;   r   c                ó   — g | ]	}|j         ‘Œ
S r¿   ©r  ró   s     r6   ú
<listcomp>z'BaseGrouper.indices.<locals>.<listcomp>�  s   € Ð<Ð<Ð< T�d”jÐ<Ð<Ð<r8   c                ó   — g | ]	}|j         ‘Œ
S r¿   ©Ú_group_indexró   s     r6   r  z'BaseGrouper.indices.<locals>.<listcomp>‘  ó   € Ð=Ð=Ð= d�Ô!Ð=Ð=Ð=r8   )r>   ræ   r/   Úresult_indexr   rû   r'   )rR   Ú
codes_listr  s      r6   rû   zBaseGrouper.indicesŠ  sv   € õ ˆtŒ~ÑÔ !Ò#Ð#­
°4Ô3DÕFVÑ(WÔ(WÐ#à”> !Ô$Ô,Ð,Ø<Ð<¨T¬^Ð<Ñ<Ô<ˆ
Ø=Ð=¨d¬nÐ=Ñ=Ô=ˆÝ 
¨DÑ1Ô1Ð1r8   únpt.NDArray[np.intp]c                ón  — t          | j        | j        | j        d¬¦  «        }t	          || j        ¬¦  «        \  }}| j        r>t          j        |dk    ¦  «        }t          j        |dk    ¦  «        |         }||         }t          || j
        ¦  «        }| j        r|t          j        ||¦  «        z  }|S )zR
        Get the original integer locations of result_index in the input.
        T©rè   Úxnull©rè   r   rÓ   )r%   r  r—   rí   r"   rM   r0   Úwhereru   r&   r’   Útake)rR   Úgroup_indexr  r¨   Ú	null_gapsrÊ   s         r6   Úresult_ilocszBaseGrouper.result_ilocs”  sº   € õ &ØŒJ˜œ
¨¬¸4ð
ñ 
ô 
ˆõ .¨kÀÄ
ÐKÑKÔK‰ˆ�QàÔð 	,Ý”8˜K¨1Ò,Ñ-Ô-ˆDåœ	 +°Ò"3Ñ4Ô4°TÔ:ˆIØ% dÔ+ˆKå'¨°T´\ÑBÔBˆàÔð 	1à•b”g˜i¨Ñ0Ô0Ñ0ˆFàˆr8   ú#list[npt.NDArray[np.signedinteger]]c                ó$   — d„ | j         D ¦   «         S )Nc                ó   — g | ]	}|j         ‘Œ
S r¿   r  ró   s     r6   r  z%BaseGrouper.codes.<locals>.<listcomp>²  s   € Ð6Ð6Ð6˜t�”
Ð6Ð6Ð6r8   ©ræ   rð   s    r6   r  zBaseGrouper.codes¯  s   € ð 7Ð6 t¤~Ð6Ñ6Ô6Ð6r8   úlist[Index]c                ó$   — d„ | j         D ¦   «         S )Nc                ó   — g | ]	}|j         ‘Œ
S r¿   r  ró   s     r6   r  z&BaseGrouper.levels.<locals>.<listcomp>¶  r  r8   r/  rð   s    r6   r  zBaseGrouper.levels´  s   € à=Ð=¨d¬nÐ=Ñ=Ô=Ð=r8   úlist[Hashable]c                ó$   — d„ | j         D ¦   «         S )Nc                ó   — g | ]	}|j         ‘Œ
S r¿   rY   ró   s     r6   r  z%BaseGrouper.names.<locals>.<listcomp>º  s   € Ð5Ð5Ð5˜d�”	Ð5Ð5Ð5r8   r/  rð   s    r6   ÚnameszBaseGrouper.names¸  s   € à5Ð5 d¤nÐ5Ñ5Ô5Ð5r8   r!   c                ó’   — | j         \  }}}|r!t          j        ||dk             |¬¦  «        }ng }t          || j        dd¬¦  «        S )z&
        Compute group sizes.
        rÓ   )Ú	minlengthr¦   F)Úindexr5   r¹   )r  r0   Úbincountr!   r   )rR   rÕ   r  r’   r»   s        r6   rG   zBaseGrouper.size¼  sV   € ð
 œ/‰ˆˆQ�àð 	Ý”+˜c #¨¢)œn¸Ð@Ñ@Ô@ˆCˆCàˆCÝ�c Ô!2¸'ÈÐNÑNÔNÐNr8   údict[Hashable, np.ndarray]c                óx  — t          | j        ¦  «        dk    r| j        d         j        S g }| j        D ]Y}|j        }t	          |t
          ¦  «        s|                     |¦  «         Œ4|                     |j        d         j        ¦  «         ŒZt          j        |¦  «        }| j	         
                    |¦  «        S )ú!dict {group name -> group labels}r;   r   )r>   ræ   ÚgroupsÚgrouping_vectorr/   rå   Úappendr   Úfrom_arraysrÏ   Úgroupby)rR   Ú
to_groupbyrõ   Úgvr9  s        r6   r>  zBaseGrouper.groupsÉ  s¹   € õ ˆtŒ~ÑÔ !Ò#Ð#Ø”> !Ô$Ô+Ð+àˆJØœð Gð G�ØÔ)�Ý! "¥kÑ2Ô2ð GØ×%Ò% bÑ)Ô)Ð)Ð)à×%Ò% b¤l°1¤oÔ&EÑFÔFÐFÐFÝÔ*¨:Ñ6Ô6ˆEØ”9×$Ò$ UÑ+Ô+Ð+r8   c                ó@   — t          | j        d         ¦  «        j        S ©Nr   )r   r  Úis_monotonic_increasingrð   s    r6   Úis_monotoniczBaseGrouper.is_monotonicÙ  s   € õ �T”_ QÔ'Ñ(Ô(Ô@Ð@r8   c                ób   — t          | j        d         dk                          ¦   «         ¦  «        S )zE
        Whether grouper has null value(s) that are dropped.
        r   )rN   r  rC   rð   s    r6   rM   zBaseGrouper.has_dropped_naß  s*   € õ �T”_ QÔ'¨!Ò+×0Ò0Ñ2Ô2Ñ3Ô3Ð3r8   ú6tuple[npt.NDArray[np.intp], npt.NDArray[np.intp], int]c                óv   — |                       ¦   «         \  }}t          |¦  «        }t          |¦  «        }|||fS rP   )Ú_get_compressed_codesr>   r   )rR   r«   Úobs_group_idsr’   s       r6   r  zBaseGrouper.group_infoç  s?   € à"&×"<Ò"<Ñ">Ô">Ñˆ�-å�mÑ$Ô$ˆÝ& xÑ0Ô0ˆà˜¨Ð/Ð/r8   c                ó   — | j         \  }}}|S rP   )r  ©rR   rÕ   r  s      r6   Ú
codes_infozBaseGrouper.codes_infoð  s   € ð ”O‰	ˆˆQ�Øˆ
r8   ú:tuple[npt.NDArray[np.signedinteger], npt.NDArray[np.intp]]c                ó$  — t          | j        ¦  «        dk    r3t          | j        | j        dd¬¦  «        }t          || j        ¬¦  «        S | j        d         }|j        t          j        t          |j	        ¦  «        t          j
        ¬¦  «        fS )Nr;   Tr$  r&  r   rº   )r>   ræ   r%   r  r—   r"   rí   r0   Úaranger  rž   )rR   r)  rõ   s      r6   rL  z!BaseGrouper._get_compressed_codesö  s€   € õ
 ˆtŒ~ÑÔ Ò"Ð"Ý)¨$¬*°d´jÀtÐSWÐXÑXÔXˆKÝ'¨¸$¼*ÐEÑEÔEÐEð Œ~˜aÔ ˆØŒz�2œ9¥S¨Ô):Ñ%;Ô%;Å2Ä7ÐKÑKÔKÐKÐKr8   c                ó*   — t          | j        ¦  «        S rP   )r>   r   rð   s    r6   r’   zBaseGrouper.ngroups  s   € õ �4Ô$Ñ%Ô%Ð%r8   úlist[npt.NDArray[np.intp]]c                óX   — | j         }| j        \  }}}t          ||| j        |d¬¦  «        S )NT)r%  )r  r  r#   r—   )rR   r  rÕ   Úobs_idsr  s        r6   Úreconstructed_codeszBaseGrouper.reconstructed_codes  s1   € à”
ˆØœ/‰ˆˆW�aÝ# C¨°$´*¸eÈ4ÐPÑPÔPÐPr8   c                óò   — t          | j        ¦  «        dk    r0| j        d         j                             | j        d         ¦  «        S | j        }d„ | j        D ¦   «         }t          ||d| j        ¬¦  «        S )Nr;   r   c                ó   — g | ]	}|j         ‘Œ
S r¿   )Ú_result_indexró   s     r6   r  z,BaseGrouper.result_index.<locals>.<listcomp>  s   € Ð@Ð@Ð@¨�$Ô$Ð@Ð@Ð@r8   F)r  r  Úverify_integrityr6  )r>   ræ   r[  Úrenamer6  rX  r   )rR   r  r  s      r6   r   zBaseGrouper.result_index  sz   € åˆtŒ~ÑÔ !Ò#Ð#Ø”> !Ô$Ô2×9Ò9¸$¼*ÀQ¼-ÑHÔHÐHàÔ(ˆØ@Ð@°´Ð@Ñ@Ô@ˆÝØ ¸ÀdÄjð
ñ 
ô 
ð 	
r8   úlist[ArrayLike]c                ó  — t          | j        ¦  «        dk    r| j        d         j        gS g }t          | j        | j        ¦  «        D ]C\  }}t          |¦  «        }|j                             |¦  «        }|                     |¦  «         ŒD|S r  )r>   ræ   Ú_group_arrayliker  rX  r   r(  r@  )rR   Ú	name_listrõ   r  r  s        r6   Úget_group_levelszBaseGrouper.get_group_levels  s“   € õ ˆtŒ~ÑÔ !Ò#Ð#Ø”N 1Ô%Ô6Ð7Ð7àˆ	Ý˜tœ~¨tÔ/GÑHÔHð 	%ð 	%‰KˆD�%Ý'¨Ñ.Ô.ˆEØÔ*×/Ò/°Ñ6Ô6ˆFà×Ò˜VÑ$Ô$Ð$Ð$àÐr8   rÓ   rJ   rK   rL   rª   r
   c           	     ó†   — |dv sJ ‚t          ||| j        ¬¦  «        }| j        \  }}	}	| j        }
 |j        d|||||
dœ|¤ŽS )z;
        Returns the values of a cython operation.
        )ry   rx   rQ   )rŒ   rÏ   rª   r«   r’   r¿   )rB   rM   r  r’   r×   )rR   rJ   rŒ   rL   rÏ   rª   r°   Úcy_oprÕ   r  r’   s              r6   Ú_cython_operationzBaseGrouper._cython_operation,  s{   € ð Ð1Ð1Ð1Ð1Ð1å T¨sÀ4ÔCVÐWÑWÔWˆà”O‰	ˆˆQ�Ø”,ˆØ%ˆuÔ%ð 
ØØØØØð
ð 
ð ð
ð 
ð 	
r8   Fr4   rÉ   r   Úpreserve_dtypec                óØ   — t          |j        t          j        ¦  «        sd}|                      ||¦  «        }t          j        |d¬¦  «        }|rt          ||j        d¬¦  «        }n|}|S )a1  
        Parameters
        ----------
        obj : Series
        func : function taking a Series and returning a scalar-like
        preserve_dtype : bool
            Whether the aggregation is known to be dtype-preserving.

        Returns
        -------
        np.ndarray or ExtensionArray
        TF)Ú	try_float)Únumeric_only)	r/   r:   r0   r1   Ú_aggregate_series_pure_pythonr	   Úmaybe_convert_objectsr   r5   )rR   r4   rÉ   rf  rÊ   Únpvaluesr»   s          r6   Ú
agg_serieszBaseGrouper.agg_seriesH  sv   € õ" ˜#œ+¥r¤zÑ2Ô2ð 	"ð
 "ˆNà×3Ò3°C¸Ñ>Ô>ˆåÔ,¨V¸uÐEÑEÔEˆØð 	Ý-¨h¸¼	ÐPTÐUÑUÔUˆCˆCàˆCØˆ
r8   únpt.NDArray[np.object_]c                ó  — | j         \  }}}t          j        |d¬¦  «        }d}|                      |d¬¦  «        }t	          |¦  «        D ]=\  }}	 ||	¦  «        }
t          |
¦  «        }
|st          |
|	j        ¦  «         d}|
||<   Œ>|S )NÚOrº   Fr   r  T)r  r0   rÄ   r  Ú	enumerater@   r7   r5   )rR   r4   rÉ   r  r’   rÊ   Úinitializedr  r�   Úgroupr?   s              r6   rj  z)BaseGrouper._aggregate_series_pure_pythoni  s¦   € ð œ‰ˆˆ1ˆgå”˜'¨Ð-Ñ-Ô-ˆØˆà×%Ò% c°Ð%Ñ2Ô2ˆå! (Ñ+Ô+ð 		ð 		‰HˆAˆuØ�$�u‘+”+ˆCÝ  Ñ%Ô%ˆCàð #å" 3¨¬Ñ4Ô4Ð4Ø"�àˆF�1‰IˆIàˆr8   rŠ   úDataFrame | Seriesútuple[list, bool]c                óª  — d}|                       ||¬¦  «        }| j        }g }t          ||¦  «        }|D ]]\  }	}
t                               |
d|	¦  «         |
j        } ||
¦  «        }|st          |||¦  «        sd}|                     |¦  «         Œ^t          |¦  «        dk    r+t          |dd ¦  «        dv r ||j
        d d…         ¦  «         ||fS )NFr  rZ   Tr   rØ   )rg   rU   rW   )r  r  r  r2   Ú__setattr__ÚaxesÚ_is_indexed_liker@  r>   r„   Úiloc)rR   rŠ   rÿ   rÏ   Úmutatedr  Ú
group_keysÚresult_valuesÚzippedÚkeyrs  Ú
group_axesr?   s                r6   Úapply_groupwisezBaseGrouper.apply_groupwise�  s  € ð ˆØ×%Ò% d°Ð%Ñ6Ô6ˆØÔ(ˆ
Øˆõ �Z Ñ*Ô*ˆà ð 	&ð 	&‰JˆC�õ ×Ò˜u f¨cÑ2Ô2Ð2ð œˆJØ�!�E‘(”(ˆCØð Õ#3°C¸ÀTÑ#JÔ#Jð Ø�Ø× Ò  Ñ%Ô%Ð%Ð%åˆz‰?Œ?˜aÒÐ¥G¨A¨z¸4Ñ$@Ô$@ð E
ð %
ð %
ð ˆAˆdŒi˜˜˜ŒmÑÔÐà˜gÐ%Ð%r8   c                ó8   — | j         \  }}}t          ||¦  «        S rP   )r  r&   r  s       r6   r  zBaseGrouper._sort_idx«  s!   € ð œ/‰ˆˆQ�Ý% c¨7Ñ3Ô3Ð3r8   c                óL   — | j         \  }}}|                     | j        ¦  «        S rP   )r  r(  r  rO  s      r6   r  zBaseGrouper._sorted_ids²  s%   € ð ”O‰	ˆˆQ�Ø�xŠx˜œÑ'Ô'Ð'r8   N)TT)
rÏ   r   ræ   rç   rè   rN   ré   rN   r,   r-   ©r,   rî   )r,   r   )r,   rø   ©r,   r“   ©r   )rÿ   r   rÏ   r   r,   r   )rÿ   r+   rÏ   r   r,   r
  )r,   r  ©r,   r"  )r,   r,  ©r,   r0  ©r,   r3  )r,   r!   )r,   r;  )r,   rN   ©r,   rJ  )r,   rQ  )r,   rU  ©r,   r   )r,   r^  )rÓ   )
rJ   rK   rL   rK   rÏ   r   rª   r“   r,   r
   )F)r4   r!   rÉ   r   rf  rN   r,   r
   )r4   r!   rÉ   r   r,   rn  )rŠ   r   rÿ   rt  rÏ   r   r,   ru  )&rØ   rÙ   rÚ   rÛ   rá   rS   Úpropertyræ   r—   rü   rþ   r	  r   r  r   r  rû   r+  r  r  r6  rG   r>  rH  rM   r  rP  rL  r’   rX  r   rb  re  rm  rj  r�  r  r  r¿   r8   r6   rå   rå   0  sS  € € € € € € ðð ð €K€K�Kð Øðð ð ð ð ð ðð ð ñ „Xðð ð>ð >ð >ñ „Xð>ð"ð "ð "ð "ð ð#ð #ð #ñ „Xð#ð /0ð'ð 'ð 'ð 'ð 'ð ð
ð 
ð 
ð 
ñ „Uð
ð  ØðMð Mñ „^ñ „UðMð ð2ð 2ð 2ñ „^ð2ð ðð ð ñ „Uðð4 Øð7ð 7ð 7ñ „Xñ „Uð7ð ð>ð >ð >ñ „Xð>ð ð6ð 6ð 6ñ „Xð6ð ð
Oð 
Oð 
Oñ „Uð
Oð ð,ð ,ð ,ñ „^ð,ð ØðAð Að Añ „^ñ „UðAð Øð4ð 4ð 4ñ „^ñ „Uð4ð ð0ð 0ð 0ñ „^ð0ð ðð ð ñ „^ðð
 ð
Lð 
Lð 
Lñ „Uð
Lð Øð&ð &ð &ñ „^ñ „Uð&ð ðQð Qð Qñ „XðQð
 ð
ð 
ð 
ñ „^ð
ð ðð ð ñ „Uðð$ ð ð
ð 
ð 
ð 
ñ „Uð
ð6 àBGðð ð ð ñ „Uðð@ ðð ð ñ „Uðð. àEFð$&ð $&ð $&ð $&ñ „Uð$&ðR Øð4ð 4ð 4ñ „^ñ „Uð4ð
 Øð(ð (ð (ñ „^ñ „Uð(ð (ð (r8   rå   c                  ó*  — e Zd ZU dZded<   ded<   	 d!d"d	„Zed
„ ¦   «         Zed#d„¦   «         Z	ed$d„¦   «         Z
d%d&d„Zed„ ¦   «         Zed'd„¦   «         Zed(d„¦   «         Zed)d„¦   «         Zed*d„¦   «         Zed+d„¦   «         Zed,d „¦   «         ZdS )-Ú
BinGrouperaå  
    This is an internal Grouper class

    Parameters
    ----------
    bins : the split index of binlabels to group the item of axis
    binlabels : the label list
    indexer : np.ndarray[np.intp], optional
        the indexer created by Grouper
        some groupers (TimeGrouper) will sort its axis and its
        group_info is also sorted, so need the indexer to reorder

    Examples
    --------
    bins: [2, 4, 6, 8, 10]
    binlabels: DatetimeIndex(['2005-01-01', '2005-01-03',
        '2005-01-05', '2005-01-07', '2005-01-09'],
        dtype='datetime64[ns]', freq='2D')

    the group_info, which contains the label of each item in grouped
    axis, the index of label in label list, group number, is

    (array([0, 0, 1, 1, 2, 2, 3, 3, 4, 4]), array([0, 1, 2, 3, 4]), 5)

    means that, the grouped axis has 10 items, can be grouped into 5
    labels, the first and second items belong to the first label, the
    third and forth items belong to the second label, and so on

    znpt.NDArray[np.int64]Úbinsr   Ú	binlabelsNr,   r-   c                ó¼   — t          |¦  «        | _        t          |¦  «        | _        || _        t          | j        ¦  «        t          | j        ¦  «        k    sJ ‚d S rP   )r   r�  r    r�  Úindexerr>   )rR   r�  r�  r’  s       r6   rS   zBinGrouper.__init__Û  sT   € õ ! Ñ&Ô&ˆŒ	Ý% iÑ0Ô0ˆŒØˆŒõ �4”>Ñ"Ô"¥c¨$¬)¡n¤nÒ4Ð4Ð4Ð4Ð4Ð4r8   c                óN   — d„ t          | j        | j        ¦  «        D ¦   «         }|S )r=  c                ó,   — i | ]\  }}|t           u¯||“ŒS r¿   )r   )rô   r  Úvalues      r6   ú
<dictcomp>z%BinGrouper.groups.<locals>.<dictcomp>î  s/   € ð 
ð 
ð 
á��UØ�#ˆ~ˆ~ð �àˆ~ˆ~r8   )r  r�  r�  )rR   rÊ   s     r6   r>  zBinGrouper.groupsé  s5   € ð

ð 
å! $¤.°$´)Ñ<Ô<ð
ñ 
ô 
ˆð
 ˆr8   r“   c                ó   — dS )Nr;   r¿   rð   s    r6   rþ   zBinGrouper.nkeysõ  s	   € ð ˆqr8   r"  c                óp   — | j         \  }}}| j        �#t          j        || j        f¦  «        }||         }|S rP   )r  r’  r0   Úlexsort)rR   rÕ   r  Úsorters       r6   rP  zBinGrouper.codes_infoú  s=   € ð ”O‰	ˆˆQ�ØŒ<Ð#Ý”Z  d¤lÐ 3Ñ4Ô4ˆFØ�f”+ˆCØˆ
r8   r   rÿ   r+   rÏ   r   c              #  ó"  ‡K  — |dk    rˆfd„}nˆfd„}t          ‰j        |         ¦  «        }d}t          | j        | j        ¦  «        D ] \  }}|t
          ur| |||¦  «        fV — |}Œ!||k     r| j        d          ||d¦  «        fV — dS dS )r  r   c                ó"   •— ‰j         | |…         S rP   ©rz  ©ÚstartÚedgerÿ   s     €r6   ú<lambda>z)BinGrouper.get_iterator.<locals>.<lambda>  s   ø€ ¨¬°5¸°:Ô)>€ r8   c                ó*   •— ‰j         d d …| |…f         S rP   r�  rž  s     €r6   r¡  z)BinGrouper.get_iterator.<locals>.<lambda>  s   ø€ ¨¬°1°1°1°e¸D°j°=Ô)A€ r8   rÓ   N)r>   rx  r  r�  r�  r   )rR   rÿ   rÏ   ÚslicerÚlengthrŸ  r   Úlabels    `      r6   r	  zBinGrouper.get_iterator  sÒ   øè è € ð �1Š9ˆ9Ø>Ð>Ð>Ð>ˆFˆFàAÐAÐAÐAˆFå�T”Y˜t”_Ñ%Ô%ˆàˆÝ˜tœy¨$¬.Ñ9Ô9ð 	ð 	‰KˆD�%Ø�CÐÐØ˜V˜V E¨4Ñ0Ô0Ð0Ð0Ð0Ð0ØˆEˆEà�6Š>ˆ>Ø”. Ô$ f f¨U°DÑ&9Ô&9Ð9Ð9Ð9Ð9Ð9Ð9ð ˆ>r8   c                óÞ   — t          j        t          ¦  «        }d}t          | j        | j        ¦  «        D ]6\  }}||k     r+|t          ur t          t          ||¦  «        ¦  «        ||<   |}Œ7|S rF  )ÚcollectionsÚdefaultdictrë   r  r�  r�  r   Úrange)rR   rû   r�   r¥  Úbins        r6   rû   zBinGrouper.indices  sp   € åÔ)­$Ñ/Ô/ˆàˆÝ˜dœn¨d¬iÑ8Ô8ð 	ð 	‰JˆE�3Ø�3ŠwˆwØ¥Ð#Ð#Ý%)­%°°3©-¬-Ñ%8Ô%8�G˜E‘NØ�øØˆr8   rJ  c                óÚ  — | j         }t          j        |t          j        ¬¦  «        }t          j        t          j        d| j        f         ¦  «        }t          |¦  «        }|t          | j        ¦  «        k    r(t          j	        t          j        |¦  «        |¦  «        }n9t          j	        t          j        dt          j        |¦  «        f         |¦  «        }t          |¦  «        ||fS )Nrº   r   rÓ   )
r’   r0   rS  rž   ÚdiffÚr_r�  r   r>   Úrepeat)rR   r’   rM  Úrepr«   s        r6   r  zBinGrouper.group_info(  s¼   € à”,ˆÝœ	 'µ´Ð9Ñ9Ô9ˆÝŒg•b”e˜A˜tœy˜LÔ)Ñ*Ô*ˆå! #Ñ&Ô&ˆØ•c˜$œ)‘n”nÒ$Ð$Ý”y¥¤¨7Ñ!3Ô!3°SÑ9Ô9ˆHˆHå”y¥¤ r­2¬9°WÑ+=Ô+=Ð'=Ô!>ÀÑDÔDˆHõ   Ñ)Ô)ØØð
ð 	
r8   úlist[np.ndarray]c                ó’   — t           j        dt          j        | j        dd …         | j        d d…         k    ¦  «        dz   f         gS )Nr   r;   rÓ   )r0   r­  Úflatnonzeror�  rð   s    r6   rX  zBinGrouper.reconstructed_codes:  sA   € õ ”�a�œ¨¬	°!°"°"¬¸¼À3ÀBÀ3¼Ò(GÑHÔHÈ1ÑLÐLÔMÐNÐNr8   c                ó’   — t          | j        ¦  «        dk    r)t          | j        d         ¦  «        r| j        dd …         S | j        S )Nr   r;   )r>   r�  r   rð   s    r6   r   zBinGrouper.result_index?  sD   € åˆtŒ~ÑÔ !Ò#Ð#­¨T¬^¸AÔ->Ñ(?Ô(?Ð#Ø”> ! " "Ô%Ð%àŒ~Ðr8   r0  c                ó   — | j         gS rP   )r�  rð   s    r6   r  zBinGrouper.levelsF  s   € à”ÐÐr8   r3  c                ó   — | j         j        gS rP   )r�  rZ   rð   s    r6   r6  zBinGrouper.namesJ  s   € à”Ô#Ð$Ð$r8   rî   c                ó–   — | j         }| j        d         }|                     |¦  «        }t          j        ||dd |j        ¬¦  «        }|gS )Nr   F)Úin_axisÚlevelÚuniques)r�  r  r(  r   ÚGroupingr:   )rR   Úlevr  r½   rõ   s        r6   ræ   zBinGrouper.groupingsN  sQ   € àŒnˆØ” Ô"ˆØ—’˜%‘”ˆÝÔØ�F E°¸s¼{ð
ñ 
ô 
ˆð ˆvˆr8   rP   ©r,   r-   r…  r‡  r†  )rÿ   r+   rÏ   r   rŠ  )r,   r°  r‹  rˆ  r‰  r„  )rØ   rÙ   rÚ   rÛ   rá   rS   r   r>  rŒ  rþ   rP  r	  rû   r  rX  r   r  r6  ræ   r¿   r8   r6   rŽ  rŽ  ¹  s«  € € € € € € ðð ð<  ÐÐÑØÐÐÑð ð	5ð 5ð 5ð 5ð 5ð ð	ð 	ñ „^ð	ð ðð ð ñ „Xðð ðð ð ñ „^ðð:ð :ð :ð :ð :ð2 ð	ð 	ñ „^ð	ð ð
ð 
ð 
ñ „^ð
ð" ðOð Oð Oñ „^ðOð ðð ð ñ „^ðð ð ð  ð  ñ „Xð ð ð%ð %ð %ñ „Xð%ð ðð ð ñ „Xðð ð r8   rŽ  rÏ   r   rN   c                ó  — t          | t          ¦  «        r;t          |¦  «        dk    rdS | j        |                              ||         ¦  «        S t          | t
          ¦  «        r&| j        |                              ||         ¦  «        S dS )Nr;   F)r/   r!   r>   rx  Úequalsr   )r4   rx  rÏ   s      r6   ry  ry  Y  s{   € Ý�#•vÑÔð 1Ýˆt‰9Œ9�qŠ=ˆ=Ø�5ØŒx˜Œ~×$Ò$ T¨$¤ZÑ0Ô0Ð0Ý	�C�Ñ	#Ô	#ð 1ØŒx˜Œ~×$Ò$ T¨$¤ZÑ0Ô0Ð0àˆ5r8   c                  óD   — e Zd Zddœdd„Zdd„Zedd„¦   «         Zdd„ZdS )r
  r   r  rÿ   r   r½   r"  r’   r“   r  r  rÏ   r   r,   r-   c               ó²   — || _         t          |¦  «        | _        || _        || _        || _        || _        t          |t          ¦  «        s
J |¦   «         ‚d S rP   )	rÿ   r   r½   r’   Ú_slabelsr  rÏ   r/   r“   )rR   rÿ   r½   r’   r  r  rÏ   s          r6   rS   zDataSplitter.__init__i  sZ   € ð ˆŒ	Ý)¨&Ñ1Ô1ˆŒØˆŒà"ˆŒØ!ˆŒàˆŒ	Ý˜$¥Ñ$Ô$Ð*Ð* dÑ*Ô*Ð$Ð*Ð*r8   r)   c              #  óî   K  — | j         }| j        dk    rd S t          j        | j        | j        ¦  «        \  }}t          ||¦  «        D ]+\  }}|                      |t          ||¦  «        ¦  «        V — Œ,d S rF  )Ú_sorted_datar’   r	   Úgenerate_slicesrÁ  r  Ú_chopÚslice)rR   ÚsdataÚstartsÚendsrŸ  Úends         r6   rü   zDataSplitter.__iter__}  sŠ   è è € ØÔ!ˆàŒ<˜1ÒÐð ˆFåÔ*¨4¬=¸$¼,ÑGÔG‰ˆ�å˜f dÑ+Ô+ð 	7ð 	7‰JˆE�3Ø—*’*˜U¥E¨%°Ñ$5Ô$5Ñ6Ô6Ð6Ð6Ð6Ð6ð	7ð 	7r8   c                óN   — | j                              | j        | j        ¬¦  «        S )Nr  )rÿ   r(  r  rÏ   rð   s    r6   rÃ  zDataSplitter._sorted_dataŠ  s   € àŒy�~Š~˜dœn°4´9ˆ~Ñ=Ô=Ð=r8   Ú	slice_objrÆ  r+   c                ó    — t          | ¦  «        ‚rP   r   )rR   rÇ  rÌ  s      r6   rÅ  zDataSplitter._chopŽ  s   € Ý! $Ñ'Ô'Ð'r8   N)rÿ   r   r½   r"  r’   r“   r  r"  r  r"  rÏ   r   r,   r-   )r,   r)   )r,   r   )rÌ  rÆ  r,   r+   )rØ   rÙ   rÚ   rS   rü   r   rÃ  rÅ  r¿   r8   r6   r
  r
  h  s   € € € € € ð ð+ð +ð +ð +ð +ð +ð(7ð 7ð 7ð 7ð ð>ð >ð >ñ „^ð>ð(ð (ð (ð (ð (ð (r8   r
  c                  ó   — e Zd Zdd„ZdS )	ÚSeriesSplitterrÇ  r!   rÌ  rÆ  r,   c                ó´   — |j                              |¦  «        }|                     ||j        ¬¦  «        }|j        |_        |                     |d¬¦  «        S )N©rx  rB  ©Úmethod)Ú_mgrÚ	get_sliceÚ_constructor_from_mgrrx  rZ   Ú_nameÚ__finalize__)rR   rÇ  rÌ  ÚmgrÚsers        r6   rÅ  zSeriesSplitter._chop“  sS   € àŒj×"Ò" 9Ñ-Ô-ˆØ×)Ò)¨#°C´HÐ)Ñ=Ô=ˆØ”JˆŒ	Ø×Ò ¨iÐÑ8Ô8Ð8r8   N)rÇ  r!   rÌ  rÆ  r,   r!   ©rØ   rÙ   rÚ   rÅ  r¿   r8   r6   rÏ  rÏ  ’  s(   € € € € € ð9ð 9ð 9ð 9ð 9ð 9r8   rÏ  c                  ó   — e Zd Zdd„ZdS )	ÚFrameSplitterrÇ  r   rÌ  rÆ  r,   c                ó°   — |j                              |d| j        z
  ¬¦  «        }|                     ||j        ¬¦  «        }|                     |d¬¦  «        S )Nr;   r  rÑ  rB  rÒ  )rÔ  rÕ  rÏ   rÖ  rx  rØ  )rR   rÇ  rÌ  rÙ  Údfs        r6   rÅ  zFrameSplitter._chopœ  sT   € ð Œj×"Ò" 9°1°t´y±=Ð"ÑAÔAˆØ×(Ò(¨°3´8Ð(Ñ<Ô<ˆØ�Š˜u¨YˆÑ7Ô7Ð7r8   N)rÇ  r   rÌ  rÆ  r,   r   rÛ  r¿   r8   r6   rÝ  rÝ  ›  s(   € € € € € ð8ð 8ð 8ð 8ð 8ð 8r8   rÝ  r  rÿ   r+   r½   r"  r’   r“   r  r  c               ól   — t          | t          ¦  «        rt          }nt          } || |||||¬¦  «        S )N)r  r  rÏ   )r/   r!   rÏ  rÝ  )rÿ   r½   r’   r  r  rÏ   Úklasss          r6   r  r  §  sJ   € õ �$�ÑÔð Ý$2ˆˆõ ˆàˆ5Øˆf�g¨¸ZÈdðñ ô ð r8   r¼  )rÏ   r   r,   rN   )rÿ   r+   r½   r"  r’   r“   r  r"  r  r"  rÏ   r   r,   r
  )KrÛ   Ú
__future__r   r§  rÝ   Útypingr   r   r   r   Únumpyr0   Úpandas._libsr   r	   Úpandas._libs.groupbyÚ_libsrB  r…   Úpandas._typingr
   r   r   r   r   Úpandas.errorsr   Úpandas.util._decoratorsr   Úpandas.core.dtypes.castr   r   Úpandas.core.dtypes.commonr   r   r   r   r   Úpandas.core.dtypes.missingr   r   Úpandas.core.framer   Úpandas.core.groupbyr   Úpandas.core.indexes.apir   r   r   r    Úpandas.core.seriesr!   Úpandas.core.sortingr"   r#   r$   r%   r&   r'   Úcollections.abcr(   r)   r*   Úpandas.core.genericr+   r7   r@   rB   rå   rŽ  ry  r
  rÏ  rÝ  r  r¿   r8   r6   ú<module>rõ     s_  ððð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð ðð ð ð ð ð ð ð ð *Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )ðð ð ð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð
 (Ð 'Ð 'Ð 'Ð 'Ð 'Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð ð ð &Ð %Ð %Ð %Ð %Ð %ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ,ðð ð ð ð ð ð ð ð ð ð ,Ð+Ð+Ð+Ð+Ð+ð>ð >ð >ð >ðð ð ðD
ð D
ð D
ð D
ð D
ñ D
ô D
ð D
ðNF(ð F(ð F(ð F(ð F(ñ F(ô F(ð F(ðR]ð ]ð ]ð ]ð ]�ñ ]ô ]ð ]ð@ð ð ð ð'(ð '(ð '(ð '(ð '(�7˜8Ô$ñ '(ô '(ð '(ðT9ð 9ð 9ð 9ð 9�\ñ 9ô 9ð 9ð	8ð 	8ð 	8ð 	8ð 	8�Lñ 	8ô 	8ð 	8ð& ðð ð ð ð ð ð ð r8   