Python Pandas - Determine if two CategoricalIndex objects contain the same elements

To determine if two CategoricalIndex objects contain the same elements, use the equals() method. This method compares both the values and the categorical properties (categories and ordering) of the objects.

What is CategoricalIndex?

A CategoricalIndex is a pandas index type for categorical data with a fixed set of possible values (categories). It's memory-efficient for data with repeated values.

Using equals() Method

The equals()

import pandas as pd

# Create two identical CategoricalIndex objects
catIndex1 = pd.CategoricalIndex(["p", "q", "r", "s", "p", "q", "r", "s"], 
                                ordered=True, 
                                categories=["p", "q", "r", "s"])

catIndex2 = pd.CategoricalIndex(["p", "q", "r", "s", "p", "q", "r", "s"], 
                                ordered=True, 
                                categories=["p", "q", "r", "s"])

# Display the CategoricalIndex objects
print("CategoricalIndex1...")
print(catIndex1)
print("\nCategoricalIndex2...")
print(catIndex2)

# Check both objects for equality
print("\nAre both CategoricalIndex objects equal?")
print(catIndex1.equals(catIndex2))
CategoricalIndex1...
CategoricalIndex(['p', 'q', 'r', 's', 'p', 'q', 'r', 's'], categories=['p', 'q', 'r', 's'], ordered=True, dtype='category')

CategoricalIndex2...
CategoricalIndex(['p', 'q', 'r', 's', 'p', 'q', 'r', 's'], categories=['p', 'q', 'r', 's'], ordered=True, dtype='category')

Are both CategoricalIndex objects equal?
True

Comparing Different CategoricalIndex Objects

Let's see what happens when CategoricalIndex objects have different values or properties ?

import pandas as pd

# Create CategoricalIndex with different values
catIndex3 = pd.CategoricalIndex(["p", "q", "r"], 
                                ordered=True, 
                                categories=["p", "q", "r", "s"])

catIndex4 = pd.CategoricalIndex(["p", "q", "s"], 
                                ordered=True, 
                                categories=["p", "q", "r", "s"])

print("CategoricalIndex3:", catIndex3.tolist())
print("CategoricalIndex4:", catIndex4.tolist())
print("Are they equal?", catIndex3.equals(catIndex4))

# Different ordering
catIndex5 = pd.CategoricalIndex(["p", "q", "r"], 
                                ordered=False, 
                                categories=["p", "q", "r", "s"])

catIndex6 = pd.CategoricalIndex(["p", "q", "r"], 
                                ordered=True, 
                                categories=["p", "q", "r", "s"])

print("\nDifferent ordering:")
print("Ordered=False vs Ordered=True:", catIndex5.equals(catIndex6))
CategoricalIndex3: ['p', 'q', 'r']
CategoricalIndex4: ['p', 'q', 's']
Are they equal? False

Different ordering:
Ordered=False vs Ordered=True: False

Key Points

Comparison Aspect Must Match for equals()
Values Yes
Categories Yes
Order of categories Yes
Ordered property Yes

Conclusion

Use equals() to check if two CategoricalIndex objects are identical in all aspects. The method returns True only when values, categories, category order, and the ordered property all match exactly.

Updated on: 2026-03-26T16:57:02+05:30

185 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements