pandas.Index.opti.to_indexset#
- Index.opti.to_indexset()[source]#
Cast an Index into an IndexSet1D/IndexSetND.
Note: The opti-extensions package 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 index level 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.opti.to_indexsetCast a Series into an IndexSet1D.
pandas.DataFrame.opti.to_indexsetCast a DataFrame into an IndexSet1D/IndexSetND.
Examples
>>> import pandas as pd >>> import opti_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.opti.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.opti.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.opti.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.opti.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: ...
>>> cities.index.opti.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: ...
>>> cities.index.opti.to_indexset() IndexSetND: (ZONE, CITY) [('Asia', 'Delhi'), ('Americas', 'Seattle'), ('Asia', 'Tokyo')]