pyarrow.Field#

class pyarrow.Field#

Bases: _Weakrefable

A named field, with a data type, nullability, and optional metadata.

Notes

Do not use this class’s constructor directly; use pyarrow.field

Examples

Create an instance of pyarrow.Field:

>>> import pyarrow as pa
>>> pa.field('key', pa.int32())
pyarrow.Field<key: int32>
>>> pa.field('key', pa.int32(), nullable=False)
pyarrow.Field<key: int32 not null>
>>> field = pa.field('key', pa.int32(),
...                  metadata={"key": "Something important"})
>>> field
pyarrow.Field<key: int32>
>>> field.metadata
{b'key': b'Something important'}

Use the field to create a struct type:

>>> pa.struct([field])
StructType(struct<key: int32>)
__init__(*args, **kwargs)#

Methods

__init__(*args, **kwargs)

equals(self, Field other, ...)

Test if this field is equal to the other

flatten(self)

Flatten this field.

remove_metadata(self)

Create new field without metadata, if any

with_metadata(self, metadata)

Add metadata as dict of string keys and values to Field

with_name(self, name)

A copy of this field with the replaced name

with_nullable(self, nullable)

A copy of this field with the replaced nullability

with_type(self, DataType new_type)

A copy of this field with the replaced type

Attributes

metadata

The field metadata (if any is set).

name

The field name.

nullable

The field nullability.

type

equals(self, Field other, bool check_metadata=False)#

Test if this field is equal to the other

Parameters:
otherpyarrow.Field
check_metadatabool, default False

Whether Field metadata equality should be checked as well.

Returns:
is_equalbool

Examples

>>> import pyarrow as pa
>>> f1 = pa.field('key', pa.int32())
>>> f2 = pa.field('key', pa.int32(), nullable=False)
>>> f1.equals(f2)
False
>>> f1.equals(f1)
True
flatten(self)#

Flatten this field. If a struct field, individual child fields will be returned with their names prefixed by the parent’s name.

Returns:
fieldsList[pyarrow.Field]

Examples

>>> import pyarrow as pa
>>> f1 = pa.field('bar', pa.float64(), nullable=False)
>>> f2 = pa.field('foo', pa.int32()).with_metadata({"key": "Something important"})
>>> ff = pa.field('ff', pa.struct([f1, f2]), nullable=False)

Flatten a struct field:

>>> ff
pyarrow.Field<ff: struct<bar: double not null, foo: int32> not null>
>>> ff.flatten()
[pyarrow.Field<ff.bar: double not null>, pyarrow.Field<ff.foo: int32>]
metadata#

The field metadata (if any is set).

Returns:
metadatadict or None

Examples

>>> import pyarrow as pa
>>> field = pa.field('key', pa.int32(),
...                  metadata={"key": "Something important"})
>>> field.metadata
{b'key': b'Something important'}
name#

The field name.

Examples

>>> import pyarrow as pa
>>> field = pa.field('key', pa.int32())
>>> field.name
'key'
nullable#

The field nullability.

Examples

>>> import pyarrow as pa
>>> f1 = pa.field('key', pa.int32())
>>> f2 = pa.field('key', pa.int32(), nullable=False)
>>> f1.nullable
True
>>> f2.nullable
False
remove_metadata(self)#

Create new field without metadata, if any

Returns:
fieldpyarrow.Field

Examples

>>> import pyarrow as pa
>>> field = pa.field('key', pa.int32(),
...                  metadata={"key": "Something important"})
>>> field.metadata
{b'key': b'Something important'}

Create new field by removing the metadata from the existing one:

>>> field_new = field.remove_metadata()
>>> field_new.metadata
type#
with_metadata(self, metadata)#

Add metadata as dict of string keys and values to Field

Parameters:
metadatadict

Keys and values must be string-like / coercible to bytes

Returns:
fieldpyarrow.Field

Examples

>>> import pyarrow as pa
>>> field = pa.field('key', pa.int32())

Create new field by adding metadata to existing one:

>>> field_new = field.with_metadata({"key": "Something important"})
>>> field_new
pyarrow.Field<key: int32>
>>> field_new.metadata
{b'key': b'Something important'}
with_name(self, name)#

A copy of this field with the replaced name

Parameters:
namestr
Returns:
fieldpyarrow.Field

Examples

>>> import pyarrow as pa
>>> field = pa.field('key', pa.int32())
>>> field
pyarrow.Field<key: int32>

Create new field by replacing the name of an existing one:

>>> field_new = field.with_name('lock')
>>> field_new
pyarrow.Field<lock: int32>
with_nullable(self, nullable)#

A copy of this field with the replaced nullability

Parameters:
nullablebool
Returns:
field: pyarrow.Field

Examples

>>> import pyarrow as pa
>>> field = pa.field('key', pa.int32())
>>> field
pyarrow.Field<key: int32>
>>> field.nullable
True

Create new field by replacing the nullability of an existing one:

>>> field_new = field.with_nullable(False)
>>> field_new
pyarrow.Field<key: int32 not null>
>>> field_new.nullable
False
with_type(self, DataType new_type)#

A copy of this field with the replaced type

Parameters:
new_typepyarrow.DataType
Returns:
fieldpyarrow.Field

Examples

>>> import pyarrow as pa
>>> field = pa.field('key', pa.int32())
>>> field
pyarrow.Field<key: int32>

Create new field by replacing type of an existing one:

>>> field_new = field.with_type(pa.int64())
>>> field_new
pyarrow.Field<key: int64>