ak.fill_none#

Defined in awkward.operations.ak_fill_none on line 22.

ak.fill_none(array, value, axis=-1, *, highlevel=True, behavior=None, attrs=None)#
Parameters:
  • array – Array-like data (anything ak.to_layout recognizes).

  • value – Data with which to replace None.

  • axis (None or int or str) – If None, replace all None values in the array with the given value. If an int, the dimension at which this operation is applied. The outermost dimension is 0, followed by 1, etc., and negative values count backward from the innermost: -1 is the innermost dimension, -2 is the next level up, etc. If a str, it is interpreted as the name of the axis which maps to an int if named axes are present. Named axes are attached to an array using ak.with_named_axis and removed with ak.without_named_axis; also see the Named axes user guide.

  • highlevel (bool) – If True, return an ak.Array; otherwise, return a low-level ak.contents.Content subclass.

  • behavior (None or dict) – Custom ak.behavior for the output array, if high-level.

  • attrs (None or dict) – Custom attributes for the output array, if high-level.

Replaces missing values (None) with a given value.

For example, in the following

>>> array = ak.Array([[1.1, None, 2.2], [], [None, 3.3, 4.4]])

The None values could be replaced with 0 by

>>> ak.fill_none(array, 0)
<Array [[1.1, 0, 2.2], [], [0, 3.3, 4.4]] type='3 * var * float64'>

The replacement value doesn’t strictly need the same type as the surrounding data. For example, the None values could also be replaced by a string.

>>> ak.fill_none(array, "hi")
<Array [[1.1, 'hi', 2.2], [], ['hi', ...]] type='3 * var * union[float64, s...'>

The list content now has a union type:

>>> ak.fill_none(array, "hi").type.show()
3 * var * union[
    float64,
    string
]

The values could be floating-point numbers or strings.