Index Objects¶
Index Purpose¶
1. Label Container¶
Index provides axis labels:
import pandas as pd
idx = pd.Index(['a', 'b', 'c', 'd'])
s = pd.Series([10, 20, 30, 40], index=idx)
2. Immutability¶
Indexes are immutable:
idx = pd.Index(['a', 'b', 'c'])
# idx[0] = 'x' # TypeError
3. Types¶
pd.Index # Generic
pd.RangeIndex # Efficient range
pd.DatetimeIndex # Datetime labels
pd.MultiIndex # Hierarchical
Index Operations¶
1. Set Operations¶
idx1 = pd.Index(['a', 'b', 'c'])
idx2 = pd.Index(['b', 'c', 'd'])
print(idx1.union(idx2)) # ['a', 'b', 'c', 'd']
print(idx1.intersection(idx2)) # ['b', 'c']
print(idx1.difference(idx2)) # ['a']
2. Alignment¶
s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s2 = pd.Series([10, 20], index=['b', 'c'])
result = s1 + s2 # Aligns on index
3. Reindexing¶
s = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s_new = s.reindex(['a', 'b', 'c', 'd'], fill_value=0)
Datetime Index¶
1. Creation¶
dates = pd.date_range('2023-01-01', periods=5)
s = pd.Series([10, 20, 30, 40, 50], index=dates)
2. Selection¶
s['2023-01-01'] # Single date
s['2023-01-02':'2023-01-04'] # Range
3. Frequency¶
dates = pd.date_range('2023-01-01', periods=10, freq='D')