pandas.Series.struct.field#
- Series.struct.field(name_or_index)[源代码]#
将 struct 的子字段提取为 Series。
- Parameters:
- name_or_indexstr | bytes | int | expression | list
要提取的子字段的名称或索引。
对于类似列表的输入,这将索引到嵌套的 struct 中。
- Returns:
- pandas.Series
对应于选定子字段的数据。
参见
Series.struct.explode将所有子字段作为 DataFrame 返回。
Notes
结果 Series 的名称将根据以下规则设置:
对于字符串、字节或整数 `name_or_index`(或这些值的列表,用于嵌套选择),Series 的名称设置为选定字段的名称。
对于
pyarrow.compute.Expression,将设置为表达式的字符串形式。对于类似列表的 name_or_index,名称将设置为最终选定字段的名称。
Examples
>>> 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]
对于嵌套的 struct 类型,您可以传递一个值列表来索引多个级别:
>>> 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]