Class StructAccessor (1.22.0)

StructAccessor(
    data=None,
    index: vendored_pandas_typing.Axes | None = None,
    dtype: typing.Optional[
        bigframes.dtypes.DtypeString | bigframes.dtypes.Dtype
    ] = None,
    name: str | None = None,
    copy: typing.Optional[bool] = None,
    *,
    session: typing.Optional[bigframes.session.Session] = None
)

Accessor object for structured data properties of the Series values.

Methods

dtypes

dtypes() -> pandas.core.series.Series

Return the dtype object of each child field of the struct.

Examples:

>>> import bigframes.pandas as bpd
>>> import pyarrow as pa
>>> bpd.options.display.progress_bar = None
>>> s = bpd.Series(
...     [
...         {"version": 1, "project": "pandas"},
...         {"version": 2, "project": "pandas"},
...         {"version": 1, "project": "numpy"},
...     ],
...     dtype=bpd.ArrowDtype(pa.struct(
...         [("version", pa.int64()), ("project", pa.string())]
...     ))
... )
>>> s.struct.dtypes()
project    string[pyarrow]
version              Int64
dtype: object

explode

explode() -> bigframes.dataframe.DataFrame

Extract all child fields of a struct as a DataFrame.

Examples:

>>> import bigframes.pandas as bpd
>>> import pyarrow as pa
>>> bpd.options.display.progress_bar = None
>>> s = bpd.Series(
...     [
...         {"project": "pandas", "version": 1},
...         {"project": "pandas", "version": 2},
...         {"project": "numpy", "version": 1},
...     ],
...     dtype=bpd.ArrowDtype(pa.struct(
...         [("project", pa.string()), ("version", pa.int64())]
...     ))
... )

Extract all child fields.

>>> s.struct.explode()
   project version
0   pandas       1
1   pandas       2
2    numpy       1
<BLANKLINE>
[3 rows x 2 columns]
Returns
Type Description
DataFrame The data corresponding to all child fields.

field

field(name_or_index: str | int) -> bigframes.series.Series

Extract a child field of a struct as a Series.

Examples:

>>> import bigframes.pandas as bpd
>>> import pyarrow as pa
>>> bpd.options.display.progress_bar = None
>>> s = bpd.Series(
...     [
...         {"project": "pandas", "version": 1},
...         {"project": "pandas", "version": 2},
...         {"project": "numpy", "version": 1},
...     ],
...     dtype=bpd.ArrowDtype(pa.struct(
...         [("project", pa.string()), ("version", pa.int64())]
...     ))
... )

Extract by field name.

>>> s.struct.field("project")
0    pandas
1    pandas
2     numpy
Name: project, dtype: string

Extract by field index.

>>> s.struct.field(1)
0    1
1    2
2    1
Name: version, dtype: Int64
Returns
Type Description
Series The data corresponding to the selected child field.