find_consecutive_value_blocks_in_series

trashpanda.find_consecutive_value_blocks_in_series(source: pandas.core.series.Series) pandas.core.series.Series

Creates a MultiIndex for consecutive values within a Series.

Warning

In development and not fully tested.

Parameters

source – Series with potential consecutive values.

Returns

Series with MultiIndex stating the block and origin index.

Return type

Series

Notes

Added in 1.2

Examples

Adding the MultiIndex with a leading block integer enables the easy selection/iteration of the single blocks.

>>> from pandas import Series, Index
>>> from doctestprinter import print_pandas
>>> sample_series = Series(
...     list(iter("A--AA-AAA")),
...     index=Index(list(iter("abcdefghi")), name="old_index"),
...     name="sample"
... )
>>> block_sample = find_consecutive_value_blocks_in_series(source=sample_series)
>>> print_pandas(block_sample)
block  old_index  sample
    0          a       A
    1          b       -
               c       -
    2          d       A
               e       A
    3          f       -
    4          g       A
               h       A
               i       A
>>> block_sample.loc[1]
old_index
b    -
c    -
Name: sample, dtype: object

This function also works with MultiIndexes.

>>> from pandas import MultiIndex
>>> from doctestprinter import print_pandas
>>> sample_multi_index = MultiIndex.from_arrays(
...     [[0, 0, 0, 1, 1, 1, 2, 2, 2], list(iter("abcdefghi"))],
...     names=["old-index-1", "old-index-2"]
... )
>>> sample_series = Series(
...     list(iter("A--AA-AAA")), index=sample_multi_index, name="sample"
... )
>>> block_sample = find_consecutive_value_blocks_in_series(source=sample_series)
>>> print_pandas(block_sample)
block  old-index-1  old-index-2  sample
    0            0            a       A
    1                         b       -
                              c       -
    2            1            d       A
                              e       A
    3                         f       -
    4            2            g       A
                              h       A
                              i       A