
    Wh                        U d dl m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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mZmZmZmZmZmZmZm Z  d dl!m"Z" d dl#m$Z$m%Z%m&Z& d dl'm(Z(m)Z) d dl*m+Z+ erud dl,m-Z-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3 d dl4Z5d dl6Z7d dl8Z9d dl:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZA d dlBmCZC d dlDmEZE d dl#mFZFmGZG d dlHmIZI d dlJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZW dZXdeYd<   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/d0d/d1d2d3d2d4d5d5d6d6d7ZZi dd5dd5dd5d!d5d"d5d$d5d%d5d'd5d(d5d*d5d+d5d-d5d.d5d0d5d1d5d3d5d4d5d5d6d6d7Z[ G d8 d9ee         Z\ G d: d;ed<         Z]y)=    )annotationsN)TYPE_CHECKINGAnyLiteralcast)EagerSeriesEagerSeriesHistPandasLikeSeriesCatNamespace!PandasLikeSeriesDateTimeNamespace)PandasLikeSeriesListNamespacePandasLikeSeriesStringNamespace)PandasLikeSeriesStructNamespace)	align_and_extract_nativeget_dtype_backendimport_array_modulenarwhals_to_native_dtypenative_to_narwhals_dtypeobject_native_to_narwhals_dtyperenameselect_columns_by_name	set_index)assert_never)Implementation
is_list_ofparse_version)is_numpy_array_1dis_pandas_like_series)InvalidOperationError)HashableIterableIteratorMappingSequence)
ModuleType)Self	TypeAliasTypeIs)ChunkedArrayAny)HistDataPandasLikeDataFramePandasLikeNamespace)Version_LimitedContext)DType)ClosedIntervalFillNullStrategyInto1DArray	IntoDTypeModeKeepStrategyNonNestedLiteralNumericLiteral
RankMethodRollingInterpolationMethodSizedMultiIndexSelectorTemporalLiteral_1DArray_SliceIndexz%HistData[pd.Series[Any], list[float]]r)   PandasHistDataInt64int64zint64[pyarrow]Int32int32zint32[pyarrow]Int16int16zint16[pyarrow]Int8int8zint8[pyarrow]UInt64uint64zuint64[pyarrow]UInt32uint32zuint32[pyarrow]UInt16uint16zuint16[pyarrow]UInt8uint8zuint8[pyarrow]Float64float64float32)zfloat64[pyarrow]Float32zfloat32[pyarrow]c                     e Zd Z	 	 	 	 	 	 	 	 ddZedd       ZddZddZddZddZ	ddZ
dd	dd
Zedddd	 	 	 	 	 	 	 	 	 	 	 dd       Zedd       Zedd       Zedd       Zedd       Zedd       Zedd       Zed        Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddZddZddZddZddZddZ	 	 	 	 	 	 	 	 ddZddZddZdd Z dd!Z!dd"Z"dd#Z#dd$Z$dd%Z%dd&Z&dd'Z'dd(Z(dd)Z)dd*Z*dd+Z+dd,Z,dd-Z-dd.Z.dd/Z/dd0Z0dd1Z1dd2Z2dd3Z3dd4Z4dd5Z5dd6Z6dd7Z7dd8Z8dd9Z9dd:Z:dd;Z;dd<Z<dd=Z=dd>Z>dd?Z?dd@Z@ddAZAddBZBddCZCddDZDddEZEddFZFddGZGddHZHddIZIddJZJ	 	 	 	 	 	 	 	 ddKZKddLZLddMZMddNZN	 	 	 	 	 	 	 	 	 	 ddOZOddPZPddQZQdRdSddTZRddUZSddVZT	 	 	 	 	 	 	 	 ddWZUddXZVddYZWddZZXddd[dd\ZYdd]ZZdd^Z[dd_Z\dd`Z]ddaZ^ddbZ_ddcZ`	 	 	 	 	 	 	 	 	 	 dddZa	 	 	 	 	 	 ddeZbddfZcddgZdddhZeddiZfddjZgddkZh	 	 	 	 	 	 ddlZiddmZjddnZkddoZlddpZmddqZnddrZoddsZpddtZq	 	 	 	 	 	 	 	 	 	 dduZr	 	 	 	 	 	 	 	 	 	 ddvZsddwZtddxZuddyZvddzZw	 	 	 	 	 	 dd{Zx	 	 	 	 	 	 dd|Zydd}Zzdd~Z{ddZ|edd       Z}edd       Z~edd       Zedd       Zedd       Zy)PandasLikeSeriesc               ^    |j                   | _        || _        || _        || _        d| _        y )NF)name_name_native_series_implementation_version
_broadcast)selfnative_seriesimplementationversions       V/var/www/html/jupyter_env/lib/python3.12/site-packages/narwhals/_pandas_like/series.py__init__zPandasLikeSeries.__init__o   s1     #''
+-      c                    | j                   S N)r[   r_   s    rc   nativezPandasLikeSeries.native}   s    """re   c                    | j                   j                         r| j                   j                         S dt        | j                          }t	        |      )Nz!Expected pandas/modin/cudf, got: )r\   is_pandas_liketo_native_namespacetypeAssertionErrorr_   msgs     rc   __native_namespace__z%PandasLikeSeries.__native_namespace__   sL    ..0'';;==1$t7K7K2L1MNS!!re   c                H    ddl m}  || j                  | j                        S )Nr   r/   )narwhals._pandas_like.namespacer0   r\   r]   )r_   r0   s     rc   __narwhals_namespace__z'PandasLikeSeries.__narwhals_namespace__   s    G"4#7#7GGre   c                    t        |t              rt        |      n|}| j                  | j                  j
                  |         S rg   )
isinstancetuplelist_with_nativeri   ilocr_   rowss     rc   _gatherzPandasLikeSeries._gather   s6    'e4tDz$  !1!1$!788re   c                    | j                  | j                  j                  t        |j                  |j
                  |j                                 S rg   )ry   ri   rz   slicestartstopstepr{   s     rc   _gather_slicezPandasLikeSeries._gather_slice   s<      KKU4::tyy$))DE
 	
re   c                R    | j                  | j                  | j                  |      S N)ra   rb   )	__class__ri   r\   )r_   rb   s     rc   _with_versionzPandasLikeSeries._with_version   s)    ~~KK(<(<g  
 	
re   Fpreserve_broadcastc               |    | j                  || j                  | j                        }|r| j                  |_        |S r   )r   r\   r]   r^   )r_   seriesr   results       rc   ry   zPandasLikeSeries._with_native   s<    4#7#7   
  $Fre    N)rY   dtypeindexc                  |j                   }|j                  }|j                         }i }	|rt        |d ||      |	d<   n'|j	                         rd|	d<   |t        |      r||	d<   | j                   |j                  |fd|i|	|      S )Nr   Fcopyr   rY   context)r\   r]   rl   r   	is_pandaslenfrom_nativeSeries)
clsdatar   rY   r   r   ra   rb   nskwdss
             rc   from_iterablezPandasLikeSeries.from_iterable   s     !00""//1!4UD.RYZDM'')$V SZ %WyryyADADA7SSre   c                    t        |       S rg   )r    )objs    rc   
_is_nativezPandasLikeSeries._is_native   s    $S))re   c              @     | ||j                   |j                        S r   )r\   r]   )r   r   r   s      rc   r   zPandasLikeSeries.from_native   s    4(?(?IYIYZZre   c                  |j                   }t        |      r|n|g}|j                         j                  |d      }| j	                  ||      S )Nr   rY   r   )r\   r   rl   r   r   )r   r   r   ra   arrri   s         rc   
from_numpyzPandasLikeSeries.from_numpy   sN     00'-dD6335<<Sr<Jvw77re   c                n   |d   j                         j                  }|D cg c]  }t        |       }}t        |      }||j	                  |         j
                  j                  }g }|D ]  }|j                  rS ||j
                  j                  d   ||j                  |j
                  j                        }|j                  |      }	nN|j
                  j                  |ur4t        |j
                  ||j                        }|j                  |      }	n|}	|j                  |	        |S c c}w )Nr   )r   rY   r   ra   )rq   r   r   maxr   ri   r^   rz   rY   r   ry   r   r\   append)
r   r   r   slengths
max_lengthidx	reindexedri   	compliants
             rc   _align_full_broadcastz&PandasLikeSeries._align_full_broadcast   s   //188#)*a3q6**\
W]]:./66<<	 	(A||HHMM!$CaffAHHNN NN62	s*"188SARARSNN62		Y'	( ! +s   D2c                    | j                   S rg   )rZ   rh   s    rc   rY   zPandasLikeSeries.name   s    zzre   c                    | j                   j                  }|dk7  r!t        || j                  | j                        S t        | j                   | j                  | j                        S )Nobject)ri   r   r   r]   r\   r   )r_   native_dtypes     rc   r   zPandasLikeSeries.dtype   s\    {{(( x' %\4==$BVBVW	
 1T]]D,@,@	
re   c                D    t         rdd l}|S t        | j                        S Nr   )r   numpyr   r\   )r_   nps     rc   _array_funcszPandasLikeSeries._array_funcs   s    I"4#7#788re   c          	     |   | j                   }|j                         }	| j                  t        j                  u rI|dk(  r|r|	j                         s%|j                  |||||      j                         }
n3d}t        |      |j                  |||||||      j                         }
d |
|	<   | j                  |
      S )Nr   )comspanhalflifealphaadjustzscuDF only supports `ewm_mean` when there are no missing values or when both `min_period=0` and `ignore_nulls=False`)	ignore_na)
ri   isnar\   r   CUDFanyewmmeanNotImplementedErrorry   )r_   r   r   	half_lifer   r   min_samplesignore_nullssermask_nar   rp   s               rc   ewm_meanzPandasLikeSeries.ewm_mean   s     kk((*>#6#66q w{{}$%PV ! $& 
K  *#..WWT9e[&L  df  w  ((re   c                :   t        || j                        r9t        |j                  | j                  j                  |   | j
                        }| j                  j                  d      }||j                  |<   | j                  |_        | j                  |      S )Nr   T)deep)
rv   r   r   ri   r   r\   r   rz   rY   ry   )r_   indicesvaluesr   s       rc   scatterzPandasLikeSeries.scatter  s~    fdnn-!!'*#33F
 KK$' w  ##re   c                   | j                   }| j                  }t        |j                  | j                  j                  |j                     |      }|t
        j                  u r"t        t              dk  r|j                         }d}|t
        j                  u r3||k  r.|| j                  j                  |j                  j                  <   y || j                  j                  |j                  <   y )Nr   )   )   r   )r\   _backend_versionr   ri   r   r   PANDASr   r   r   rz   r   )r_   r   r   ra   backend_versionvalues_nativemin_pd_versions          rc   _scatter_in_placez"PandasLikeSeries._scatter_in_place   s    --//!MMKKgnn-)

 ^222}R7H47O)..0M^2227W6CDKKW^^223/<DKKW^^,re   c                    t        |t        | j                  j                  | j                        | j                  | j
                        }| j                  | j                  j                  |      d      S )N)dtype_backendra   rb   Tr   )r   r   ri   r   r\   r]   ry   astype)r_   r   pd_dtypes      rc   r   zPandasLikeSeries.cast1  sa    ++DKK,=,=t?S?ST//MM	
   !3!3H!=RV WWre   c                    |At        |       dk7  rdt        |        d}t        |      | j                  j                  d   S | j                  j                  |   S )Nr   zlcan only call '.item()' if the Series is of length 1, or an explicit index is provided (Series is of length )r   )r   
ValueErrorri   rz   )r_   r   rp   s      rc   itemzPandasLikeSeries.item:  sf    =4yA~NNQRVi[XY[  !o%;;##A&&{{&&re   c                ~    ddl m}  || j                  j                         | j                  | j
                  d      S )Nr   r-   F)ra   rb   validate_column_names)narwhals._pandas_like.dataframer.   ri   to_framer\   r]   )r_   r.   s     rc   r   zPandasLikeSeries.to_frameF  s5    G"KK  "//MM"'	
 	
re   c                    | j                   j                         }|r(| j                  j                         j	                         S | j                  j                         S rg   )r\   is_cudfri   to_arrow	to_pylistto_list)r_   r   s     rc   r   zPandasLikeSeries.to_listP  sF    &&..05<t{{##%//1W$++BUBUBWWre   c                   | j                   }t        | |      \  }}t        | |      \  }}|dk(  r$|j                  |      |j                  |      z  }n|dk(  r$|j	                  |      |j                  |      z  }n]|dk(  r$|j	                  |      |j                  |      z  }n4|dk(  r$|j                  |      |j                  |      z  }nt        |       | j                        j                  |j                        S )Nleftrightnoneboth)
ri   r   geltgtler   ry   aliasrY   )r_   lower_boundupper_boundclosedr   _ress          rc   
is_betweenzPandasLikeSeries.is_betweenT  s     kk1$D;1$D;V&&%{(;;Cw&&%{(;;Cv&&%{(;;Cv&&%{(;;C   %++CHH55re   c                V    | j                  | j                  j                  |            S rg   )ry   ri   isinr_   others     rc   is_inzPandasLikeSeries.is_inf  s"      !1!1%!899re   c                    | j                   }t        |      }| j                  j                  |      }|j	                  ||j
                  |j                        j                  |   }| j                  |      S )N)rY   r   )	ri   r   r   aranger   rY   r   locry   )r_   r   sizer   r   s        rc   arg_truezPandasLikeSeries.arg_truei  sb    kk3x  ''-t#((#))DHHM  ((re   c                6    | j                   j                         S rg   )ri   argminrh   s    rc   arg_minzPandasLikeSeries.arg_minp      {{!!##re   c                6    | j                   j                         S rg   )ri   argmaxrh   s    rc   arg_maxzPandasLikeSeries.arg_maxs  r  re   c                    t        |t              st        | |      \  }}n|}| j                  | j                  j
                  |         j                  | j                        S rg   )r   boolr   ry   ri   r  r   rY   )r_   	predicater   other_natives       rc   filterzPandasLikeSeries.filterx  sN    )T*6tYGOA|$L  !>?EEdiiPPre   c                z    t        | |      \  }}| j                  ||k(        j                  | j                        S rg   r   ry   r   rY   r_   r   r   s      rc   __eq__zPandasLikeSeries.__eq__  6    -dE:
U  .44TYY??re   c                z    t        | |      \  }}| j                  ||k7        j                  | j                        S rg   r  r  s      rc   __ne__zPandasLikeSeries.__ne__  r  re   c                z    t        | |      \  }}| j                  ||k\        j                  | j                        S rg   r  r  s      rc   __ge__zPandasLikeSeries.__ge__  r  re   c                z    t        | |      \  }}| j                  ||kD        j                  | j                        S rg   r  r  s      rc   __gt__zPandasLikeSeries.__gt__  6    -dE:
U  u-33DII>>re   c                z    t        | |      \  }}| j                  ||k        j                  | j                        S rg   r  r  s      rc   __le__zPandasLikeSeries.__le__  r  re   c                z    t        | |      \  }}| j                  ||k        j                  | j                        S rg   r  r  s      rc   __lt__zPandasLikeSeries.__lt__  r  re   c                z    t        | |      \  }}| j                  ||z        j                  | j                        S rg   r  r  s      rc   __and__zPandasLikeSeries.__and__  r  re   c                    t        | |      \  }}t        d|      }| j                  |j                  |            j	                  | j
                        S Npd.Series[Any])r   r   ry   r"  r   rY   r  s      rc   __rand__zPandasLikeSeries.__rand__  sH    -dE:
U#S)  U!34::499EEre   c                z    t        | |      \  }}| j                  ||z        j                  | j                        S rg   r  r  s      rc   __or__zPandasLikeSeries.__or__  r  re   c                    t        | |      \  }}t        d|      }| j                  |j                  |            j	                  | j
                        S r$  )r   r   ry   r(  r   rY   r  s      rc   __ror__zPandasLikeSeries.__ror__  sH    -dE:
U#S)  E!2399$))DDre   c                z    t        | |      \  }}| j                  ||z         j                  | j                        S rg   r  r  s      rc   __add__zPandasLikeSeries.__add__  r  re   c                    t        | |      \  }}| j                  | j                  j                  |            j	                  | j
                        S rg   )r   ry   ri   __radd__r   rY   r_   r   r   r  s       rc   r.  zPandasLikeSeries.__radd__  A    24?<  !5!5l!CDJJ499UUre   c                z    t        | |      \  }}| j                  ||z
        j                  | j                        S rg   r  r  s      rc   __sub__zPandasLikeSeries.__sub__  r  re   c                    t        | |      \  }}| j                  | j                  j                  |            j	                  | j
                        S rg   )r   ry   ri   __rsub__r   rY   r/  s       rc   r4  zPandasLikeSeries.__rsub__  r0  re   c                z    t        | |      \  }}| j                  ||z        j                  | j                        S rg   r  r  s      rc   __mul__zPandasLikeSeries.__mul__  r  re   c                    t        | |      \  }}| j                  | j                  j                  |            j	                  | j
                        S rg   )r   ry   ri   __rmul__r   rY   r/  s       rc   r8  zPandasLikeSeries.__rmul__  r0  re   c                z    t        | |      \  }}| j                  ||z        j                  | j                        S rg   r  r  s      rc   __truediv__zPandasLikeSeries.__truediv__  r  re   c                    t        | |      \  }}| j                  | j                  j                  |            j	                  | j
                        S rg   )r   ry   ri   __rtruediv__r   rY   r/  s       rc   r<  zPandasLikeSeries.__rtruediv__  sA    24?<  !9!9,!GHNNtyyYYre   c                z    t        | |      \  }}| j                  ||z        j                  | j                        S rg   r  r  s      rc   __floordiv__zPandasLikeSeries.__floordiv__  r  re   c                    t        | |      \  }}| j                  | j                  j                  |            j	                  | j
                        S rg   )r   ry   ri   __rfloordiv__r   rY   r/  s       rc   r@  zPandasLikeSeries.__rfloordiv__  sD    24?<  !:!:<!HIOOPTPYPYZZre   c                z    t        | |      \  }}| j                  ||z        j                  | j                        S rg   r  r  s      rc   __pow__zPandasLikeSeries.__pow__  s6    -dE:
U  e,22499==re   c                    t        | |      \  }}| j                  | j                  j                  |            j	                  | j
                        S rg   )r   ry   ri   __rpow__r   rY   r/  s       rc   rD  zPandasLikeSeries.__rpow__  r0  re   c                z    t        | |      \  }}| j                  ||z        j                  | j                        S rg   r  r  s      rc   __mod__zPandasLikeSeries.__mod__  r  re   c                    t        | |      \  }}| j                  | j                  j                  |            j	                  | j
                        S rg   )r   ry   ri   __rmod__r   rY   r/  s       rc   rH  zPandasLikeSeries.__rmod__  r0  re   c                :    | j                  | j                         S rg   )ry   ri   rh   s    rc   
__invert__zPandasLikeSeries.__invert__  s      $++..re   c                6    | j                   j                         S rg   )ri   r   rh   s    rc   r   zPandasLikeSeries.any      {{  re   c                6    | j                   j                         S rg   )ri   allrh   s    rc   rN  zPandasLikeSeries.all  rL  re   c                6    | j                   j                         S rg   )ri   minrh   s    rc   rP  zPandasLikeSeries.min  rL  re   c                6    | j                   j                         S rg   )ri   r   rh   s    rc   r   zPandasLikeSeries.max  rL  re   c                6    | j                   j                         S rg   )ri   sumrh   s    rc   rS  zPandasLikeSeries.sum  rL  re   c                6    | j                   j                         S rg   )ri   countrh   s    rc   rU  zPandasLikeSeries.count  s    {{  ""re   c                6    | j                   j                         S rg   )ri   r   rh   s    rc   r   zPandasLikeSeries.mean  s    {{!!re   c                    | j                   j                         sd}t        |      | j                  j	                         S )Nz<`median` operation not supported for non-numeric input type.)r   
is_numericr!   ri   medianro   s     rc   rY  zPandasLikeSeries.median  s5    zz$$&PC',,{{!!##re   c               :    | j                   j                  |      S Nddof)ri   stdr_   r]  s     rc   r^  zPandasLikeSeries.std      {{D))re   c               :    | j                   j                  |      S r[  )ri   varr_  s     rc   rb  zPandasLikeSeries.var  r`  re   c                F   | j                   j                         }t        |      dk(  ry t        |      dk(  rt        d      S t        |      dk(  ry||j	                         z
  }|dz  j	                         }|dz  j	                         }|dk7  r||dz  z  S t        d      S )Nr   r   nanr   g           g      ?ri   dropnar   floatr   )r_   ser_not_nullmm2m3s        rc   skewzPandasLikeSeries.skew	  s    {{))+|!|!<|!<,,..d[[]d[[]!#qrRW~:eEl:re   c                .   | j                   j                         }t        |      dk(  ry t        |      dk(  rt        d      S ||j	                         z
  }|dz  j	                         }|dz  j	                         }|dk7  r||dz  z  dz
  S t        d      S )Nr   r   rd  r      g      @rf  )r_   ri  rj  rk  m4s        rc   kurtosiszPandasLikeSeries.kurtosis  s    {{))+|!|!<<,,..d[[]d[[]%'1WrRU|c!>%,>re   c                ,    t        | j                        S rg   )r   ri   rh   s    rc   r   zPandasLikeSeries.len!  s    4;;re   c                X    | j                  | j                  j                         d      S )NTr   )ry   ri   r   rh   s    rc   is_nullzPandasLikeSeries.is_null&  s%      !1!1!3 MMre   c                    | j                   }| j                  j                         sd| j                   d}t        |      | j	                  ||k7  d      S )Nz3`.is_nan` only supported for numeric dtype and not z, did you mean `.is_null`?Tr   )ri   r   rX  r!   ry   )r_   r   rp   s      rc   is_nanzPandasLikeSeries.is_nan)  sS    kkzz$$&G

|SmnC',,   EEre   c                   | j                   }| j                  t        j                  u r| j                  dk  rddini }t        j                         5  t        j                  ddt               |5t        | |      \  }}| j                   |j                  dd|i|d	      }n>| j                  |d
k(  r |j                  dd|i|n |j                  dd|i|d	      }d d d        |S # 1 sw Y   S xY w)Nre  downcastFignorez&The 'downcast' keyword .*is deprecated)categoryvalueTr   forwardlimit )ri   r\   r   r   r   warningscatch_warningsfilterwarningsFutureWarningr   ry   fillnaffillbfill)	r_   r|  strategyr~  r   kwargsr   native_valueres_sers	            rc   	fill_nullzPandasLikeSeries.fill_null1  s    kk ##~'<'<<%%,  	 	 $$& 	##B]  ":4"G<++CJJ<\<V<QU ,  ++9, CII4E4V4"99&9'+	 , 	  !	  s   BC..C8c                B   | j                   j                         sd| j                    d}t        |      | j                  }| |j                  j                   j
                  n|}||k7  }|j                  dd       | j                  |j                  ||      d      S )Nz5`.fill_nan` only supported for numeric dtype and not z, did you mean `.fill_null`?FT)inplacer   )	r   rX  r!   ri   arrayna_valuer  ry   mask)r_   r|  rp   r   fillr  s         rc   fill_nanzPandasLikeSeries.fill_nanP  s    zz$$&I$**UqrC',,KK).qww}}%%EAvE4(  d!3 MMre   c                T    | j                  | j                  j                               S rg   )ry   ri   rg  rh   s    rc   
drop_nullszPandasLikeSeries.drop_nulls\  s       !3!3!566re   c                :    | j                   j                  d      S )NF)rg  )ri   nuniquerh   s    rc   n_uniquezPandasLikeSeries.n_unique_  s    {{""%"00re   c               ^    | j                  | j                  j                  ||||            S )N)nfracreplacerandom_state)ry   ri   sample)r_   r  fractionwith_replacementseeds        rc   r  zPandasLikeSeries.sampleb  s8       KK(,<4  
 	
re   c                T    | j                  | j                  j                               S rg   )ry   ri   absrh   s    rc   r  zPandasLikeSeries.absp  s      !233re   c                   |s| j                   j                  d      n'| j                   d d d   j                  d      d d d   }| j                  |      S NT)skipna)ri   cumsumry   r_   reverser   s      rc   cum_sumzPandasLikeSeries.cum_sums  ]      KKd+TrT")))6tt< 	
   ((re   Tmaintain_orderc                   | j                   t        | j                        | j                  j                         | j                              S )zuPandas always maintains order, as per its docstring.

        > Uniques are returned in order of appearance.
        r   )ry   rm   ri   uniquerY   )r_   r  s     rc   r  zPandasLikeSeries.unique{  s9    
   !2dkk!24;;3E3E3Gdii!XYYre   c                T    | j                  | j                  j                               S rg   )ry   ri   diffrh   s    rc   r  zPandasLikeSeries.diff  s       !1!1!344re   c                V    | j                  | j                  j                  |            S rg   )ry   ri   shiftr_   r  s     rc   r  zPandasLikeSeries.shift  s"      !2!21!566re   c          	     :   | j                    d}t        | j                  j                  | j                        }|r"t        ||| j                  | j                        nd }| j                         }|j                  | j                   |||j                  ||      i      }| j                  | j                  j                         j                  || j                   d      |         j                  | j                         }	|	j                         j                         | j                         j                         k7  r]d| j!                  | j                          |	j                         z        j#                  d      j%                          }
t'        |
      |	S )N_tmp)r   r   )onhowzYreplace_strict did not replace all non-null values.

The following did not get replaced: Fr  )rY   r   ri   r   r\   r   r]   rq   	DataFramer   ry   r   merger   rt  rS  r  r  r   r   )r_   oldnewreturn_dtypetmp_namer   r   	namespacer   r   rp   s              rc   replace_strictzPandasLikeSeries.replace_strict  s    ii[%)$++*;*;T=Q=QR
  %mT-A-A4==  	 --/	##YYXy'7'75'7'IJ
 ""KK  "((499&(I(S

%		
 	 >>!T\\^%7%7%9977;{{DLLN?U[UcUcUeCe7f7m7m  ~C7m  8D  8L  8L  8N  7OP  S/!re   c                   |rdnd}| j                  | j                  j                  | |            j                  | j                        S )Nlastfirst)	ascendingna_position)ry   ri   sort_valuesr   rY   )r_   
descending
nulls_lastr  s       rc   sortzPandasLikeSeries.sort  sE     *f  KK##*n+#V

%		
	re   c                    || j                   k7  r3| j                  t        | j                  || j                        d      S | S )Nr   Tr   )rY   ry   r   ri   r\   )r_   rY   s     rc   r   zPandasLikeSeries.alias  sF    499$$t{{D9M9MN#' %   re   c               (    | j                  ||      S )N)r   r   )to_numpy)r_   r   r   s      rc   	__array__zPandasLikeSeries.__array__  s     }}5t}44re   )r   c                   | j                   j                  }t        | j                  |j                        rU| j                  j
                  ?| j                  j                  d      j                  j                  d       j                  }n| j                  }|j                         j                         }d|xs | j                  j                         i}|rWt        |j                        t        v r<|j!                  dt#        d      i       |xs t        t        |j                           }|s;t        |j                        t$        v r |xs t$        t        |j                           } |j&                  dd|i|S )NUTCr   r  rd  r   r  )r]   dtypesrv   r   Datetime	time_zonedtconvert_time_zonereplace_time_zoneri   r   r   r\   r   strPANDAS_TO_NUMPY_DTYPE_MISSINGupdaterh   PANDAS_TO_NUMPY_DTYPE_NO_MISSINGr  )r_   r   r   r  r   has_missingr  s          rc   r  zPandasLikeSeries.to_numpy  s    %%djj&//2tzz7K7K7W))%033EEdKRRAAffhlln"($*P$2F2F2N2N2P!Q3qww<+HHMM:uU|45H:3qww<HEs177|/OOK=c!''lKEqzz0000re   c                ^   | j                   t        j                  u r| j                  S | j                   t        j                  u r| j                  j                         S | j                   t        j                  u r| j                  j                         S d| j                    }t        |      )NzUnknown implementation: )	r\   r   r   ri   r   	to_pandasMODIN
_to_pandasrn   ro   s     rc   r  zPandasLikeSeries.to_pandas  s    >#8#88;;>#6#66;;((**>#7#77;;))++()=)=(>?S!!re   c                J    dd l } |j                  | j                               S r   )polarsfrom_pandasr  )r_   pls     rc   	to_polarszPandasLikeSeries.to_polars  s    r~~dnn.//re   c                    | j                  | j                  j                  d             j                  | j                        S )NFkeepry   ri   
duplicatedr   rY   rh   s    rc   	is_uniquezPandasLikeSeries.is_unique  s7      $++"8"8e"8"D!DEKKDIIVVre   c                R    | j                   j                         j                         S rg   )ri   r   rS  rh   s    rc   
null_countzPandasLikeSeries.null_count  s    {{!%%''re   c                    | j                  | j                  j                  d             j                  | j                        S )Nr  r  r  rh   s    rc   is_first_distinctz"PandasLikeSeries.is_first_distinct  s7      $++"8"8g"8"F!FGMMdiiXXre   c                    | j                  | j                  j                  d             j                  | j                        S )Nr  r  r  rh   s    rc   is_last_distinctz!PandasLikeSeries.is_last_distinct  s7      $++"8"8f"8"E!EFLLTYYWWre   c                   t        |t              sdt        |       }t        |      |r| j                  j
                  S | j                  j                  S )Nz/argument 'descending' should be boolean, found )rv   r  rm   	TypeErrorri   is_monotonic_decreasingis_monotonic_increasing)r_   r  rp   s      rc   	is_sortedzPandasLikeSeries.is_sorted  sK    *d+CDDTCUVCC. ;;666{{222re   c                  ddl m} | j                  dn| j                  }|xs |rdnd}| j                  j	                  dd|      j                         }||g|_        |r|j                  |d      } |j                  || 	      S )
z-Parallel is unused, exists for compatibility.r   r-   r   
proportionrU  F)rg  r  	normalize)r  r   )	r   r.   rZ   ri   value_countsreset_indexcolumnsr  r   )	r_   r  parallelrY   r  r.   index_name_value_name_	val_counts	            rc   r  zPandasLikeSeries.value_counts  s     	H!%!3gFy|gKK,,u	 - 

+- 	 )+6	!--kU-KI."..y$GGre   c                <    | j                   j                  ||      S )N)qinterpolation)ri   quantile)r_   r  r  s      rc   r  zPandasLikeSeries.quantile  s     {{##hm#LLre   c                    | j                   }t        | |      \  }}t        | |      \  }}|j                  ||      }| j                  |      S rg   )ri   r   wherery   )r_   r  r   r   r   r   s         rc   zip_withzPandasLikeSeries.zip_with
  sL    kk*464+D%85iie$  %%re   c                V    | j                  | j                  j                  |            S rg   )ry   ri   headr  s     rc   r  zPandasLikeSeries.head  "      !1!1!!455re   c                V    | j                  | j                  j                  |            S rg   )ry   ri   tailr  s     rc   r
  zPandasLikeSeries.tail  r  re   c                X    | j                  | j                  j                  |            S )N)decimals)ry   ri   round)r_   r  s     rc   r  zPandasLikeSeries.round  s%      !2!2H!2!EFFre   c                  ddl m} | j                         }| j                  }| j                  rt        | j                        nd}| | d}|j                         j                         }|j                  |||||d      }	|rLt        |	j                        ^ }
}|g|
}t        t        |	|| j                        ||i| j                        }	 |j                  |	|       S )	Nr   r-   r   nullrI   )prefix
prefix_sep
drop_firstdummy_nar   )r  ra   r   )r   r.   rq   ri   rZ   r  r   r   get_dummiesrx   r  r   r   r\   r   )r_   	separatorr  r.   plxr   rY   null_col_pl	has_nullsr   colsnull_col_pdoutput_orders                rc   
to_dummieszPandasLikeSeries.to_dummies  s    G'')"&**s4::"yk.KKM%%'	 ! ! 
 !%fnn!5T;'/$/L&v|T=Q=QR$k2#33F
 /"..vtDDre   c                X    | j                  | j                  j                  |d |         S rg   )ry   ri   rz   )r_   r  offsets      rc   gather_everyzPandasLikeSeries.gather_every7  s(      !1!1&)!)!<==re   c                   |t        | |      nd\  }}|t        | |      nd\  }}| j                  }|j                         rddini }| j                  }|j	                         sP| j                  |      r|j                  ||k\  |      }d }| j                  |      r|j                  ||k  |      }d }| j                   |j                  ||fi |      S )N)NNaxisr   )	r   r\   is_modinri   r   r   r  ry   clip)	r_   r   r   r   lowerupperimplr  r   s	            rc   r#  zPandasLikeSeries.clip:  s     & %T;7 	5 & %T;7 	5
 ##04&!R~~ u%fou=u%fou=  UE!DV!DEEre   c                    | j                   t        j                  u r| j                  j	                         S dd l}|j                  j                  | j                        S r   )r\   r   r   ri   r   pyarrowArrayr  )r_   pas     rc   r   zPandasLikeSeries.to_arrowZ  sE    >#6#66;;''))xx##DKK00re   c                   | j                   j                         }| j                  |_        | j                  |dk(  r|j	                  d            S |      S )Nr   r   )ri   moderY   ry   r  )r_   r  r   s      rc   r,  zPandasLikeSeries.modeb  sF    !!#ii  45=QMMfMMre   c                   | j                   j                          }|s|j                         n!t        |       |j                         z
  |z   dz
  }| j	                  |      S Nr   )ri   r   r  r   ry   )r_   r  not_na_seriesr   s       rc   	cum_countzPandasLikeSeries.cum_countg  sa    ))++    "T]1133mCaG 	
   ((re   c                   |s| j                   j                  d      n'| j                   d d d   j                  d      d d d   }| j                  |      S r  )ri   cumminry   r  s      rc   cum_minzPandasLikeSeries.cum_minp  r  re   c                   |s| j                   j                  d      n'| j                   d d d   j                  d      d d d   }| j                  |      S r  )ri   cummaxry   r  s      rc   cum_maxzPandasLikeSeries.cum_maxx  r  re   c                   |s| j                   j                  d      n'| j                   d d d   j                  d      d d d   }| j                  |      S r  )ri   cumprodry   r  s      rc   cum_prodzPandasLikeSeries.cum_prod  s]      KKt,TrT"**$*7"= 	
   ((re   c               |    | j                   j                  |||      j                         }| j                  |      S Nwindowmin_periodscenter)ri   rollingrS  ry   r_   window_sizer   r?  r   s        rc   rolling_sumzPandasLikeSeries.rolling_sum  s?    $$K % 

#% 	   ((re   c               |    | j                   j                  |||      j                         }| j                  |      S r;  )ri   r@  r   ry   rA  s        rc   rolling_meanzPandasLikeSeries.rolling_mean  s?    $$K % 

$& 	   ((re   c                   | j                   j                  |||      j                  |      }| j                  |      S Nr<  r\  )ri   r@  rb  ry   r_   rB  r   r?  r]  r   s         rc   rolling_varzPandasLikeSeries.rolling_var  E     $$K % 

#4#. 	   ((re   c                   | j                   j                  |||      j                  |      }| j                  |      S rG  )ri   r@  r^  ry   rH  s         rc   rolling_stdzPandasLikeSeries.rolling_std  rJ  re   c              #  T   K   | j                   j                         E d {    y 7 wrg   )ri   __iter__rh   s    rc   rN  zPandasLikeSeries.__iter__  s     ;;'')))s   (&(c                    |(| j                   j                         j                         S | j                   |k(  j                         S rg   )ri   r   r   r   s     rc   __contains__zPandasLikeSeries.__contains__  s9    +0=t{{!%%'Zt{{e?S>X>X>ZZre   c                r    | j                   }| j                  |t        d      kD  |t        d      k  z        S )Nz-infinf)ri   ry   rh  )r_   r   s     rc   	is_finitezPandasLikeSeries.is_finite  s3    KK  !eFm"3E%L8H!IJJre   c               :   |dk(  rdn|}| j                   }| j                  t        j                  u r;| j                  dk  r+t        | j                  j                  | j                        dk(  r| j                  j                         r| j                         x}j                         r| d}| j                         }| j                         j                  |j                  j                  |      j!                  |            j                  }| j#                  |j%                  |      j'                  |d| d      j(                  d d d	f         j!                  | j                         S | j#                  | j                  j'                  |d| d            S )
Nordinalr  rx  numpy_nullable_is_nullr  F)method	na_optionr  pctr   )rY   r\   r   r   r   r   ri   r   
is_integerrt  r   rt   r   with_columns_expr_from_seriesr   ry   groupbyrankrz   )	r_   rX  r  	pd_methodrY   	null_mask	mask_namer  dfs	            rc   r`  zPandasLikeSeries.rank  so   %2G	yy  N$9$99%%,!$++"3"3T5I5IJ 

%%'"lln,113
  &)I--/Ccii44Y?EEiPQ 
 $$

9%$$",n	   ad	 eDII	   KK F*nRW  
 	
re   c               j    t         j                  | |      j                  |      j                         S N)include_breakpoint)_PandasHistfrom_series	with_binsr   )r_   binsrg  s      rc   hist_from_binszPandasLikeSeries.hist_from_bins  s-     ##D=O#PYt_XZ	
re   c               j    t         j                  | |      j                  |      j                         S rf  )rh  ri  with_bin_countr   )r_   	bin_countrg  s      rc   hist_from_bin_countz$PandasLikeSeries.hist_from_bin_count  s.     ##D=O#P^I&XZ	
re   c                   | j                   }t        |      }| j                  }t        |j                  |      dk(  rdd lm} ddlm} |j                  j                  }t        d|j                  ||            } ||j                  | j                        }	t        |	d| j                  | j                        }
 |||
|j                  |j                         }n`| j"                  }|j%                  |      |j%                  |      z  }|j'                         r |||j                  |j                         n|}| j)                  |      S Nr   r(  r   )r   r+   )r   r   rY   )r   rY   )ri   rm   r\   r   r   pyarrow.computecomputenarwhals._arrow.utilsr   r  	_pa_arrayr   logbr]   r   r   rY   r   logr   ry   )r_   baseri   
native_clsra   pcr   ca
result_arrnw_dtype	out_dtyperesult_nativearray_funcss                rc   rx  zPandasLikeSeries.log  s   &\
--V\\.IYV(F''B/T1BCJ/
OH0)T%9%94==I ')6<<fkkM ++K$0;??43HHJ "))+ :V\\L    //re   c                p   | j                   }t        |      }| j                  }t        |j                  |      dk(  rdd lm} ddlm} |j                  j                  }t        d|j                  |            } ||j                  | j                        }t        |d| j                  | j                        }	 |||	|j                  |j                         }
nL| j"                  j                  |      }|j%                         r |||j                  |j                         n|}
| j'                  |
      S rr  )ri   rm   r\   r   r   rs  rt  ru  r   r  rv  r   expr]   r   r   rY   r   r   ry   )r_   ri   rz  ra   r{  r   r|  r}  r~  r  r  s              rc   r  zPandasLikeSeries.exp  s   &\
--V\\.IYV(F''B/<J/
OH0)T%9%94==I ')6<<fkkM **..v6J "))+ :V\\L    //re   c                V    | j                  | j                  j                  d            S )N      ?)ry   ri   powrh   s    rc   sqrtzPandasLikeSeries.sqrt   s       !566re   c                    t        |       S rg   r   rh   s    rc   r  zPandasLikeSeries.str#  s    .t44re   c                    t        |       S rg   r   rh   s    rc   r  zPandasLikeSeries.dt'  s    066re   c                    t        |       S rg   r
   rh   s    rc   catzPandasLikeSeries.cat+  s    +D11re   c                ^    t        | j                  d      sd}t        |      t        |       S )Nrx   z>Series must be of PyArrow List type to support list namespace.)hasattrri   r  r   ro   s     rc   rx   zPandasLikeSeries.list/  s*    t{{F+RCC. ,T22re   c                ^    t        | j                  d      sd}t        |      t        |       S )NstructzBSeries must be of PyArrow Struct type to support struct namespace.)r  ri   r  r   ro   s     rc   r  zPandasLikeSeries.struct6  s*    t{{H-VCC. .t44re   )r`   r   ra   r   rb   r1   returnNone)r  r   )r  r'   )r  r0   )r|   z'SizedMultiIndexSelector[pd.Series[Any]]r  r(   )r|   z_SliceIndex | ranger  r(   )rb   r1   r  r(   )r   r   r   r  r  r(   )r   zIterable[Any]r   r2   rY   r  r   IntoDType | Noner   r   r  r(   )r   r   r  zTypeIs[Any])r   r   r   r2   r  r(   )r   r6   r   r2   r  r(   )r   r(   r  zSequence[Self])r  r  )r  r3   )r   float | Noner   r  r   r  r   r  r   r  r   intr   r  r  r(   )r   zint | Sequence[int]r   r   r  r(   )r   r(   r   r(   r  r  )r   r7   r  r(   )r   
int | Noner  r   r  r.   )r  z	list[Any])r   r   r   r   r   r4   r  r(   )r   r   r  r(   )r  r(   )r  r  )r  r   r  r(   )r   r   r  r(   r  r  )r  rh  )r]  r  r  rh  )r  r  )r|  zSelf | NonNestedLiteralr  zFillNullStrategy | Noner~  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  z!Sequence[Any] | Mapping[Any, Any]r  zSequence[Any]r  r  r  rW   )r  r  r  r  r  rW   )rY   zstr | Hashabler  r(   )r   r   r   zbool | Noner  r?   rg   )r  r%  )r  z	pl.Series)r  r  r  r  )
r  r  r  r  rY   z
str | Noner  r  r  r.   )r  rh  r  r<   r  rh  )r  r   r   r   r  r(   )r  r  r  r(   )r  r  r  r  r  r.   )r  r  r  r  r  r(   )r   .Self | NumericLiteral | TemporalLiteral | Noner   r  r  r(   )r  zpa.Array[Any])r  r8   r  r(   )rB  r  r   r  r?  r  r  r(   )
rB  r  r   r  r?  r  r]  r  r  r(   )r  zIterator[Any])r   r   r  r  )rX  r;   r  r  r  r(   )rk  list[float]rg  r  r  r.   )ro  r  rg  r  r  r.   )ry  rh  r  r(   )r  r   )r  r   )r  r   )r  r   )r  r   )__name__
__module____qualname__rd   propertyri   rq   rt   r}   r   r   ry   classmethodr   staticmethodr   r   r   r   rY   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.  r2  r4  r6  r8  r:  r<  r>  r@  rB  rD  rF  rH  rJ  r   rN  rP  r   rS  rU  r   rY  r^  rb  rm  rq  r   rt  rv  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,  r0  r3  r6  r9  rC  rE  rI  rL  rN  rP  rS  r`  rl  rp  rx  r  r  r  r  r  rx   r  r  re   rc   rW   rW   n   s      5C NU 	  # #"H
9



 GL   "&TT !	T
 T  T T 
T T, * * [ [ 8 8  (   
 
 9 9) ) 	)
  ) ) ) ) ) 
)>
$="X
'
X66-06:H6	6$:)$$
Q@@@?@??F
?E
?V?V?V?Z@[>V?V/
!!!!!#"$**;	? 
NF& * 	
 
>
N71

 	

 
 
 

4) 04 Z57. 
 ' 
>51 1$"0W(YX3HH'+H3=HJNH	H&MM.HM	M
&66GE:>FCF DF 
	F@1N
))))))))03)=A)IL)	)))03)=A)IL)	)*[K#
J

8<
	


59
	
0<0:7 5 5 7 7 2 2 3 3 5 5re   rW   c                      e Zd ZU ded<   ddZddZddZddZddd		 	 	 	 	 	 	 dd
Zdd	 	 	 	 	 	 	 	 	 ddZ	ddZ
ddZy)rh  rW   _seriesc                    | j                   j                         j                  j                  }| j                   j	                         j
                  } | || j                        | j                         S )Nr   )r  rt   
_dataframer   rq   r  _data)r_   r   r  s      rc   r   z_PandasHist.to_frameA  sR    ll99;FFRRLL557AA	9TZZ0$,,GGre   c                <    | j                   j                         dk  S r.  )r  rU  rh   s    rc   is_empty_seriesz_PandasHist.is_empty_seriesG  s    ||!!#a''re   c               l    | j                  |      }| j                  r| j                  |      |dS d|iS )N
breakpointrU  rU  )_zeros_breakpoint_calculate_breakpoint)r_   argrU  s      rc   series_emptyz_PandasHist.series_emptyL  s:    C "&"<"<S"AERRre   c                   | j                   j                  j                  }t        |t              r ||      S  |t        |      dz
        S r.  )r  r   zerosrv   r  r   )r_   r  r  s      rc   r  z_PandasHist._zerosR  s<    ))//'S1uSzJuSX\7JJre   Nr   )labelsr   c               ~    | j                   j                         j                  } || j                  ||dk(  |d      S )Nr   T)rk  r   r  include_lowest)r  rq   cutri   )r_   breaksr  r   r  s        rc   _cutz_PandasHist._cutW  sA     ll//155KKG#
 	
re   r   )r   c               Z    | j                   j                  j                  ||||dk(        S )Nr   )r   r   numendpoint)r  r   linspace)r_   r   endnum_samplesr   s        rc   _linear_spacez_PandasHist._linear_spaceh  s4     ||((11c{Vv=M 2 
 	
re   c                    | j                   j                         | j                   j                         }}||k(  r
|dz  }|dz  }| j                  |||dz         S )z6Prepare bins for histogram calculation from bin_count.r  r   )ri   rP  r   r  )r_   ro  r$  r%  s       rc   _calculate_binsz_PandasHist._calculate_binst  sS    {{($++//*;uE>SLESLE!!%	A>>re   c                    | j                  |      }|j                  dd      j                  |j                  j                  d      }|j                  dd       | j                  r|dd  |dS d	|iS )
NTF)rg  r  r   )
fill_value)dropr  r   r  rU  )r  r  reindexr  
categoriesr  r  )r_   rk  r  rU  s       rc   _calculate_histz_PandasHist._calculate_hist|  s     YYt_
 ''t%'@HHNN%%! I 
 	tT2"&qr(U;;re   r  r  )r  int | list[float]r  rA   )r  r  r  r?   )r  list[float] | _1DArrayr  zSequence[str] | Noner   zLiteral['left', 'right']r  r%  )
r   rh  r  rh  r  r  r   zLiteral['both', 'none']r  r?   )ro  r  r  r?   )rk  r  r  rA   )r  r  r  __annotations__r   r  r  r  r  r  r  r  r  re   rc   rh  rh  >  s    H(
 K (,+2
&
 %	

 )
 

. +1



 

 	

 (

 


? re   rh  )r%  r  )^
__future__r   r  typingr   r   r   r   r   r   narwhals._compliantr   r	    narwhals._pandas_like.series_catr   narwhals._pandas_like.series_dtr   !narwhals._pandas_like.series_listr    narwhals._pandas_like.series_strr   #narwhals._pandas_like.series_structr   narwhals._pandas_like.utilsr   r   r   r   r   r   r   r   r   narwhals._typing_compatr   narwhals._utilsr   r   r   narwhals.dependenciesr   r    narwhals.exceptionsr!   collections.abcr"   r#   r$   r%   r&   typesr'   pandaspdr  r  r(  r*  typing_extensionsr(   r)   r*   narwhals._arrow.typingr+   narwhals._compliant.seriesr,   r   r.   rs   r0   r1   r2   narwhals.dtypesr3   narwhals.typingr4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   r  r  r  rW   rh  r  re   rc   <module>r     s|   "  4 4  < I M K L O
 
 
 1 E E J 5OO 9963CC8%     !HNIG$W$g$ W$ g	$
 W$ g$ F$ V$ h$ x$ h$ x$ h$ x$ W$  g!$" y#$$ "!)$  ,!Y!i! Y! i	!
 Y! i! I! Y! i! y! i! y! i! y! Y!  i!!" y#!$ "!)! 0M5{3' M5`J /"AB J re   