Label-based indexing to the Pandas DataFrame

The Pandas DataFrame provides powerful label-based indexing capabilities that allow you to access data using meaningful row and column labels instead of integer positions. This makes your code more readable and intuitive for data manipulation tasks.

Understanding Label-Based Indexing

Label-based indexing uses explicit labels (row and column names) to retrieve data from a DataFrame. Pandas provides two main methods for label-based indexing:

  • loc ? Primary accessor for label-based selection, supports slicing and boolean indexing
  • at ? Fast accessor for single scalar values using labels

Using loc for Label-Based Selection

The loc accessor is the most versatile method for label-based indexing. Here's how to use it:

import pandas as pd

# Create a DataFrame
data = {'Name': ['John', 'Anna', 'Peter', 'Linda'],
        'Age': [28, 24, 35, 32],
        'City': ['New York', 'Los Angeles', 'San Francisco', 'Houston']}
df = pd.DataFrame(data)

# Set 'Name' as the index
df.set_index('Name', inplace=True)
print("DataFrame:")
print(df)

# Access a single row
print("\nAccessing Anna's data:")
print(df.loc['Anna'])
DataFrame:
       Age           City
Name                     
John    28       New York
Anna    24    Los Angeles
Peter   35  San Francisco
Linda   32        Houston

Accessing Anna's data:
Age              24
City    Los Angeles
Name: Anna, dtype: object

Using at for Fast Scalar Access

The at method provides faster access when you need a single scalar value:

import pandas as pd

# Create DataFrame
data = {'Name': ['John', 'Anna', 'Peter', 'Linda'],
        'Age': [28, 24, 35, 32],
        'City': ['New York', 'Los Angeles', 'San Francisco', 'Houston']}
df = pd.DataFrame(data)
df.set_index('Name', inplace=True)

# Get Peter's age using at
age = df.at['Peter', 'Age']
print(f"Peter's age: {age}")

# Get Linda's city
city = df.at['Linda', 'City']
print(f"Linda's city: {city}")
Peter's age: 35
Linda's city: Houston

Label-Based Slicing

You can slice DataFrames using labels with loc. Unlike integer-based slicing, label-based slicing is inclusive of both endpoints:

import pandas as pd

# Create DataFrame with more data
data = {'Name': ['John', 'Anna', 'Peter', 'Linda', 'Paul', 'Diana'],
        'Age': [28, 24, 35, 32, 38, 27],
        'City': ['New York', 'Los Angeles', 'San Francisco', 'Houston', 'Chicago', 'Seattle']}
df = pd.DataFrame(data)
df.set_index('Name', inplace=True)

# Slice from Anna to Linda (inclusive)
print("Slicing from Anna to Linda:")
print(df.loc['Anna':'Linda'])

# Select specific columns
print("\nSelecting only Age column for Anna to Peter:")
print(df.loc['Anna':'Peter', 'Age'])
Slicing from Anna to Linda:
       Age           City
Name                     
Anna    24    Los Angeles
Peter   35  San Francisco
Linda   32        Houston

Selecting only Age column for Anna to Peter:
Name
Anna     24
Peter    35
Name: Age, dtype: int64

Multiple Label Selection

You can select multiple non-consecutive rows and columns using lists:

import pandas as pd

data = {'Name': ['John', 'Anna', 'Peter', 'Linda', 'Paul'],
        'Age': [28, 24, 35, 32, 38],
        'City': ['New York', 'Los Angeles', 'San Francisco', 'Houston', 'Chicago'],
        'Salary': [50000, 60000, 75000, 55000, 80000]}
df = pd.DataFrame(data)
df.set_index('Name', inplace=True)

# Select specific rows and columns
result = df.loc[['John', 'Peter', 'Paul'], ['Age', 'Salary']]
print(result)
       Age  Salary
Name             
John    28   50000
Peter   35   75000
Paul    38   80000

Advantages of Label-Based Indexing

Advantage Description
Readability Code is more intuitive with meaningful labels
Maintainability Less prone to errors when data order changes
Self-documenting Labels provide context about the data
Flexibility Supports slicing, boolean indexing, and complex selections

Conclusion

Label-based indexing with loc and at makes DataFrame operations more readable and robust. Use loc for versatile data selection and at for fast scalar access. This approach creates more maintainable and intuitive data analysis code.

Updated on: 2026-03-27T08:01:11+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements