pandas.Index.dex.to_indexset#

Index.dex.to_indexset()#

Cast an Index into an IndexSet1D/IndexSetND.

Note: The docplex-extensions pacakge has to be imported first to use this method with pandas.

Returns:
IndexSet1D or IndexSetND
  • A single-level index will be cast into an IndexSet1D consisting of its values. The index name will be set as the IndexSet1D.name attribute (as str).

  • A multi-level index will be cast into an IndexSetND consisting of its values. The column names will be set as the IndexSetND.names attribute (as list[str]).

Raises:
ValueError

If the Index is empty.

TypeError

If the Index has non-scalar value(s) (any iterable except string).

ValueError

If the Index has duplicate values.

See also

pandas.Series.dex.to_indexset

Cast a Series into an IndexSet1D.

pandas.DataFrame.dex.to_indexset

Cast a DataFrame into an IndexSet1D/IndexSetND.

Examples

>>> import pandas as pd
>>> import docplex_extensions  # required to access this method

Casting a DataFrame’s single-level row index into an IndexSet1D:

>>> warehouses = pd.DataFrame(
...     [10, 10, 5],
...     index=pd.Index(['WH-A', 'WH-B', 'WH-C'], name='WAREHOUSE'),
...     columns=['INVENTORY'],
... )
>>> warehouses
           INVENTORY
WAREHOUSE
WH-A              10
WH-B              10
WH-C               5
>>> warehouses.index.dex.to_indexset()
IndexSet1D: (WAREHOUSE)
['WH-A', 'WH-B', 'WH-C']

Casting a DataFrame’s multi-level row index into an IndexSetND:

>>> warehouses = pd.DataFrame(
...     [10, 10, 5],
...     index=pd.MultiIndex.from_tuples(
...         [('EAST', 'WH-A'), ('EAST', 'WH-B'), ('WEST', 'WH-C')],
...         names=('ZONE', 'WAREHOUSE'),
...     ),
...     columns=['CAPACITY'],
... )
>>> warehouses
                CAPACITY
ZONE WAREHOUSE
EAST WH-A             10
     WH-B             10
WEST WH-C              5
>>> warehouses.index.dex.to_indexset()
IndexSetND: (ZONE, WAREHOUSE)
[('EAST', 'WH-A'), ('EAST', 'WH-B'), ('WEST', 'WH-C')]

Casting a DataFrame’s single-level column index into an IndexSet1D:

>>> warehouses = pd.DataFrame(
...     {'WH-A': [10], 'WH-B': [10], 'WH-C': [5]}, index=['CAPACITY']
... ).rename_axis('WAREHOUSE', axis=1)
>>> warehouses
WAREHOUSE  WH-A  WH-B  WH-C
CAPACITY     10    10     5
>>> warehouses.columns.dex.to_indexset()
IndexSet1D: (WAREHOUSE)
['WH-A', 'WH-B', 'WH-C']

Casting a DataFrame’s multi-level column index into an IndexSetND:

>>> warehouses = pd.DataFrame(
...     {('EAST', 'WH-A'): [10], ('EAST', 'WH-B'): [10], ('WEST', 'WH-C'): [5]},
...     index=['CAPACITY'],
... ).rename_axis(('ZONE', 'WAREHOUSE'), axis=1)
>>> warehouses
ZONE      EAST      WEST
WAREHOUSE WH-A WH-B WH-C
CAPACITY    10   10    5
>>> warehouses.columns.dex.to_indexset()
IndexSetND: (ZONE, WAREHOUSE)
[('EAST', 'WH-A'), ('EAST', 'WH-B'), ('WEST', 'WH-C')]

Casting a Series’ single-level index into an IndexSet1D:

>>> cities = pd.Series(
...     ['A', 'B', 'C'],
...     index=pd.Index(['Delhi', 'Seattle', 'Tokyo'], name='CITY'),
...     name='ID',
... )
>>> cities
CITY
Delhi      A
Seattle    B
Tokyo      C
Name: ID, dtype: object
>>> cities.index.dex.to_indexset()
IndexSet1D: (CITY)
['Delhi', 'Seattle', 'Tokyo']

Casting a Series’ multi-level index into an IndexSetND:

>>> cities = pd.Series(
...     ['A', 'B', 'C'],
...     index=(('Asia', 'Delhi'), ('Americas', 'Seattle'), ('Asia', 'Tokyo')),
...     name='ID',
... ).rename_axis(['ZONE', 'CITY'])
>>> cities
ZONE      CITY
Asia      Delhi      A
Americas  Seattle    B
Asia      Tokyo      C
Name: ID, dtype: object
>>> cities.index.dex.to_indexset()
IndexSetND: (ZONE, CITY)
[('Asia', 'Delhi'), ('Americas', 'Seattle'), ('Asia', 'Tokyo')]