dtoolkit.accessor.series.expand#
- dtoolkit.accessor.series.expand(s: Series, /, suffix: list[Hashable] = None, delimiter: str = '_', flatten: bool = False) DataFrame [source]#
Transform each element of a list-like to a column.
- Parameters:
- Returns:
- DataFrame
The structure of new column name is
{column name}{delimiter}{suffix}
.
- Raises:
- ValueError
If
s.name
is None.If
len(suffix)
less than the max size ofs
’s elements.
See also
pandas.Series.explode
Transform each element of a list-like to a row.
pandas.DataFrame.explode
Transform each element of a list-like to a row.
dtoolkit.accessor.series.expand
Transform each element of a list-like to a column.
dtoolkit.accessor.dataframe.expand
Transform each element of a list-like to a column.
Examples
>>> import dtoolkit >>> import pandas as pd
Expand the list-like element.
>>> s = pd.Series([[1, 2, 3], 'foo', [], [3, 4]], name="item") >>> s.expand() item_0 item_1 item_2 0 1 2.0 3.0 1 foo NaN NaN 2 None NaN NaN 3 3 4.0 NaN
Expand sub-element type is list-like.
>>> s = pd.Series([("a", "b"), [1, [2, 3]]], name="item") >>> s.expand(flatten=True) item_0 item_1 item_2 0 a b NaN 1 1 2 3.0
Set the columns of name.
>>> s = pd.Series([("a", 1), ["b", 2]], name="item") >>> s.expand(suffix=["index", "value"], delimiter="-") item-index item-value 0 a 1 1 b 2
Also could handle different lengths of element and suffix list.
>>> s = pd.Series([(1, 2), [1, 2, 3]], name="item") >>> s.expand() item_0 item_1 item_2 0 1 2 NaN 1 1 2 3.0 >>> s.expand(suffix=["a", "b", "c", "d"]) item_a item_b item_c 0 1 2 NaN 1 1 2 3.0