pandas.Series.struct.field#

Series.struct.field(name_or_index)[源代码]#

提取结构体的一个子字段作为系列。

参数:
name_or_indexstr | bytes | int | 表达式 | 列表

要提取的子字段的名称或索引。

对于类似列表的输入,这将索引到一个嵌套的结构。

返回:
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]