Introduction
Advanced indexing techniques in Pandas for complex data selection.
MultiIndex
import pandas as pd
# Create multi-level index
arrays = [
["A", "A", "B", "B"],
[1, 2, 1, 2]
]
index = pd.MultiIndex.from_arrays(arrays, names=["Group", "Number"])
df = pd.DataFrame({"Value": [10, 20, 30, 40]}, index=index)
# Indexing multiindex
df.loc["A"]
df.loc[("B", 1)]
df.xs("A", level="Group")
Query Method
df = pd.DataFrame({
"A": [1, 2, 3, 4],
"B": [10, 20, 30, 40],
"C": ["x", "y", "z", "w"]
})
# SQL-like syntax
df.query("A > 2 and B < 40")
df.query("C == 'x' | C == 'y'")
Boolean Indexing
# Complex conditions
mask = (df["A"] > 1) & (df["B"] < 30)
df[mask]
# isin
df[df["C"].isin(["x", "y"])]
# between
df[df["A"].between(2, 3)]
Practice Problems
- Create and index MultiIndex DataFrame
- Use query with variables
- Slice MultiIndex levels
- Combine multiple conditions
- Use loc vs iloc effectively