
    h$                    6   % S SK Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S S	KJ
r
  S S
KJr  S SKJr  S SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ r   S SK!J"r"  S SK!J#r#  S SK$J%r%  S SK$J&r&  S SK$J'r'  S S K$J(r(  S S!K$J)r)  S S"K$J*r*  S S#K$J+r+  S S$K$J,r,  S S%K$J-r-  S S&K$J.r.  \(       a  S S'K/J0r0  S S(K1J2r2  S S)K3J4r4  S SK5r6S SK7r8S S*K9J:r:  S S+K9J;r;  S S,K9J<r<  S S-K=J>r>  S S.K?J@r@  S S/KAJBrB  S S0KCJDrD  S S1KEJFrF  S S2KGJHrH  S S3KIJJrJ  S S4KIJKrK  S S5KIJLrL  S S6KIJMrM  S S7KIJNrN  S S8KIJOrO  S S9KIJPrP  S S:KIJQrQ  S S;KIJRrR  S S<KIJSrS  S S=KIJTrT  S S>KIJUrU  S S?KIJVrV  S S@K$JWrW  S SAK$JXrX  \SB\6R                  4   rZSC\[SD'   \\" \R                  " SE5      \R                  " SF5      \R                  " SG5      \R                  " SH5      \R                  " SI5      \R                  " SJ5      \R                  " SK5      \R                  " SL5      \R                  " SM5      \R                  " SN5      \R                  " SO5      \R                  " SP5      \R                  " SQ5      \R                  " SR5      \R                  " SS5      \R                  " ST5      \R                  " SU5      \R                  " SV5      \R                  " SW5      \R                  " SX5      /5      r^SY\[SZ'    " S[ S\\S]   5      r_g)^    )annotations)TYPE_CHECKING)Any)Callable)Iterable)Iterator)Literal)Mapping)Sequence)cast)overloadN)EagerDataFrame)PANDAS_TO_NUMPY_DTYPE_MISSING)PandasLikeSeries)align_and_extract_native)align_series_full_broadcast)check_column_names_are_uniqueget_dtype_backend)native_to_narwhals_dtype)object_native_to_narwhals_dtype)pivot_table)rename)select_columns_by_name)	set_indexis_pandas_like_dataframe)InvalidOperationError
ShapeError)Implementation)_into_arrow_table)_remap_full_join_keys)check_column_exists)generate_temporary_column_name)import_dtypes_module)parse_columns_to_dropparse_version)scale_bytes)validate_backend_version)BytesIO)Path)
ModuleType)Self)	TypeAlias)TypeIs)PandasLikeExprPandasLikeGroupByPandasLikeNamespace)IntoArrowTable)DTypeSchema)AsofJoinStrategy)CompliantDataFrame)CompliantLazyFrame)DTypeBackend)JoinStrategy)PivotAgg)SizedMultiIndexSelector)SizedMultiNameSelector)SizeUnit)UniqueKeepStrategy)_2DArray)_SliceIndex)
_SliceName)Version)_FullContext.r0   Constructorfloat64float32int64int32int16int8uint64uint32uint16uint8boolzdatetime64[s]zdatetime64[ms]zdatetime64[us]zdatetime64[ns]ztimedelta64[s]ztimedelta64[ms]ztimedelta64[us]ztimedelta64[ns]objectzfrozenset[np.dtype[Any]]CLASSICAL_NUMPY_DTYPESc                     \ rS rSr            SMS jr\SNS j5       r\        SOS j5       r\SPS j5       r	\SQS j5       r
\        SRS j5       rSSS jrSSS	 jrSTS
 jrSUS jrSVS jrSWS jrSS.SXS jjrSYS jrSZS jrS[SS.S\S jjjrS]S jrS^S jrS_S jrS`S jr    SaS jr    SbS jr\ScS j5       r\    SdS j5       r\    SeS j5       r\    SfS j5       rSfS  jrSgS! jr \ r!      ShS" jr"\SiS# j5       r#SiS$ jr$SjS% jr%SkS& jr&      SlS' jr'SmS( jr(SnS) jr)SoS* jr*      SpS+ jr+      SkS, jr,SqS- jr-SrS. jr.        SsS/ jr/      StS0 jr0SuS1 jr1            SvS2 jr2                SwS3 jr3SxS4 jr4SxS5 jr5SS6.       SyS7 jjr6SS8.   SzS9 jjr7\S{S: j5       r8S|S; jr9S[SS.S\S< jjjr:S}S= jr;S~S> jr<SS? jr=\SS@ j5       r>\SSA j5       r>SSB jr>SSC jr?SSD jr@SSSE jrASSF jrB              SSG jrCSSH jrD          SSI jrE          SSJ jrFSSK jrGSLrHg)PandasLikeDataFramei   c                   Xl         X l        X0l        X@l        [	        U R                  U R                  5        U(       a  [        UR                  5        g g N)_native_frame_implementation_backend_version_versionr+   r   columns)selfnative_dataframeimplementationbackend_versionversionvalidate_column_namess         Q/var/www/html/env/lib/python3.13/site-packages/narwhals/_pandas_like/dataframe.py__init__PandasLikeDataFrame.__init__l   sH     .- / !5!5t7L7LM )*:*B*BC !    c              z   UR                   n[        X5      nUR                  5       (       a  UR                  5       nOpUR	                  5       (       a  SSKJn  U" U5      nOLUR                  5       (       a*  UR                  5       R                  R                  U5      nOSn[        U5      eU R                  XRS9$ )Nr   )
from_arrowzCcongratulations, you entered unreachable code - please report a bugcontext)r^   r"   	is_pandas	to_pandasis_modinmodin.pandas.utilsrm   is_cudfto_native_namespace	DataFrameAssertionErrorfrom_native)clsdataro   rd   tblnativempd_from_arrowmsgs           rh   rm   PandasLikeDataFrame.from_arrow}   s     00.##%%]]_F$$&&G#C(F##%%#779CCNNsSFWC %%v77rk   c              *  ^ SSK Jn  UR                  mTR                  5       n[	        SUR
                  5      n[	        SUR                  5      n0 nS n	UR                  5        HJ  u  p[        X5      (       a1  [        R                  " XS9nU	c  Un	XU
'   M4  [        X5      S   X'   MF  XU
'   ML     UR                  U5      nU(       a<  U4S jUR                   5       nUR                  U" U5      R                  U5      5      nU R                  XS9$ )Nr   r9   ztype[pd.Series[Any]]ztype[pd.DataFrame]rn      c              3  <   >#    U  H  n[        UT5      v   M     g 7fr\   r   ).0dtyperd   s     rh   	<genexpr>0PandasLikeDataFrame.from_dict.<locals>.<genexpr>   s      *FSU!%88m   )narwhals.schemar:   r^   ru   r   Seriesrv   items
isinstancer   rx   r   	from_dictdtypesastyperq   )ry   rz   ro   schemar:   nsr   rv   aligned_data	left_mostnameseries	compliantr|   itrd   s                  @rh   r   PandasLikeDataFrame.from_dict   s     	+ 00//1,bii8-r||<	8:-1	 JJLLD&)),88Q	$ )I)/&)A))WXY)ZL&%+T" ) $$\2*FLmm*B ]]6&>#;#;B#?@Fv77rk   c                    [        U 5      $ r\   r   )objs    rh   
_is_nativePandasLikeDataFrame._is_native   s    ',,rk   c              R    U " UUR                   UR                  UR                  SS9$ )NTrd   re   rf   rg   )r^   r_   r`   )ry   rz   ro   s      rh   rx   PandasLikeDataFrame.from_native   s0    "22#44$$"&
 	
rk   c              x  ^ SSK Jn  UR                  mTR                  5       R                  n[        U[        U45      (       aS  U4S jUR                  5        5       nU" XR                  5       S9R                  U" U5      R                  U5      5      nOU" XR                  X5      S9nU R                  XrS9$ )Nr   r9   c              3  <   >#    U  H  n[        UT5      v   M     g 7fr\   r   )r   native_typerd   s     rh   r   1PandasLikeDataFrame.from_numpy.<locals>.<genexpr>   s"      *#2K "+~>>#2r   ra   rn   )r   r:   r^   ru   rv   r   r
   valueskeysr   rq   _numpy_column_namesrx   )	ry   rz   ro   r   r:   rv   r   r|   rd   s	           @rh   
from_numpyPandasLikeDataFrame.from_numpy   s     	+ 00!/!C!C!E!O!O	fw/00*#)==?*B t[[];BBv((,F t-D-DT-RSFv77rk   c                    U $ r\    rb   s    rh   __narwhals_dataframe__*PandasLikeDataFrame.__narwhals_dataframe__       rk   c                    U $ r\   r   r   s    rh   __narwhals_lazyframe__*PandasLikeDataFrame.__narwhals_lazyframe__   r   rk   c                Z    SSK Jn  U" U R                  U R                  U R                  S9$ )Nr   r5   )rf   )narwhals._pandas_like.namespacer6   r^   r_   r`   )rb   r6   s     rh   __narwhals_namespace__*PandasLikeDataFrame.__narwhals_namespace__   s)    G"  $"7"7
 	
rk   c                    U R                   [        R                  [        R                  [        R                  1;   a  U R                   R                  5       $ S[        U R                   5       3n[        U5      e)Nz!Expected pandas/modin/cudf, got: )r^   r!   PANDASMODINCUDFru   typerw   rb   r~   s     rh   __native_namespace__(PandasLikeDataFrame.__native_namespace__   sj    !!  $
 

 '';;==1$t7K7K2L1MNS!!rk   c                ,    [        U R                  5      $ r\   )lenr|   r   s    rh   __len__PandasLikeDataFrame.__len__   s    4;;rk   c                d    U R                  U R                  U R                  U R                  USS9$ )NFr   )	__class__r|   r^   r_   )rb   rf   s     rh   _with_version!PandasLikeDataFrame._with_version   s7    ~~KK// 11"'  
 	
rk   Trg   c               d    U R                  UU R                  U R                  U R                  US9$ )Nr   )r   r^   r_   r`   )rb   dfrg   s      rh   _with_native PandasLikeDataFrame._with_native   s7    ~~// 11MM"7  
 	
rk   c                   U R                   R                  nUR                  (       a>  UR                   n[        U5      " UR                  S   X#R
                  UR                  S9$ [        U5      =n[        U5      =n:w  a  SU SU S3n[        U5      eUR                   R                  ULa*  [        UR                   UUR                  UR                  S9$ UR                   $ )Nr   )indexr   r   zExpected object of length z, got: .)rd   re   )r|   r   
_broadcastr   ilocr   r   r   r    r   r^   r_   )rb   otherr   s	len_otherlen_idxr~   s          rh   _extract_comparand&PandasLikeDataFrame._extract_comparand  s    !!A7166!9EqvvNNU#ICJ)>?.wiwykKCS/!<<U*$44 % 6 6	  ||rk   c                F    [         R                  " U R                  U   U S9$ Nrn   )r   rx   r|   )rb   r   s     rh   
get_columnPandasLikeDataFrame.get_column  s    ++DKK,=tLLrk   Ncopyc                    U R                  XS9$ )Nr   r   )to_numpy)rb   r   r   s      rh   	__array__PandasLikeDataFrame.__array__  s    }}5}44rk   c                    [        U[        5      (       a  [        U5      OUnU R                  U R                  R
                  US S 24   5      $ r\   r   tuplelistr   r|   r   )rb   rowsr   s      rh   _gatherPandasLikeDataFrame._gather  s=    (u55T
4  !1!1%(!;<<rk   c                    U R                  U R                  R                  [        UR                  UR
                  UR                  5      S S 24   SS9$ NFr   )r   r|   r   slicestartstopstep)rb   r   s     rh   _gather_slice!PandasLikeDataFrame._gather_slice!  sI      KKU4::tyy$))DaGH"' ! 
 	
rk   c                   UR                   b/  U R                  R                  R                  UR                   5      OS nUR                  b2  U R                  R                  R                  UR                  5      S-   OS n[        X#UR                  5      nU R                  U R                  R                  S S 2U4   SS9$ )Nr   Fr   )	r   r|   ra   get_locr   r   r   r   r   )rb   ra   r   r   selectors        rh   _select_slice_name&PandasLikeDataFrame._select_slice_name'  s     }}( KK''6 	 ||' KK''59 	
 gll3  KKQ[) ! 
 	
rk   c                X    U R                  U R                  R                  S S 2U4   SS9$ r   r   r|   r   rb   ra   s     rh   _select_slice_index'PandasLikeDataFrame._select_slice_index7  s2      KKQZ( ! 
 	
rk   c                    [        U[        5      (       a  [        U5      OUnU R                  U R                  R
                  S S 2U4   SS9$ r   r   r   s     rh   _select_multi_index'PandasLikeDataFrame._select_multi_index<  sK     $.gu#=#=$w-7  KKQZ( ! 
 	
rk   c                Z    U R                  U R                  R                  S S 2U4   5      $ r\   )r   r|   locr   s     rh   _select_multi_name&PandasLikeDataFrame._select_multi_nameD  s&       G!<==rk   c                J    U R                   R                  R                  5       $ r\   )r|   ra   tolistr   s    rh   ra   PandasLikeDataFrame.columnsJ  s    {{""))++rk   c                   g r\   r   rb   nameds     rh   r   PandasLikeDataFrame.rowsN  s    
  #rk   c                   g r\   r   r  s     rh   r   r  U  s    
 !$rk   c                   g r\   r   r  s     rh   r   r  \  s    
 8;rk   c               :   U(       dw  U R                   [        R                  L a7  U R                  SS9 Vs/ s H  n[	        UR                  5       5      PM     sn$ [        U R                  R                  SS S95      $ U R                  R                  SS9$ s  snf )NT)r  Fr   r   recordsorient)
r^   r!   r   r   r   r   r   r|   
itertuplesto_dict)rb   r  rows      rh   r   r  c  s    ##~':'::7;yyty7LM7Lcjjl+7LMM..U.FGG{{"")"44	 Ns   #Bc              #  ~   #    U R                   R                  5        H  u  p[        R                  " X S9v   M     g 7fr   )r|   r   r   rx   )rb   _namer   s      rh   iter_columns PandasLikeDataFrame.iter_columnsn  s/     ![[..0ME"..vDD 1s   ;=c             #     #    U(       d#  U R                   R                  SS S9 S h  vN   g U R                   R                  nU R                   R                  SS9 H  n[        [	        X45      5      v   M     g  NR7f)NFr  r   )r|   r  ra   dictzip)rb   r  buffer_size	col_namesr  s        rh   	iter_rowsPandasLikeDataFrame.iter_rowst  sh      {{--E-EEE++I{{--E-:3y.// ; Fs   %A<A:AA<c           	     6   U R                   R                  nU R                   R                   Vs0 s H]  nUX   S:w  a#  [        X   U R                  U R
                  5      O-[        U R                   U   U R                  U R
                  5      _M_     sn$ s  snf )NrV   )r|   r   ra   r   r`   r^   r   )rb   native_dtypescols      rh   r   PandasLikeDataFrame.schema  s    ** {{**	
 +  !X- *"DMM43G3G 1C $--1E1E	 +	
 		
 	
s   A$Bc                    U R                   $ r\   )r   r   s    rh   collect_schema"PandasLikeDataFrame.collect_schema  s    {{rk   c                    U R                  [        U R                  [        U5      U R                  U R
                  5      SS9$ r   )r   r   r|   r   r_   r^   )rb   column_namess     rh   simple_select!PandasLikeDataFrame.simple_select  sH      "\"%%$$	 #( ! 
 	
rk   c                .   U R                   " U6 nU(       d(  U R                  U R                  R                  5       SS9$ [	        U6 nU R                  5       nUR                  U Vs/ s H  oDR                  PM     sn5      nU R                  USS9$ s  snf )NFr   T)_evaluate_into_exprsr   r|   r   r   r   _concat_horizontal)rb   exprs
new_series	namespacer   r   s         rh   selectPandasLikeDataFrame.select  s    ..6
$$T[[%:%:%<TY$ZZ0*=
//1	))Z*HZ88Z*HI  4 @@ +Is   &Bc                    Uc'  U R                  U R                  R                  SS9SS9$ U R                  5       nU R	                  UR                  UR                  " U6 R                  5       5      ) 5      $ )Nr   axisFr   )r   r|   dropnar   filterany_horizontalr   is_null)rb   subsetplxs      rh   
drop_nullsPandasLikeDataFrame.drop_nulls  sw     >$$"""*% %   ))+{{C..sww/?/G/G/IJJKKrk   c                b    U R                   R                  SS9R                  5       n[        X!S9$ )NT)deep)unit)r|   memory_usagesumr*   )rb   r>  szs      rh   estimated_size"PandasLikeDataFrame.estimated_size  s-    [[%%4%04462))rk   c                   U R                   nU R                  5       nUR                  R                  [	        [        U5      5      XR                  S9R                  U5      nU R                  UR                  UR                   U/5      5      $ )N)ro   r   )
r|   r   _seriesfrom_iterableranger   r   aliasr   r+  )rb   r   framer.  	row_indexs        rh   with_row_index"PandasLikeDataFrame.with_row_index  s|    //1	%%33#e*t;; 4 

%+ 	   !=!=y?O?OQV>W!XYYrk   c                T    [        S U R                  R                  U    5       5      $ )Nc              3  $   #    U  H  ov   M     g 7fr\   r   )r   xs     rh   r   *PandasLikeDataFrame.row.<locals>.<genexpr>  s     8 71Q 7s   )r   r|   r   )rb   r   s     rh   r  PandasLikeDataFrame.row  s"    8 0 0 7888rk   c                    [        U[        5      (       a  UnO%U R                  U5      S   nU R                  U5      nU R	                  U R
                  R                  U   SS9$ )Nr   Fr   )r   r   r*  r   r   r|   r   )rb   	predicatemask_nativemasks       rh   r5  PandasLikeDataFrame.filter  sg     i&&7@K ,,Y7:D11$7K  KKOOK( ! 
 	
rk   c                  ^  T R                   " U6 nU(       d  [        T 5      S:X  a  T $ U Vs0 s H  o3R                  U_M     nn/ nT R                  R                   HI  nXd;   a!  T R                  UR                  U5      5      nOT R                  U   nUR                  U5        MK     UR                  U 4S jUR                  5        5       5        T R                  5       nUR                  U5      n	T R                  U	SS9$ s  snf )Nr   c              3  F   >#    U  H  nTR                  U5      v   M     g 7fr\   )r   )r   r   rb   s     rh   r   3PandasLikeDataFrame.with_columns.<locals>.<genexpr>  s!     S=R0033=Rs   !Fr   )r*  r   r   r|   ra   r   popappendextendr   r   r+  r   )
rb   r,  ra   r   name_columns	to_concatr   r   r.  r   s
   `         rh   with_columns PandasLikeDataFrame.with_columns  s     ++U33t9>KHO4P1VVQY4P	KK''D#001A1A$1GHT*V$ ( 	S\=P=P=RSS//1	)))4  5 AA 5Qs   Dc           	     t    U R                  [        U R                  UU R                  U R                  S95      $ )Nra   rd   re   )r   r   r|   r^   r_   )rb   mappings     rh   r   PandasLikeDataFrame.rename  s9      #33 $ 5 5	
 	
rk   c               d    [        XUS9nU R                  U R                  R                  US9SS9$ )N)compliant_framera   strictr   Fr   )r'   r   r|   drop)rb   ra   rg  to_drops       rh   rh  PandasLikeDataFrame.drop  sB    ' &
   KKW-U ! 
 	
rk   c                   U R                   n[        U[        5      (       a  U(       + nOU Vs/ s H	  of(       + PM     nnU(       a  SOSnU R                  UR	                  [        U5      XWS9SS9$ s  snf )Nlastfirst)	ascendingna_positionFr   )r|   r   rU   r   sort_valuesr   )rb   
descending
nulls_lastbyr   rn  dro  s           rh   sortPandasLikeDataFrame.sort  sr     [[j$''/9>I(23
1
I3 *f  NN48yNR"' ! 
 	
 4s   A2c                R   Uc5  [        U R                  U R                  U R                  U R                  SS9$ U[
        R                  L a@  SS Kn[        U R                  5       [
        R                  [        U5      U R                  SS9$ U[
        R                  L a4  SS KnSSKJn  U" U R                  5       [        U5      U R                  SS9$ U[
        R                  L a3  SS KnSSKJn  U" U R'                  5       [        U5      U R                  S9$ SU 3n[)        U5      e)	NFr   r   )ArrowDataFrame)rc   re   rf   rg   )PolarsDataFramer   re   rf   zUnsupported `backend` value: )rY   r|   r^   r_   r`   r!   r   pandasrq   r)   PYARROWpyarrownarwhals._arrow.dataframerx  to_arrowPOLARSpolarsnarwhals._polars.dataframery  	to_polars
ValueError)	rb   backendkwargspdparx  plry  r~   s	            rh   collectPandasLikeDataFrame.collect	  s   
 ?&#33 $ 5 5&+  n+++& -44 -b 1&+  n,,, @!!% -b 1&+	  n+++B">># -b 1  .gY7ork   c                   SSK Jn  U" XUS9$ )Nr   r3   )drop_null_keys)narwhals._pandas_like.group_byr4   )rb   r  r   r4   s       rh   group_byPandasLikeDataFrame.group_by=  s    D NKKrk   c          
     4	  ^ US:X  Ga(  U R                   [        R                  L dJ  U R                   [        R                  L d-  U R                   [        R                  L a  U R
                  S:  a  [        S/ U R                  QUR                  QS9nU R                  U R                  R                  " S0 US0D6R                  UR                  R                  " S0 US0D6SUUSU4S9R                  US	95      $ U R                  U R                  R                  UR                  SSU4S
95      $ US:X  Ga@  U R                   [        R                  L a4  U R                  U R                  R                  UR                  SX4S95      $ [        S/ U R                  QUR                  QS9mUc  Sn[        U5      e[        [        UR                  [!        U5      U R
                  U R                   5      [#        [%        XC5      5      U R                   U R
                  S9R'                  5       nU R                  U R                  R                  USTUUS9R(                  U4S j   R                  TS	95      $ US:X  a  Uc  Sn[        U5      e[        [        UR                  [!        U5      U R
                  U R                   5      [#        [%        XC5      5      U R                   U R
                  S9R'                  5       nU R                  U R                  R                  USX3S95      $ US:X  a  U R                  R                  UR                  SUUSU4S9n	/ n
[%        X45       HH  u  pX:w  a"  XR                  ;  a  U
R+                  U5        M,  X:w  d  M3  U
R+                  U U 35        MJ     U R                  U	R                  U
S	95      $ US:X  a  Uc   eUc   e[-        X4U5      nUR                  R                  US	9n[/        UR                  5        [!        UR1                  5       5      nU R                  U R                  R                  UUUSSU4S95      $ U R                  U R                  R                  UR                  UUUSU4S95      $ )Ncross)r         )n_bytesra   r   inner )howleft_onright_onsuffixesr   )r  r  antileftanti)r  r  r  z(`right_on` cannot be `None` in anti-joinrb  outer)r  	indicatorr  r  c                   > U T   S:H  $ )N	left_onlyr   )tindicator_tokens    rh   <lambda>*PandasLikeDataFrame.join.<locals>.<lambda>  s    1_#5#Drk   semiz(`right_on` cannot be `None` in semi-joinleftfull)r  r  r  r  r   )r^   r!   r   r   r   r_   r%   ra   r   r|   assignmergerh  	TypeErrorr   r   r   r  r  drop_duplicatesr   r[  r#   r   r   )rb   r   r  r  r  suffix	key_tokenr~   other_nativeresult_nativeextraleft_key	right_keyright_on_mapperr  s                 @rh   joinPandasLikeDataFrame.joinB  s    '>$$(<(<<''>+>+>>$$(=(==))F2:'F'F'F	 ((KK&&8)Q8U++=y!n=# )!*"$f   T)T,
 
 ((KK%%ell2v,%W  &=##~':'::((KK%%*g &   #A'F'F'F# #DC#C.(  &*X--,,	 !X!78#'#7#7$($9$9
  "/#  ((KK%%$#"1 '!( &  SDF T/T2
 
 &=@n$ *X--,,	 !X!78#'#7#7$($9$9
 "/#  $$!! gw "   &= KK--!f . M E'*7'=#(Yll-JLL+*LLI;vh!78	 (>
 $$]%7%7%7%FGG&= &&&'''3GvNO <<...GL),*>*>?O2245H$$!! #% &\ "     KK!f  
 	
rk   c                   U R                  5       nU R                  UR                  U R                  UR                  UUUUUSU4S95      $ )Nr  )r  r  left_byright_by	directionr  )r   r   
merge_asofr|   )	rb   r   r  r  by_leftby_rightstrategyr  r9  s	            rh   	join_asofPandasLikeDataFrame.join_asof  sZ     '')  NN!!"f  	
 	
rk   c                T    U R                  U R                  R                  U5      SS9$ r   )r   r|   headrb   ns     rh   r  PandasLikeDataFrame.head  '      !1!1!!4E RRrk   c                T    U R                  U R                  R                  U5      SS9$ r   )r   r|   tailr  s     rh   r  PandasLikeDataFrame.tail  r  rk   )maintain_orderc                   SSS.R                  X"5      n[        U R                  U5        U R                  U R                  R                  XS9SS9$ )NFrm  )noneany)r8  keepr   )getr$   ra   r   r|   r  )rb   r8  r  r  mapped_keeps        rh   uniquePandasLikeDataFrame.unique  sW      %W599$EDLL&1  KK''v'H"' ! 
 	
rk   )r  c                  SSK Jn  U R                  5       nUc  U $ U[        R                  L a1  SS KnSSKJn  U" UR                  S5      U" U5      U R                  S9$ U[        R                  L a@  SS KnSSKJn  U" UR                  " U5      R                  5       U" U5      U R                  S9$ U[        R                   L a7  SS KnSS KJn	  SSKJn
  U
" U	R                  U5      U" U5      U R                  S9$ [,        e)	Nr   r(   )DuckDBLazyFrame	pandas_dfrz  )PolarsLazyFrame)DaskLazyFrame)rc   re   rf   )narwhals.utilsr)   rq   r!   DUCKDBduckdbnarwhals._duckdb.dataframer  tabler`   r  r  r  r  from_pandaslazyDASKdaskdask.dataframe	dataframenarwhals._dask.dataframer  rw   )rb   r  r)   r  r  r  r  r  r  ddr  s              rh   r  PandasLikeDataFrame.lazy  s     	1NN$	?K---B"<<, -f 5 
 ---B">>),113 -b 1 
 +++'> !#	!: -d 3 
 rk   c                .    U R                   R                  $ r\   )r|   shaper   s    rh   r  PandasLikeDataFrame.shape0  s    {{   rk   c          	         U(       a>  U R                    Vs0 s H&  nU[        R                  " U R                  U   U S9_M(     sn$ U R                  R	                  SS9$ s  snf )Nrn   r   r  )ra   r   rx   r|   r  )rb   	as_seriesr   s      rh   r  PandasLikeDataFrame.to_dict4  sf      <<'C %11$++c2BDQQ'  {{""&"11	s   -Ac               &   U R                   R                  nUc  U R                  [        R                  L nUR                  [        5      R                  5       (       a5  Ub  U R                   R                  XS9$ U R                   R                  US9$ [        U R                  5      nU R                  R                  5        VVs/ s H'  u  pVXdR                  :X  d  M  UR                  c  M%  UPM)     nnnU(       ai  U R                  U R!                  5       R"                  " U6 R$                  R'                  S5      R$                  R)                  S 5      5      R                   nOU R                   nUb  UR                  XS9$ U Ho  n	[+        U	5      [,        ;   d  M  SS Kn
U
R0                  " U R2                   Vs/ s H)  nU R5                  U5      R                  US S9S S 2S 4   PM+     sn5      nUs  $    UR                  US9$ s  snnf s  snf )Nr   r   UTCr   )r   r   )r|   r   r^   r!   r   isinrW   allr   r&   r`   r   r   Datetime	time_zoner_  r   r   dtconvert_time_zonereplace_time_zonestrr   numpyhstackra   r   )rb   r   r   r  r   keyval
to_convertr   	col_dtypenpr   arrs                rh   r   PandasLikeDataFrame.to_numpy<  s   **<''>+>+>>D4599;; {{++%+CC;;''T'22%dmm4 !KK--/
/oo% *--- / 	 

 ""++- "%%e,%%d+	
 f  B;;U;66 'I9~!>>"99 $(<<#/C ,554t5LQPTWU#/ 
 ' {{{%%C
6s   HH-H<0H
c                d   U R                   [        R                  L a  U R                  $ U R                   [        R                  L a  U R                  R                  5       $ U R                   [        R                  L a  U R                  R                  5       $ SU R                    3n[        U5      e)NzUnknown implementation: )	r^   r!   r   r|   r   rq   r   
_to_pandasrw   r   s     rh   rq   PandasLikeDataFrame.to_pandasn  s    >#8#88;;!!^%8%88;;((**!!^%9%99;;))++()=)=(>?S!!rk   c                J    SS K nUR                  " U R                  5       5      $ )Nr   )r  r  rq   )rb   r  s     rh   r  PandasLikeDataFrame.to_polarsx  s    ~~dnn.//rk   c                :    U R                   R                  U5        g r\   )r|   
to_parquetrb   files     rh   write_parquet!PandasLikeDataFrame.write_parquet}  s    t$rk   c                    g r\   r   r  s     rh   	write_csvPandasLikeDataFrame.write_csv  s    ,/rk   c                    g r\   r   r  s     rh   r  r    s    =@rk   c                6    U R                   R                  USS9$ )NFr  )r|   to_csvr  s     rh   r  r    s    {{!!$e!44rk   c                \    [         R                  " U R                  R                  SS9) U S9$ )NF)r  rn   )r   rx   r|   
duplicatedr   s    rh   	is_uniquePandasLikeDataFrame.is_unique  s/    ++[[###//
 	
rk   c                T   UcG  UcD  U R                   S:w  a  SU R                   < 3n[        U5      eU R                  R                  S   $ Ub  Uc  Sn[        U5      e[	        U[
        5      (       a  U R                  R                  U5      OUnU R                  R                  X4   $ )Nr   r   zycan only call `.item()` if the dataframe is of shape (1, 1), or if explicit row/col values are provided; frame has shape )r   r   z8cannot call `.item()` with only one of `row` or `column`)r  r  r|   r   r   r  ra   r   )rb   r  columnr~   _cols        rh   itemPandasLikeDataFrame.item  s    ;6>zzV#((,

~7 
 !o%;;##D))[FNLCS/!-7-D-Dt||!!&)&{{	**rk   c                R    U R                  U R                  R                  5       SS9$ r   )r   r|   r   r   s    rh   clonePandasLikeDataFrame.clone  s%      !1!1!35 QQrk   c                V    U R                  U R                  R                  US U2   SS9$ r   r   )rb   r  offsets      rh   gather_every PandasLikeDataFrame.gather_every  s.      !1!1&)!)!<TY ZZrk   c               0   U R                   [        R                  L a  U R                  S:  a  Sn[	        U5      eU R                   [        R
                  L a  Sn[	        U5      eSSKJn  U R                  n	Uc'  U R                   V
s/ s H  o1 UkUk;  d  M  U
PM     nn
Uc'  U R                   V
s/ s H  o1 UkUk;  d  M  U
PM     nn
Uc  U	R                  XUS9nOhUS:X  aU  U	R                  / UQUQ5      R                  [        R                  US5      5      R                  5       R                  XUS9nO[!        U UUUUS	9nU(       aq  U R                   [        R"                  L aT  U Vs0 s HF  nU[%        U R                  U   R'                  5       R)                  5       R+                  5       5      _MH     nnOU(       aE  U Vs0 s H7  o[%        U R                  U   R'                  5       R-                  5       5      _M9     nnOU R                   [        R"                  L aJ  U Vs0 s H<  oU R                  U   R'                  5       R)                  5       R+                  5       _M>     nnO;U Vs0 s H.  oU R                  U   R'                  5       R-                  5       _M0     nn[/        U" U/UR1                  5       Q76 5      nUR2                  S S 2U4   nUR                  R-                  5       n[5        U5      nUS
:X  aD  U Vs/ s H6  n[5        U5      S
:  a  UR7                  U5      R9                  5       OUS   PM8     nnOiU Vs/ s H\  n[5        U5      S
:  a/  UR7                  US   SSR7                  UU* S  5      -   S-   /5      OSSR7                  UU* S  5      -   S-   PM^     nnUUl	        S/UR                  l        U R=                  UR                  5       5      $ s  sn
f s  sn
f s  snf s  snf s  snf s  snf s  snf s  snf )Nr  z'pivot is only supported for pandas>=1.1zcpivot is not supported for Modin backend due to https://github.com/modin-project/modin/issues/7409.r   )product)ra   r   r   r   size)r   r   r   ra   aggregate_functionr   z{"z","z"}r  )r^   r!   r   r_   NotImplementedErrorr   	itertoolsr"  r|   ra   pivotgroupbyaggr  fromkeysreset_indexr   r   sortedr  r  	to_pylistr  r   r   r   r   r  stripnamesr   )rb   onr   r   r$  sort_columns	separatorr~   r"  rI  cresultr   uniquesordered_colsra   n_onnew_columnss                     rh   r(  PandasLikeDataFrame.pivot  s    >#8#88!!F*;C%c**>#7#77wC%c**%= $H120GQEH>!%HA-B--1GaFH%[[[HF5(mmUm,T]]6623rv>	  !#5F D00N4G4GG C VDKK,335>>@JJLMM  G RTURT3F4;;s#3#:#:#<#C#C#EFFRTGUG!!^%8%88QSQS#T[[%,,.779CCEEQS  G KMM"3DKK,335<<>>"GMGF>W^^-=>?A|O,..'')2w19 #"C 036{Q	s#))+CGK"  K #	 #C v;? Auzz#tef+/F(F(MNOEJJsD56{33d:; #	   % "t  !3!3!566q I I,
 V N
s?   O0O02O5O5/AO:
>O?,AP65P	=PA#Pc                    U R                   [        R                  L a  U R                  R	                  SS9$ SS KnUR                  R                  U R                  5      $ )NF)preserve_indexr   )r^   r!   r   r|   r  r}  Tabler  )rb   r  s     rh   r  PandasLikeDataFrame.to_arrow  sJ    >#6#66;;''u'==xx##DKK00rk   c          	     R    U R                  U R                  R                  XX4S9SS9$ )N)r  fracreplacerandom_stateFr   )r   r|   sample)rb   r  fractionwith_replacementseeds        rh   rC  PandasLikeDataFrame.sample   s>       KK,<   #(	 ! 
 	
rk   c           	     X    U R                  U R                  R                  UUUUS95      $ )N)id_vars
value_varsvar_name
value_name)r   r|   melt)rb   r1  r   variable_namerL  s        rh   unpivotPandasLikeDataFrame.unpivot  s:       KK&%	  
 	
rk   c                >  ^^ [        U R                  5      nU R                  5       nU H'  nX4   nXRR                  :w  d  M  SU S3n[	        U5      e   [        U5      S:X  a,  U R                  U R                  R                  US   5      SS9$ U R                  mTUS      R                  R                  5       m[        UU4S jUSS   5       5      (       d  SSKJn  S	nU" U5      eU R                  nU V	s/ s H  oU;  d  M
  U	PM     n
n	T/ U
QUS   P   R                  US   5      nUSS   Vs/ s H$  nTU   R                  5       R                  5       PM&     nnU R                  5       nU R                  UR!                  U/UQSS
9U   SS9$ s  sn	f s  snf )Nz-`explode` operation not supported for dtype `z`, expected List typer   r   Fr   c              3     >#    U  H3  nTU   R                   R                  5       T:H  R                  5       v   M5     g 7fr\   )r   r   r  )r   col_nameanchor_seriesnative_frames     rh   r   .PandasLikeDataFrame.explode.<locals>.<genexpr>5  s=       +H h',,002mCHHJJ +s   ;>r   z2exploded columns must have matching element countsr2  )r&   r`   r#  Listr   r   r   r|   exploder   r  narwhals.exceptionsr    ra   to_framer   concat)rb   ra   r   r   col_to_exploder   r~   r    original_columnsr4  other_columnsexploded_framerS  exploded_seriesr9  rT  rU  s                  @@rh   rX  PandasLikeDataFrame.explode  s   %dmm4$$&%N*E#CE7 K) )  ,C00 & w<1$$##GAJ/u %    ;;L(499==?M  '   ;J o%#||(8M(81W<LQ(8MM)*FM*F71:*FGOO
N MTTUTVKLWX&..099;K   ++-C$$

N=_=A
FGWX&+ %   N
s   :	FF4+F)r_   r^   r]   r`   )rc   r   rd   r!   re   ztuple[int, ...]rf   rH   rg   rU   returnNone)rz   r7   ro   rI   rb  r/   )rz   zMapping[str, Any]ro   rI   r   z#Mapping[str, DType] | Schema | Nonerb  r/   )r   r   rb  zTypeIs[Any])rz   r   ro   rI   rb  r/   )rz   rE   ro   rI   r   z3Mapping[str, DType] | Schema | Sequence[str] | Nonerb  r/   )rb  r/   )rb  r6   )rb  r.   )rb  int)rf   rH   rb  r/   )r   r   rg   rU   rb  r/   )r   r   rb  pd.Series[Any])r   r  rb  r   r\   )r   r   r   bool | Nonerb  rE   )r   'SizedMultiIndexSelector[pd.Series[Any]]rb  r/   )r   _SliceIndex | rangerb  r/   )ra   rG   rb  r/   )ra   rh  rb  r/   )ra   rg  rb  r/   )ra   z&SizedMultiNameSelector[pd.Series[Any]]rb  rY   )rb  z	list[str])r  zLiteral[True]rb  zlist[dict[str, Any]])r  zLiteral[False]rb  zlist[tuple[Any, ...]])r  rU   rb  z,list[tuple[Any, ...]] | list[dict[str, Any]])rb  zIterator[PandasLikeSeries])r  rU   r  rd  rb  z4Iterator[tuple[Any, ...]] | Iterator[dict[str, Any]])rb  zdict[str, DType])r&  r  rb  r/   )rb   rY   r,  r2   rb  rY   )rb   rY   r8  Sequence[str] | Nonerb  rY   )r>  rC   rb  zint | float)r   r  rb  r/   )r   rd  rb  ztuple[Any, ...])rb   rY   rS  zPandasLikeExpr | list[bool]rb  rY   )rc  zMapping[str, str]rb  r/   )ra   Sequence[str]rg  rU   rb  r/   )rs  r  rq  zbool | Sequence[bool]rr  rU   rb  r/   )r  Implementation | Noner  r   rb  z!CompliantDataFrame[Any, Any, Any])r   r  r  rU   rb  r4   )r   r/   r  r?   r  ri  r  ri  r  r  rb  r/   )r   r/   r  
str | Noner  rl  r  ri  r  ri  r  r;   r  r  rb  r/   )r  rd  rb  r/   )r8  ri  r  rD   r  rf  rb  r/   )r  rk  rb  zCompliantLazyFrame[Any, Any])rb  ztuple[int, int])r  rU   rb  zdict[str, Any])rb  zpd.DataFrame)rb  zpl.DataFrame)r  zstr | Path | BytesIOrb  rc  )r  rc  rb  r  )r  zstr | Path | BytesIO | Nonerb  rl  )rb  r   )r  
int | Noner  zint | str | Nonerb  r   )r  rd  r  rd  rb  r/   )r1  rj  r   ri  r   ri  r$  zPivotAgg | Noner2  rU   r3  r  rb  r/   )rb  r   )
r  rm  rD  zfloat | NonerE  rU   rF  rm  rb  r/   )
r1  ri  r   ri  rN  r  rL  r  rb  r/   )ra   rj  rb  r/   )I__name__
__module____qualname____firstlineno__ri   classmethodrm   r   staticmethodr   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   propertyra   r   r   r  _iter_columnsr  r   r#  r'  r/  r:  rB  rK  r  r5  r_  r   rh  ru  r  r  r  r  r  r  r  r  r  r  r   rq   r  r  r  r  r  r  r  r(  r  rC  rO  rX  __static_attributes__r   rk   rh   rY   rY   i   sY   DD '	D
 )D D  $D 
D" 8 8  !8!8
 !8 4!8 
!8 !8F - - 
 
 88
 8 D8 
8 80
	" 
 FJ 
"M5$ 5 5=

 


>
	
>=>	> , , # # 
	# # $ $ 
	$ $ ; ; 
6	; ;	5E !M0 0 	0
 
>0 
 
	
AL!L+?L	L*Z9
!
.I
	
B!B+9B	B(



 *
 	

 

$1&1 1 
+	1hL
Q
Q
 	Q

 &Q
 'Q
 Q
 
Q
f

 	

 
 &
 '
 #
 
 

6SS '+
$
 !	

 $
 

$ 37'/'	%'R ! !20& 0& 0&d"0
% / /@ @5

+$R[O7O7 $	O7
 %O7 ,O7 O7 O7 
O7b1

 	

 
 
 


 
 $
 	

 
 

 -rk   rY   )r   r2   r   re  )`
__future__r   typingr   r   r   r   r   r	   r
   r   r   r   r  r  narwhals._compliantr   narwhals._pandas_like.seriesr   r   narwhals._pandas_like.utilsr   r   r   r   r   r   r   r   r   r   narwhals.dependenciesr   rY  r   r    r  r!   r"   r#   r$   r%   r&   r'   r)   r*   r+   ior,   pathlibr-   typesr.   r{  r  r  r  typing_extensionsr/   r0   r1   narwhals._pandas_like.exprr2   r  r4   r   r6   narwhals._translater7   narwhals.dtypesr8   r   r:   narwhals.typingr;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rv   rJ   __annotations__	frozensetr   rW   rY   r   rk   rh   <module>r     s   "             . F 9 @ C E 9 @ G 3 . > 1 : 5 * ) , 0 . 9 / 0 ( & 3 &+(9@C2%&022,,(76(2(+*&+%c2<<&78K8 4=











!
!"
!"
!"
!"
"#
"#
"#
)4 0 4cPQcrk   