pandas.Series.struct.field#

Series.struct.field(name_or_index)[источник]#

Извлечь дочернее поле структуры как Series.

Параметры:
name_or_indexstr | bytes | int | expression | list

Имя или индекс дочернего поля для извлечения.

Для входных данных, подобных списку, это будет индексировать во вложенную структуру.

Возвращает:
pandas.Series

Данные, соответствующие выбранному дочернему полю.

Смотрите также

Series.struct.explode

Возвращает все дочерние поля как DataFrame.

Примечания

Имя результирующего Series будет установлено с использованием следующих правил:

  • Для строк, байтов или целых чисел name_or_index (или список таких, для вложенного выбора), имя Series устанавливается в имя выбранного поля.

  • Для pyarrow.compute.Expression, это устанавливается в строковую форму выражения.

  • Для спискообразных name_or_index, имя будет установлено в имя выбранного конечного поля.

Примеры

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

Извлечь по имени поля.

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

Извлечение по индексу поля.

>>> s.struct.field(0)
0    1
1    2
2    1
Name: version, dtype: int64[pyarrow]

Или выражение

>>> import pyarrow.compute as pc
>>> s.struct.field(pc.field("project"))
0    pandas
1    pandas
2     numpy
Name: project, dtype: string[pyarrow]

Для вложенных структурных типов можно передать список значений для индексации нескольких уровней:

>>> version_type = pa.struct([
...     ("major", pa.int64()),
...     ("minor", pa.int64()),
... ])
>>> s = pd.Series(
...     [
...         {"version": {"major": 1, "minor": 5}, "project": "pandas"},
...         {"version": {"major": 2, "minor": 1}, "project": "pandas"},
...         {"version": {"major": 1, "minor": 26}, "project": "numpy"},
...     ],
...     dtype=pd.ArrowDtype(pa.struct(
...         [("version", version_type), ("project", pa.string())]
...     ))
... )
>>> s.struct.field(["version", "minor"])
0     5
1     1
2    26
Name: minor, dtype: int64[pyarrow]
>>> s.struct.field([0, 0])
0    1
1    2
2    1
Name: major, dtype: int64[pyarrow]