§
    Šhþhb7  ã                  ó2  — U d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ e
r;d dlmZmZmZmZmZ d dlZd dl m!Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m*Z* d dl+m,Z, dZ-de.d<   dZ/de.d<   ed         Z0de.d<   edddddddd d!d"d#d$d%d&d'd(d)d*d+e0f         Z1de.d,<   	 d-Z2de.d.<   	 eZ3de.d/<   	 d d0d1œZ4d2e.d3<    ed4¬5¦  «        dEd:„¦   «         Z5 G d;„ d<¦  «        Z6 G d=„ d>ed?d@e1f         ¦  «        Z7dFdB„Z8dGdD„Z9dS )Hé    )ÚannotationsN)Ú	lru_cache)Úchain)Úmethodcaller)ÚTYPE_CHECKINGÚAnyÚClassVarÚLiteral)ÚEagerGroupBy)Úissue_warning)Ú!evaluate_output_names_and_aliases)Ú
zip_strict)Úis_pandas_like_dataframe)ÚCallableÚIterableÚIteratorÚMappingÚSequence)ÚDataFrameGroupBy)Ú	TypeAliasÚUnpack)ÚNarwhalsAggregationÚScalarKwargs)ÚPandasLikeDataFrame)ÚPandasLikeExprz._NativeGroupBy[tuple[str, ...], Literal[True]]r   ÚNativeGroupByz(Callable[[pd.DataFrame], pd.Series[Any]]ÚNativeApply)ÚcovÚskewÚInefficientNativeAggregationÚanyÚallÚcountÚidxmaxÚidxminÚmaxÚmeanÚmedianÚminÚmodeÚnthÚnuniqueÚprodÚquantileÚsemÚsizeÚstdÚsumÚvarÚNativeAggregationz.Callable[[Any], pd.DataFrame | pd.Series[Any]]Ú
_NativeAggÚNonStrHashableéÿÿÿÿ)ÚfirstÚlastz,Mapping[NarwhalsAggregation, Literal[0, -1]]Ú_REMAP_ORDERED_INDEXé    )ÚmaxsizeÚnameÚkwdsúUnpack[ScalarKwargs]Úreturnc               óž   — | dk    rt          | d¬¦  «        S |r|                     d¦  «        dk    rt          | ¦  «        S t          | fi |¤ŽS )Nr,   F)ÚdropnaÚddofé   )r   Úget)r=   r>   s     úU/var/www/histauto/venv/lib/python3.11/site-packages/narwhals/_pandas_like/group_by.pyÚ_native_aggrG   C   sb   € àˆyÒÐÝ˜D¨Ð/Ñ/Ô/Ð/Øð "�4—8’8˜FÑ#Ô# qÒ(Ð(Ý˜DÑ!Ô!Ð!Ý˜Ð%Ð% Ð%Ð%Ð%ó    c                  óª   — e Zd ZU dZded<   ded<   ded<   dd	„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd„Zdd„Zed d„¦   «         Zed!d„¦   «         Zd"d„ZdS )#ÚAggExpraM  Wrapper storing the intermediate state per-`PandasLikeExpr`.

    There's a lot of edge cases to handle, so aim to evaluate as little
    as possible - and store anything that's needed twice.

    Warning:
        While a `PandasLikeExpr` can be reused - this wrapper is valid **only**
        in a single `.agg(...)` operation.
    r   ÚexprzSequence[str]Úoutput_namesÚaliasesr@   ÚNonec                ó>   — || _         d| _        d| _        d| _        d S )N© Ú )rK   rL   rM   Ú
_leaf_name)ÚselfrK   s     rF   Ú__init__zAggExpr.__init__[   s#   € ØˆŒ	ØˆÔØˆŒØ57ˆŒˆˆrH   Úgroup_byÚPandasLikeGroupByc               óh   — |j         }|j        }t          | j        ||¦  «        \  | _        | _        | S )zd**Mutating operation**.

        Stores the results of `evaluate_output_names_and_aliases`.
        )Ú	compliantÚexcluder   rK   rL   rM   )rS   rU   ÚdfrY   s       rF   Úwith_expand_nameszAggExpr.with_expand_namesa   s=   € ð
 ÔˆØÔ"ˆÝ*KØŒI�r˜7ñ+
ô +
Ñ'ˆÔ˜4œ<ð ˆrH   úpd.DataFrame | pd.Series[Any]c               óè  ‡	‡
‡‡‡— | j         }|                      ¦   «         r/|                      ¦   «         r|j                             ¦   «         }�nç|                      ¦   «         rV|j                             ¦   «         Š|j                             ¦   «         Š‰                     ˆˆfd„|D ¦   «         ¦  «        }�n}|                      ¦   «         r¡|j        }| j	         
                    d¦  «        x}dk    rd|› d|j        › d�}t          |¦  «        ‚t          |¦  «        }|j        Š|j        |j        cŠ	Š
|                     ¦   «         Š‰                     ˆ	ˆ
ˆfd„|D ¦   «         ¦  «        }nÈ|                      ¦   «         s|                      ¦   «         rN |                      ¦   «         |j        g |j        ¢|¢         ¦  «        }|                     |j        d¬	¦  «         nRt+          |¦  «        d
k    r|d         nt          |¦  «        } |                      ¦   «         |j        |         ¦  «        }t-          |¦  «        rt          | j        ¦  «        |_        n| j        d         |_        |S )z8Evaluate the wrapped expression as a group_by operation.c                ój   •— g | ]/}‰                      ‰¦  «                             |¦  «        j        ‘Œ0S rP   )Úfrom_nativeÚaliasÚnative)Ú.0r=   ÚnsÚresult_singles     €€rF   ú
<listcomp>z)AggExpr._getitem_aggs.<locals>.<listcomp>y   s6   ø€ ÐTÐTÐTÀd�—’ Ñ.Ô.×4Ò4°TÑ:Ô:ÔAÐTÐTÐTrH   Úkeepr!   z`Expr.mode(keep='z7')` is not implemented in group by context for backend z3

Hint: Use `nw.col(...).mode(keep='any')` instead.c                ó  •— g | ]„}  ‰j         g ‰¢|‘fi ‰¤Ž                     ¦   «                              d ¬¦  «                             |¦  «        j         ‰fi ‰¤Ž|                              d¦  «                             ¦   «         ‘Œ…S )F)Ú	ascendingrD   )Úgroupbyr0   Úsort_valuesÚreset_indexÚheadÚ
sort_index)rb   ÚcolÚkeysÚkwargsra   s     €€€rF   re   z)AggExpr._getitem_aggs.<locals>.<listcomp>�   s¬   ø€ ð 	ð 	ð 	ð ð�N�F”N < T <¨3 <Ð:Ð:°6Ð:Ð:ß’T‘V”Vß ’[¨5�[Ñ1Ô1ß ’[ Ñ%Ô%Ü˜Tð	-ð -ð &,ð	-ð -ð .1ô	2÷
 ’T˜!‘W”Wß’Z‘\”\ð	ð 	ð 	rH   T©ÚinplacerD   r   )rL   Úis_lenÚis_top_level_functionÚ_groupedr0   rX   Ú__narwhals_namespace__Ú_concat_horizontalÚis_moderp   rE   Ú_implementationÚNotImplementedErrorÚlistra   Ú_keysÚ_kwargsÚis_lastÚis_firstÚ
native_aggÚ	set_indexÚlenr   rM   Úcolumnsr=   )rS   rU   ÚnamesÚresultrX   rf   ÚmsgÚcolsÚselectro   rp   ra   rc   rd   s            @@@@@rF   Ú_getitem_aggszAggExpr._getitem_aggsm   s•  øøøøø€ ð
 Ô!ˆØ�;Š;‰=Œ=ð *	B˜T×7Ò7Ñ9Ô9ð *	BØÔ&×+Ò+Ñ-Ô-ˆF‰FØ�[Š[‰]Œ]ð (	BØ$Ô-×2Ò2Ñ4Ô4ˆMØÔ#×:Ò:Ñ<Ô<ˆBØ×*Ò*ØTÐTÐTÐTÐTÈeÐTÑTÔTñô ˆF‰Fð �\Š\‰^Œ^ð "	BØ Ô*ˆIØœŸš¨Ñ/Ô/Ð/�°EÒ9Ð9ðH¨ð Hð HØ(Ô8ðHð Hð Hð õ
 *¨#Ñ.Ô.Ð.å˜‘;”;ˆDØÔ%ˆFØ#œ>¨8Ô+;ˆLˆD�&ð ×1Ò1Ñ3Ô3ˆBØ×*Ò*ð	ð 	ð 	ð 	ð 	ð 	ð  $ð	ñ 	ô 	ñô ˆFˆFð �\Š\‰^Œ^ð 	B˜tŸ}š}™œð 	BØ&�T—_’_Ñ&Ô& xÔ'8Ð9R¸8¼>Ð9RÈEÐ9RÔ'SÑTÔTˆFØ×Ò˜Xœ^°TÐÑ:Ô:Ð:Ð:å!$ U¡¤¨q¢ �U˜1”X�Xµd¸5±k´kˆFØ&�T—_’_Ñ&Ô& xÔ'8¸Ô'@ÑAÔAˆFÝ# FÑ+Ô+ð 	*Ý! $¤,Ñ/Ô/ˆFŒNˆNàœ, qœ/ˆFŒKØˆrH   Úboolc                ó   — | j         dk    S )Nr‚   ©Ú	leaf_name©rS   s    rF   rs   zAggExpr.is_len¤   s   € ØŒ~ Ò&Ð&rH   c                ó   — | j         dk    S )Nr9   rŒ   rŽ   s    rF   r~   zAggExpr.is_last§   ó   € ØŒ~ Ò'Ð'rH   c                ó   — | j         dk    S )Nr8   rŒ   rŽ   s    rF   r   zAggExpr.is_firstª   s   € ØŒ~ Ò(Ð(rH   c                ó   — | j         dk    S )Nr*   rŒ   rŽ   s    rF   rx   zAggExpr.is_mode­   r�   rH   c                ó"   — | j         j        dk    S )Nr   )rK   Ú_depthrŽ   s    rF   rt   zAggExpr.is_top_level_function°   s   € àŒyÔ 1Ò$Ð$rH   r   c                ó   — | j         j        S ©N)rK   Ú_scalar_kwargsrŽ   s    rF   rp   zAggExpr.kwargs´   s   € àŒyÔ'Ð'rH   úNarwhalsAggregation | Anyc                ón   — | j         x}r|S t                                | j        ¦  «        | _         | j         S r–   )rR   rV   rK   )rS   r=   s     rF   r�   zAggExpr.leaf_name¸   s5   € à”?Ð"ˆ4ð 	ØˆKÝ+×6Ò6°t´yÑAÔAˆŒØŒÐrH   r5   c                óÂ   — t                                | j        ¦  «        }| j        t          v r!t	          dt          | j                 ¬¦  «        S t          |fi | j        ¤ŽS )z@Return a partial `DataFrameGroupBy` method, missing only `self`.r+   )Ún)rV   Ú_remap_expr_namer�   r:   r   rG   rp   )rS   Únative_names     rF   r€   zAggExpr.native_agg¿   sX   € å'×8Ò8¸¼ÑHÔHˆØŒ>Õ1Ð1Ð1Ý Õ)=¸d¼nÔ)MÐNÑNÔNÐNÝ˜;Ð6Ð6¨$¬+Ð6Ð6Ð6rH   N)rK   r   r@   rN   )rU   rV   r@   rJ   )rU   rV   r@   r\   )r@   rŠ   )r@   r   )r@   r˜   )r@   r5   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rT   r[   r‰   rs   r~   r   rx   rt   Úpropertyrp   r�   r€   rP   rH   rF   rJ   rJ   L   s;  € € € € € € ðð ð ÐÐÑØÐÐÑØÐÐÑð8ð 8ð 8ð 8ð
ð 
ð 
ð 
ð5ð 5ð 5ð 5ðn'ð 'ð 'ð 'ð(ð (ð (ð (ð)ð )ð )ð )ð(ð (ð (ð (ð%ð %ð %ð %ð ð(ð (ð (ñ „Xð(ð ðð ð ñ „Xðð7ð 7ð 7ð 7ð 7ð 7rH   rJ   c                  óþ   — e Zd ZU i dd“dd“dd“dd“dd“dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“Zded<   ded<   	 ded<   	 ded<   	 ded<   	 ed8d„¦   «         Zd9d&„Zd:d)„Zd;d-„Z	d<d0„Z
d=d2„Zd>d4„Zd?d6„Zd7S )@rV   r2   r'   r(   r&   r)   r*   r1   r3   r‚   r0   Ún_uniquer,   r#   r.   r"   r!   r8   r+   r9   z9ClassVar[Mapping[NarwhalsAggregation, NativeAggregation]]Ú_REMAP_AGGSútuple[str, ...]Ú_original_columnsz	list[str]r|   Ú_output_key_nameszMapping[str, bool]r}   r@   c                ó   — | j         S )z>Group keys to ignore when expanding multi-output aggregations.)Ú_excluderŽ   s    rF   rY   zPandasLikeGroupBy.excludeè   s   € ð Œ}ÐrH   rZ   r   ro   ú(Sequence[PandasLikeExpr] | Sequence[str]Údrop_null_keysrŠ   rN   c              óê  — t          |j        ¦  «        | _        || _        |                      ||¦  «        \  | _        | _        | _        g | j        ¢| j        ¢R | _        | j	        j
        }t          |j        j        ¦  «                             | j	        j        ¦  «        r|                     d¬¦  «        }dd|ddœ| _         |j        | j                             ¦   «         fi | j        ¤Ž| _        d S )NT)ÚdropF)ÚsortÚas_indexrB   Úobserved)Útuplerƒ   r¨   Ú_drop_null_keysÚ_parse_keysÚ_compliant_framer|   r©   r«   rX   ra   ÚsetÚindexr„   Úintersectionrk   r}   ri   Úcopyru   )rS   rZ   ro   r­   ra   s        rF   rT   zPandasLikeGroupBy.__init__í   sú   € õ "' r¤zÑ!2Ô!2ˆÔØ-ˆÔØDH×DTÒDTØ�ñE
ô E
ÑAˆÔ˜tœz¨4Ô+Að *P¨4¬:Ð)O¸Ô8NÐ)OÐ)OˆŒð ”Ô&ˆÝˆvŒ|Ô!Ñ"Ô"×/Ò/°´Ô0FÑGÔGð 	3Ø×'Ò'¨TÐ'Ñ2Ô2ˆFð ØØ$Øð	
ð 
ˆŒð (6 v¤~°d´j·o²oÑ6GÔ6GÐ'XÐ'XÈ4Ì<Ð'XÐ'XˆŒˆˆrH   Úexprsr   c                óŽ  — d}g }|D ]N}|                      t          |¦  «                             | ¦  «        ¦  «         |                      |¦  «        sd}ŒO|r�|rB| j                             ¦   «         }|                     |                      |¦  «        ¦  «        }n| j                             ¦   «          	                    t          | j        j        ¦  «        | j        ¬¦  «        }n4| j        j        j        rt!          ¦   «         ‚|                      |¦  «        }|                     d¬¦  «         |                      ||¦  «        S )NTF)rƒ   rq   )ÚappendrJ   r[   Ú
_is_simplerX   rv   rw   r‰   Ú__native_namespace__Ú	DataFramer{   ru   Úgroupsr|   ra   ÚemptyÚempty_results_errorÚ_apply_aggsrk   Ú_select_results)rS   r»   Úall_aggs_are_simpleÚ	agg_exprsrK   rc   r…   s          rF   ÚaggzPandasLikeGroupBy.agg	  sD  € Ø"ÐØ#%ˆ	Øð 	,ð 	,ˆDØ×Ò�W T™]œ]×<Ò<¸TÑBÔBÑCÔCÐCØ—?’? 4Ñ(Ô(ð ,Ø&+Ð#øàð 	-àð Ø”^×:Ò:Ñ<Ô<�Ø×.Ò.¨t×/AÒ/AÀ)Ñ/LÔ/LÑMÔM��àœ×<Ò<Ñ>Ô>×HÒHÝ˜œÔ-Ñ.Ô.¸¼
ð Iñ ô ��ð Œ^Ô"Ô(ð 	-Ý%Ñ'Ô'Ð'à×%Ò% eÑ,Ô,ˆFð 	×Ò 4ÐÑ(Ô(Ð(Ø×#Ò# F¨IÑ6Ô6Ð6rH   rÇ   úSequence[AggExpr]úpd.DataFramec               ó
  — t          j        d„ |D ¦   «         ¦  «        } | j                             |d¬¦  «        j        g | j        ¢|¢R Ž                      t          t          | j        | j	        ¦  «        ¦  «        ¦  «        S )zgResponsible for remapping temp column names back to original.

        See `ParseKeysGroupBy`.
        c              3  ó$   K  — | ]}|j         V — Œd S r–   )rM   )rb   Úes     rF   ú	<genexpr>z4PandasLikeGroupBy._select_results.<locals>.<genexpr>*  s$   è è € Ð'EÐ'E°a¨¬	Ð'EÐ'EÐ'EÐ'EÐ'EÐ'ErH   F)Úvalidate_column_names)
r   Úfrom_iterablerX   Ú_with_nativeÚsimple_selectr|   ÚrenameÚdictÚzipr©   )rS   rZ   rÇ   Ú	new_namess       rF   rÅ   z!PandasLikeGroupBy._select_results#  sŒ   € õ Ô'Ð'EÐ'E¸9Ð'EÑ'EÔ'EÑEÔEˆ	ðˆDŒN×'Ò'¨À%Ð'ÑHÔHÜð4Ø œJð4Ø)2ð4ð 4ð 4çŠV•D�˜TœZ¨Ô)?Ñ@Ô@ÑAÔAÑBÔBð	
rH   úIterable[AggExpr]ú#list[pd.DataFrame | pd.Series[Any]]c               ó    ‡ — ˆ fd„|D ¦   «         S )Nc                ó:   •— g | ]}|                      ‰¦  «        ‘ŒS rP   )r‰   )rb   rÍ   rS   s     €rF   re   z3PandasLikeGroupBy._getitem_aggs.<locals>.<listcomp>4  s%   ø€ Ð5Ð5Ð5¨!�—’ Ñ%Ô%Ð5Ð5Ð5rH   rP   )rS   r»   s   ` rF   r‰   zPandasLikeGroupBy._getitem_aggs1  s   ø€ ð 6Ð5Ð5Ð5¨uÐ5Ñ5Ô5Ð5rH   úIterable[PandasLikeExpr]c                ó   — t          ¦   «          | j        j        }|                      |¦  «        }| j        j        }|                     ¦   «         r%|                     ¦   «         dk    r ||d¬¦  «        S  ||¦  «        S )a"  Stub issue for `include_groups` [pandas-dev/pandas-stubs#1270].

        - [User guide] mentions `include_groups` 4 times without deprecation.
        - [`DataFrameGroupBy.apply`] doc says the default value of `True` is deprecated since `2.2.0`.
        - `False` is explicitly the only *non-deprecated* option, but entirely omitted since [pandas-dev/pandas-stubs#1268].

        [pandas-dev/pandas-stubs#1270]: https://github.com/pandas-dev/pandas-stubs/issues/1270
        [User guide]: https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html
        [`DataFrameGroupBy.apply`]: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.DataFrameGroupBy.apply.html
        [pandas-dev/pandas-stubs#1268]: https://github.com/pandas-dev/pandas-stubs/pull/1268
        )é   rÝ   F)Úinclude_groups)Úwarn_complex_group_byrX   ry   Ú_apply_exprs_functionru   ÚapplyÚ	is_pandasÚ_backend_version)rS   r»   ÚimplÚfuncrá   s        rF   rÄ   zPandasLikeGroupBy._apply_aggs6  s‚   € õ 	ÑÔÐØŒ~Ô-ˆØ×)Ò)¨%Ñ0Ô0ˆØ”Ô#ˆØ�>Š>ÑÔð 	5 × 5Ò 5Ñ 7Ô 7¸6Ò AÐ AØ�5˜¨eÐ4Ñ4Ô4Ð4Øˆu�T‰{Œ{ÐrH   r   c                ój   ‡ ‡‡‡— ‰ j                              ¦   «         Š‰j        j        Šdˆˆˆˆ fd„}|S )NrZ   rÊ   r@   úpd.Series[Any]c                ó    •‡— ‰j                              | ¦  «        Šˆfd„‰D ¦   «         }|r	t          |Ž ng g f\  }} ‰||‰¬¦  «        j        S )Nc              3  óf   •K  — | ]+} |‰¦  «        D ]}|j         j        d          |j        fV — ŒŒ,dS )r   N)ra   Úilocr=   )rb   rK   ro   rX   s      €rF   rÎ   zFPandasLikeGroupBy._apply_exprs_function.<locals>.fn.<locals>.<genexpr>P  sg   øè è € ð ð àØ ˜D ™OœOðð ð ð ”Ô! !Ô$ d¤iÐ0ðð ð ð ð ð ð rH   )r¸   Úcontext)rX   rÑ   r   ra   )	rZ   ÚresultsÚ	out_groupÚ	out_namesrX   r»   Úinto_seriesrc   rS   s	       @€€€€rF   Úfnz3PandasLikeGroupBy._apply_exprs_function.<locals>.fnN  s{   øø€ Øœ×3Ò3°BÑ7Ô7ˆIðð ð ð à!ðñ ô ˆGð
 <CÐ#P¥:¨wÐ#7Ð#7ÈÈRÈÑ ˆI�yØ�;˜y°	À2ÐFÑFÔFÔMÐMrH   )rZ   rÊ   r@   rç   )rX   rv   Ú_seriesrÐ   )rS   r»   rð   rï   rc   s   `` @@rF   rà   z'PandasLikeGroupBy._apply_exprs_functionJ  s`   øøøø€ ØŒ^×2Ò2Ñ4Ô4ˆØ”jÔ.ˆð	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð ˆ	rH   ú)Iterator[tuple[Any, PandasLikeDataFrame]]c              #  ó  K  — t          j        ¦   «         5  t          j        ddt          ¬¦  «         | j        j        }| j        D ]!\  }}|  ||¦  «        j        | j        Ž fV — Œ"	 d d d ¦  «         d S # 1 swxY w Y   d S )NÚignorez#.*a length 1 tuple will be returned)ÚmessageÚcategory)	ÚwarningsÚcatch_warningsÚfilterwarningsÚFutureWarningrX   rÑ   ru   rÒ   r¨   )rS   Úwith_nativeÚkeyÚgroups       rF   Ú__iter__zPandasLikeGroupBy.__iter__Z  s  è è € ÝÔ$Ñ&Ô&ð 	Wð 	WÝÔ#ØØ=Ý&ðñ ô ð ð
 œ.Ô5ˆKØ"œmð Wð W‘
��UØÐ<˜K˜K¨Ñ.Ô.Ô<¸dÔ>TÐUÐVÐVÐVÐVÐVðWð	Wð 	Wð 	Wñ 	Wô 	Wð 	Wð 	Wð 	Wð 	Wð 	Wð 	Wð 	Wøøøð 	Wð 	Wð 	Wð 	Wð 	Wð 	Ws   –AA6Á6A:Á=A:N)r@   r§   )rZ   r   ro   r¬   r­   rŠ   r@   rN   )r»   r   r@   r   )rÇ   rÉ   rZ   rÊ   r@   r   )r»   r×   r@   rØ   )r»   rÛ   r@   rÊ   )r»   rÛ   r@   r   )r@   rò   )rž   rŸ   r    r¦   r¢   r£   rY   rT   rÈ   rÅ   r‰   rÄ   rà   rþ   rP   rH   rF   rV   rV   Ç   sð  € € € € € € ðNØˆuðNà�ðNð 	�(ðNð 	ˆuð	Nð
 	ˆuðNð 	�ðNð 	ˆuðNð 	ˆuðNð 	ˆvðNð 	�IðNð 	�ðNð 	�JðNð 	ˆuðNð 	ˆuðNð 	�ðNð  	�ð!N€Kð ð ð ñ ð$ 'Ð&Ð&Ñ&ØEàÐÐÑØOà Ð Ð Ñ Ø8àÐÐÑØKàðð ð ñ „XððYð Yð Yð Yð87ð 7ð 7ð 7ð4
ð 
ð 
ð 
ð6ð 6ð 6ð 6ð
ð ð ð ð(ð ð ð ð 	Wð 	Wð 	Wð 	Wð 	Wð 	WrH   rV   r   r   Ú
ValueErrorc                 ó$   — d} t          | ¦  «        S )zJDon't even attempt this, it's way too inconsistent across pandas versions.au  No results for group-by aggregation.

Hint: you were probably trying to apply a non-elementary aggregation with a pandas-like API.
Please rewrite your query such that group-by aggregations are elementary. For example, instead of:

    df.group_by('a').agg(nw.col('b').round(2).mean())

use:

    df.with_columns(nw.col('b').round(2)).group_by('a').agg(nw.col('b').mean())

)rÿ   )r†   s    rF   rÃ   rÃ   f  s   € ð	^ð õ �c‰?Œ?ÐrH   rN   c                 ó0   — t          dt          ¦  «         d S )Na)  Found complex group-by expression, which can't be expressed efficiently with the pandas API. If you can, please rewrite your query such that group-by aggregations are simple (e.g. mean, std, min, max, ...). 

Please see: https://narwhals-dev.github.io/narwhals/concepts/improve_group_by_operation/)r   ÚUserWarningrP   rH   rF   rß   rß   u  s)   € Ýð	Wõ
 	ñô ð ð ð rH   )r=   r4   r>   r?   r@   r5   )r@   rÿ   )r@   rN   ):Ú
__future__r   r÷   Ú	functoolsr   Ú	itertoolsr   Úoperatorr   Útypingr   r   r	   r
   Únarwhals._compliantr   Únarwhals._exceptionsr   Únarwhals._expression_parsingr   Únarwhals._utilsr   Únarwhals.dependenciesr   Úcollections.abcr   r   r   r   r   ÚpandasÚpdÚpandas.api.typingr   Ú_NativeGroupByÚtyping_extensionsr   r   Únarwhals._compliant.typingr   r   Únarwhals._pandas_like.dataframer   Únarwhals._pandas_like.exprr   r   r¢   r   r    r4   r5   r6   r:   rG   rJ   rV   rÃ   rß   rP   rH   rF   ú<module>r     sL  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .Ø JÐ JÐ JÐ JÐ JÐ JØ &Ð &Ð &Ð &Ð &Ð &Ø :Ð :Ð :Ð :Ð :Ð :àð PØOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOàÐÐÐØDÐDÐDÐDÐDÐDØ3Ð3Ð3Ð3Ð3Ð3Ð3Ð3àLÐLÐLÐLÐLÐLÐLÐLØCÐCÐCÐCÐCÐCØ9Ð9Ð9Ð9Ð9Ð9àO€MÐOÐOÐOÑOàC€Ð CÐ CÐ CÑ CØ*1°-Ô*@Ð Ð @Ð @Ð @Ñ @Ø&Ø	Ø	ØØØØ	Ø
ØØ	Ø
Ø	ØØ
ØØ	Ø
Ø	Ø	Ø	Ø ð'"ô Ð ð ð ð ñ ð, hàH€
Ð HÐ HÐ HÑ HØ @ð  €Ð Ð Ð Ñ Ø 6ð ØðFð FÐ ð ð ð ñ ð €�2ÐÑÔð&ð &ð &ñ Ôð&ðx7ð x7ð x7ð x7ð x7ñ x7ô x7ð x7ðv\Wð \Wð \Wð \Wð \WØÐ&Ð(8Ð:KÐKÔLñ\Wô \Wð \Wð~ð ð ð ðð ð ð ð ð rH   