
    'hL                        S SK Jr  S SKJrJr  S SKJr  S SKJ	r	  S SK
Jr  \(       a   S SKJr  S SKJr  S SKJr  S S	KJrJr  S S
KJr  \ " S S5      5       rg)    )annotations)TYPE_CHECKINGCallable)	functions)wrap_s)expr_dispatch)Sequence)Series)PySeries)IntoExprIntoExprColumn)Exprc                     \ rS rSrSrSrS+S jrS,S jrS,S jrS,S jr	S-S.S jjr
S-S.S	 jjrS,S
 jrSS.S/S jjrS,S jrS,S jrS,S jrS,S jr S0SS.       S1S jjjrS2SS.S3S jjjrS2SS.S3S jjjrS,S jrSSSS.       S4S jjrS,S jrS,S jrS,S jrSS.S5S jjrS,S  jrS,S! jrSS".S6S# jjrS,S$ jrSS%.S7S& jjrS8S' jr  S0   S9S( jjr!S-S:S) jjr"S*r#g);ArrayNameSpace   z$Namespace for array related methods.arrc                &    UR                   U l         g N_s)selfseriess     fC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\polars/series/array.py__init__ArrayNameSpace.__init__   s    "II    c                    g)z
Compute the min values of the sub-arrays.

Examples
--------
>>> s = pl.Series("a", [[1, 2], [4, 3]], dtype=pl.Array(pl.Int64, 2))
>>> s.arr.min()
shape: (2,)
Series: 'a' [i64]
[
    1
    3
]
N r   s    r   minArrayNameSpace.min       r   c                    g)z
Compute the max values of the sub-arrays.

Examples
--------
>>> s = pl.Series("a", [[1, 2], [4, 3]], dtype=pl.Array(pl.Int64, 2))
>>> s.arr.max()
shape: (2,)
Series: 'a' [i64]
[
    2
    4
]
Nr   r   s    r   maxArrayNameSpace.max+   r"   r   c                    g)a  
Compute the sum values of the sub-arrays.

Notes
-----
If there are no non-null elements in a row, the output is `0`.

Examples
--------
>>> s = pl.Series([[1, 2], [4, 3]], dtype=pl.Array(pl.Int64, 2))
>>> s.arr.sum()
shape: (2,)
Series: '' [i64]
[
    3
    7
]
Nr   r   s    r   sumArrayNameSpace.sum;   r"   r   c                    g)z
Compute the std of the values of the sub-arrays.

Examples
--------
>>> s = pl.Series("a", [[1, 2], [4, 3]], dtype=pl.Array(pl.Int64, 2))
>>> s.arr.std()
shape: (2,)
Series: 'a' [f64]
[
    0.707107
    0.707107
]
Nr   r   ddofs     r   stdArrayNameSpace.stdO   r"   r   c                    g)z
Compute the var of the values of the sub-arrays.

Examples
--------
>>> s = pl.Series("a", [[1, 2], [4, 3]], dtype=pl.Array(pl.Int64, 2))
>>> s.arr.var()
shape: (2,)
Series: 'a' [f64]
[
        0.5
        0.5
]
Nr   r*   s     r   varArrayNameSpace.var_   r"   r   c                    g)z
Compute the median of the values of the sub-arrays.

Examples
--------
>>> s = pl.Series("a", [[1, 2], [4, 3]], dtype=pl.Array(pl.Int64, 2))
>>> s.arr.median()
shape: (2,)
Series: 'a' [f64]
[
    1.5
    3.5
]
Nr   r   s    r   medianArrayNameSpace.mediano   r"   r   F)maintain_orderc                   g)au  
Get the unique/distinct values in the array.

Parameters
----------
maintain_order
    Maintain order of data. This requires more work.

Returns
-------
Series
    Series of data type :class:`List`.

Examples
--------
>>> s = pl.Series([[1, 1, 2], [3, 4, 5]], dtype=pl.Array(pl.Int64, 3))
>>> s.arr.unique()
shape: (2,)
Series: '' [list[i64]]
[
    [1, 2]
    [3, 4, 5]
]
Nr   )r   r4   s     r   uniqueArrayNameSpace.unique   r"   r   c                    g)z
Count the number of unique values in every sub-arrays.

Examples
--------
>>> s = pl.Series("a", [[1, 2], [4, 4]], dtype=pl.Array(pl.Int64, 2))
>>> s.arr.n_unique()
shape: (2,)
Series: 'a' [u32]
[
    2
    1
]
Nr   r   s    r   n_uniqueArrayNameSpace.n_unique   r"   r   c                    g)a5  
Convert an Array column into a List column with the same inner data type.

Returns
-------
Series
    Series of data type :class:`List`.

Examples
--------
>>> s = pl.Series([[1, 2], [3, 4]], dtype=pl.Array(pl.Int8, 2))
>>> s.arr.to_list()
shape: (2,)
Series: '' [list[i8]]
[
        [1, 2]
        [3, 4]
]
Nr   r   s    r   to_listArrayNameSpace.to_list   r"   r   c                    g)a  
Evaluate whether any boolean value is true for every subarray.

Returns
-------
Series
    Series of data type :class:`Boolean`.

Notes
-----
If there are no non-null elements in a row, the output is `False`.

Examples
--------
>>> s = pl.Series(
...     [[True, True], [False, True], [False, False], [None, None], None],
...     dtype=pl.Array(pl.Boolean, 2),
... )
>>> s.arr.any()
shape: (5,)
Series: '' [bool]
[
    true
    true
    false
    false
    null
]
Nr   r   s    r   anyArrayNameSpace.any   r"   r   c                    g)a  
Return the number of elements in each array.

Returns
-------
Series
    Series of data type :class:`UInt32`.

Examples
--------
>>> s = pl.Series("a", [[1, 2], [4, 3]], dtype=pl.Array(pl.Int64, 2))
>>> s.arr.len()
shape: (2,)
Series: 'a' [u32]
[
    2
    2
]
Nr   r   s    r   lenArrayNameSpace.len   r"   r   N)as_arrayc                   g)uc  
Slice the sub-arrays.

Parameters
----------
offset
    The starting index of the slice.
length
    The length of the slice.

Returns
-------
Series
    Series of data type :class:`Array`.

Examples
--------
>>> s = pl.Series(
...     [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12]],
...     dtype=pl.Array(pl.Int64, 6),
... )
>>> s.arr.slice(1)
shape: (2,)
Series: '' [list[i64]]
[
    [2, 3, … 6]
    [8, 9, … 12]
]
>>> s.arr.slice(1, 3, as_array=True)
shape: (2,)
Series: '' [array[i64, 3]]
[
    [2, 3, 4]
    [8, 9, 10]
]
>>> s.arr.slice(-2)
shape: (2,)
Series: '' [list[i64]]
[
    [5, 6]
    [11, 12]
]
Nr   )r   offsetlengthrD   s       r   sliceArrayNameSpace.slice   r"   r   c                   g)u;  
Get the first `n` elements of the sub-arrays.

Parameters
----------
n
    Number of values to return for each sublist.
as_array
    Return result as a fixed-length `Array`, otherwise as a `List`.
    If true `n` must be a constant value.

Examples
--------
>>> s = pl.Series(
...     [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12]],
...     dtype=pl.Array(pl.Int64, 6),
... )
>>> s.arr.head()
shape: (2,)
Series: '' [list[i64]]
[
    [1, 2, … 5]
    [7, 8, … 11]
]
>>> s.arr.head(3, as_array=True)
shape: (2,)
Series: '' [array[i64, 3]]
[
    [1, 2, 3]
    [7, 8, 9]
]
Nr   r   nrD   s      r   headArrayNameSpace.head%  r"   r   c                   g)u<  
Slice the last `n` values of every sublist.

Parameters
----------
n
    Number of values to return for each sublist.
as_array
    Return result as a fixed-length `Array`, otherwise as a `List`.
    If true `n` must be a constant value.

Examples
--------
>>> s = pl.Series(
...     [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12]],
...     dtype=pl.Array(pl.Int64, 6),
... )
>>> s.arr.tail()
shape: (2,)
Series: '' [list[i64]]
[
    [2, 3, … 6]
    [8, 9, … 12]
]
>>> s.arr.tail(3, as_array=True)
shape: (2,)
Series: '' [array[i64, 3]]
[
    [4, 5, 6]
    [10, 11, 12]
]
Nr   rK   s      r   tailArrayNameSpace.tailG  r"   r   c                    g)a  
Evaluate whether all boolean values are true for every subarray.

Returns
-------
Series
    Series of data type :class:`Boolean`.

Notes
-----
If there are no non-null elements in a row, the output is `True`.

Examples
--------
>>> s = pl.Series(
...     [[True, True], [False, True], [False, False], [None, None], None],
...     dtype=pl.Array(pl.Boolean, 2),
... )
>>> s.arr.all()
shape: (5,)
Series: '' [bool]
[
    true
    false
    false
    true
    null
]
Nr   r   s    r   allArrayNameSpace.alli  r"   r   T)
descending
nulls_lastmultithreadedc                   g)a  
Sort the arrays in this column.

Parameters
----------
descending
    Sort in descending order.
nulls_last
    Place null values last.
multithreaded
    Sort using multiple threads.

Examples
--------
>>> s = pl.Series("a", [[3, 2, 1], [9, 1, 2]], dtype=pl.Array(pl.Int64, 3))
>>> s.arr.sort()
shape: (2,)
Series: 'a' [array[i64, 3]]
[
    [1, 2, 3]
    [1, 2, 9]
]
>>> s.arr.sort(descending=True)
shape: (2,)
Series: 'a' [array[i64, 3]]
[
    [3, 2, 1]
    [9, 2, 1]
]

Nr   )r   rU   rV   rW   s       r   sortArrayNameSpace.sort  r"   r   c                    g)z
Reverse the arrays in this column.

Examples
--------
>>> s = pl.Series("a", [[3, 2, 1], [9, 1, 2]], dtype=pl.Array(pl.Int64, 3))
>>> s.arr.reverse()
shape: (2,)
Series: 'a' [array[i64, 3]]
[
    [1, 2, 3]
    [2, 1, 9]
]

Nr   r   s    r   reverseArrayNameSpace.reverse  r"   r   c                    g)aR  
Retrieve the index of the minimal value in every sub-array.

Returns
-------
Series
    Series of data type :class:`UInt32` or :class:`UInt64`
    (depending on compilation).

Examples
--------
>>> s = pl.Series("a", [[3, 2, 1], [9, 1, 2]], dtype=pl.Array(pl.Int64, 3))
>>> s.arr.arg_min()
shape: (2,)
Series: 'a' [u32]
[
    2
    1
]

Nr   r   s    r   arg_minArrayNameSpace.arg_min  r"   r   c                    g)aR  
Retrieve the index of the maximum value in every sub-array.

Returns
-------
Series
    Series of data type :class:`UInt32` or :class:`UInt64`
    (depending on compilation).

Examples
--------
>>> s = pl.Series("a", [[0, 9, 3], [9, 1, 2]], dtype=pl.Array(pl.Int64, 3))
>>> s.arr.arg_max()
shape: (2,)
Series: 'a' [u32]
[
    1
    0
]

Nr   r   s    r   arg_maxArrayNameSpace.arg_max  r"   r   )null_on_oobc                   g)a  
Get the value by index in the sub-arrays.

So index `0` would return the first item of every sublist
and index `-1` would return the last item of every sublist
if an index is out of bounds, it will return a `None`.

Parameters
----------
index
    Index to return per sublist
null_on_oob
    Behavior if an index is out of bounds:
    True -> set as null
    False -> raise an error

Returns
-------
Series
    Series of innter data type.

Examples
--------
>>> s = pl.Series(
...     "a", [[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=pl.Array(pl.Int32, 3)
... )
>>> s.arr.get(pl.Series([1, -2, 0]), null_on_oob=True)
shape: (3,)
Series: 'a' [i32]
[
    2
    5
    7
]

Nr   )r   indexrd   s      r   getArrayNameSpace.get  r"   r   c                    g)z
Get the first value of the sub-arrays.

Examples
--------
>>> s = pl.Series(
...     "a", [[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=pl.Array(pl.Int32, 3)
... )
>>> s.arr.first()
shape: (3,)
Series: 'a' [i32]
[
    1
    4
    7
]

Nr   r   s    r   firstArrayNameSpace.first  r"   r   c                    g)z
Get the last value of the sub-arrays.

Examples
--------
>>> s = pl.Series(
...     "a", [[1, 2, 3], [4, 5, 6], [7, 9, 8]], dtype=pl.Array(pl.Int32, 3)
... )
>>> s.arr.last()
shape: (3,)
Series: 'a' [i32]
[
    3
    6
    8
]

Nr   r   s    r   lastArrayNameSpace.last(  r"   r   )ignore_nullsc                   g)ac  
Join all string items in a sub-array and place a separator between them.

This errors if inner type of array `!= String`.

Parameters
----------
separator
    string to separate the items with
ignore_nulls
    Ignore null values (default).

    If set to ``False``, null values will be propagated.
    If the sub-list contains any null values, the output is ``None``.

Returns
-------
Series
    Series of data type :class:`String`.

Examples
--------
>>> s = pl.Series([["x", "y"], ["a", "b"]], dtype=pl.Array(pl.String, 2))
>>> s.arr.join(separator="-")
shape: (2,)
Series: '' [str]
[
    "x-y"
    "a-b"
]

Nr   )r   	separatorro   s      r   joinArrayNameSpace.join<  r"   r   c                    g)aE  
Returns a column with a separate row for every array element.

Returns
-------
Series
    Series with the data type of the array elements.

Examples
--------
>>> s = pl.Series("a", [[1, 2, 3], [4, 5, 6]], dtype=pl.Array(pl.Int64, 3))
>>> s.arr.explode()
shape: (6,)
Series: 'a' [i64]
[
    1
    2
    3
    4
    5
    6
]
Nr   r   s    r   explodeArrayNameSpace.explode^  r"   r   )nulls_equalc                   g)a  
Check if sub-arrays contain the given item.

Parameters
----------
item
    Item that will be checked for membership
nulls_equal : bool, default True
    If True, treat null as a distinct value. Null values will not propagate.

Returns
-------
Series
    Series of data type :class:`Boolean`.

Examples
--------
>>> s = pl.Series(
...     "a", [[3, 2, 1], [1, 2, 3], [4, 5, 6]], dtype=pl.Array(pl.Int32, 3)
... )
>>> s.arr.contains(1)
shape: (3,)
Series: 'a' [bool]
[
    true
    true
    false
]

Nr   )r   itemrw   s      r   containsArrayNameSpace.containsw  r"   r   c                    g)a0  
Count how often the value produced by `element` occurs.

Parameters
----------
element
    An expression that produces a single value

Examples
--------
>>> s = pl.Series("a", [[1, 2, 3], [2, 2, 2]], dtype=pl.Array(pl.Int64, 3))
>>> s.arr.count_matches(2)
shape: (2,)
Series: 'a' [u32]
[
    1
    3
]

Nr   )r   elements     r   count_matchesArrayNameSpace.count_matches  r"   r   c                    [        U R                  5      nUR                  5       R                  [        R
                  " UR                  5      R                  R                  U5      5      R                  5       $ )uf  
Convert the series of type `Array` to a series of type `Struct`.

Parameters
----------
fields
    If the name and number of the desired fields is known in advance
    a list of field names can be given, which will be assigned by index.
    Otherwise, to dynamically assign field names, a custom function can be
    used; if neither are set, fields will be `field_0, field_1 .. field_n`.

Examples
--------
Convert array to struct with default field name assignment:

>>> s1 = pl.Series("n", [[0, 1, 2], [3, 4, 5]], dtype=pl.Array(pl.Int8, 3))
>>> s2 = s1.arr.to_struct()
>>> s2
shape: (2,)
Series: 'n' [struct[3]]
[
    {0,1,2}
    {3,4,5}
]
>>> s2.struct.fields
['field_0', 'field_1', 'field_2']

Convert array to struct with field name assignment by function/index:

>>> s3 = s1.arr.to_struct(fields=lambda idx: f"n{idx:02}")
>>> s3.struct.fields
['n00', 'n01', 'n02']

Convert array to struct with field name assignment by
index from a list of names:

>>> s1.arr.to_struct(fields=["one", "two", "three"]).struct.unnest()
shape: (2, 3)
┌─────┬─────┬───────┐
│ one ┆ two ┆ three │
│ --- ┆ --- ┆ ---   │
│ i8  ┆ i8  ┆ i8    │
╞═════╪═════╪═══════╡
│ 0   ┆ 1   ┆ 2     │
│ 3   ┆ 4   ┆ 5     │
└─────┴─────┴───────┘
)
r   r   to_frameselectFcolnamer   	to_struct	to_series)r   fieldsss      r   r   ArrayNameSpace.to_struct  sO    f 477Ozz|""155=#4#4#>#>v#FGQQSSr   c                    g)a  
Shift array values by the given number of indices.

Parameters
----------
n
    Number of indices to shift forward. If a negative value is passed, values
    are shifted in the opposite direction instead.

Notes
-----
This method is similar to the `LAG` operation in SQL when the value for `n`
is positive. With a negative value for `n`, it is similar to `LEAD`.

Examples
--------
By default, array values are shifted forward by one index.

>>> s = pl.Series([[1, 2, 3], [4, 5, 6]], dtype=pl.Array(pl.Int64, 3))
>>> s.arr.shift()
shape: (2,)
Series: '' [array[i64, 3]]
[
    [null, 1, 2]
    [null, 4, 5]
]

Pass a negative value to shift in the opposite direction instead.

>>> s.arr.shift(-2)
shape: (2,)
Series: '' [array[i64, 3]]
[
    [3, null, null]
    [6, null, null]
]
Nr   )r   rL   s     r   shiftArrayNameSpace.shift  r"   r   r   )r   r
   returnNone)r   r
   )   )r+   intr   r
   )r4   boolr   r
   r   )rF   
int | ExprrG   zint | Expr | NonerD   r   r   r
   )   )rL   r   rD   r   r   r
   )rU   r   rV   r   rW   r   r   r
   )rf   int | IntoExprColumnrd   r   r   r
   )rq   r   ro   r   r   r
   )ry   r   rw   r   r   r
   )r}   r   r   r
   )r   z+Callable[[int], str] | Sequence[str] | Noner   r
   )rL   r   r   r
   )$__name__
__module____qualname____firstlineno____doc__	_accessorr   r    r$   r'   r,   r/   r2   r6   r9   r<   r?   rB   rH   rM   rP   rS   rY   r\   r_   rb   rg   rj   rm   rr   ru   rz   r~   r   r   __static_attributes__r   r   r   r   r      s]   .I&  (    05 4 *>0 %)1
 11 "1
 1 
1f %    D %    DD ! "% % 	%
 % 
%N".. GL $L(( GK  D2 ?C @0 ?C4T;4T 
4Tl% %r   r   N)
__future__r   typingr   r   polarsr   r   polars._utils.wrapr   polars.series.utilsr   collections.abcr	   r
   polars._plrr   polars._typingr   r   polars.expr.exprr   r   r   r   r   <module>r      sB    " * ! % -($7% u u ur   