ak.local_index -------------- .. py:module: ak.local_index Defined in `awkward.operations.ak_local_index `__ on `line 17 `__. .. py:function:: ak.local_index(array, axis=-1, *, highlevel=True, behavior=None, attrs=None) :param array: Array-like data (anything :py:obj:`ak.to_layout` recognizes). :param axis: 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. :type axis: int :param highlevel: If True, return an :py:obj:`ak.Array`; otherwise, return a low-level :py:obj:`ak.contents.Content` subclass. :type highlevel: bool :param behavior: Custom :py:obj:`ak.behavior` for the output array, if high-level. :type behavior: None or dict :param attrs: Custom attributes for the output array, if high-level. :type attrs: None or dict For example, .. code-block:: python >>> array = ak.Array([ ... [[0.0, 1.1, 2.2], []], ... [[3.3, 4.4]], ... [], ... [[5.5], [], [6.6, 7.7, 8.8, 9.9]]]) >>> ak.local_index(array, axis=0) >>> ak.local_index(array, axis=1) >>> ak.local_index(array, axis=2) Note that you can make a Pandas-style MultiIndex by calling this function on every axis. .. code-block:: python >>> multiindex = ak.zip([ak.local_index(array, i) for i in range(array.ndim)]) >>> multiindex.show() [[[(0, 0, 0), (0, 0, 1), (0, 0, 2)], []], [[(1, 0, 0), (1, 0, 1)]], [], [[(3, 0, 0)], [], [(3, 2, 0), (3, 2, 1), (3, 2, 2), (3, 2, 3)]]] >>> ak.flatten(ak.flatten(multiindex)).show() [(0, 0, 0), (0, 0, 1), (0, 0, 2), (1, 0, 0), (1, 0, 1), (3, 0, 0), (3, 2, 0), (3, 2, 1), (3, 2, 2), (3, 2, 3)] But if you're interested in Pandas, you may want to use :py:obj:`ak.to_dataframe` directly. .. code-block:: python >>> ak.to_dataframe(array) values entry subentry subsubentry 0 0 0 0.0 1 1.1 2 2.2 1 0 0 3.3 1 4.4 3 0 0 5.5 2 0 6.6 1 7.7 2 8.8 3 9.9