Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detect whether a dataframe has a MultiIndex

Tags:

I am building a new method to parse a DataFrame into a Vincent-compatible format. This requires a standard Index (Vincent can't parse a MultiIndex).

Is there a way to detect whether a Pandas DataFrame has a MultiIndex?

In: type(frame) Out: pandas.core.index.MultiIndex 

I've tried:

In: if type(result.index) is 'pandas.core.index.MultiIndex':         print True     else:         print False Out: False 

If I try without quotations I get:

NameError: name 'pandas' is not defined 

Any help appreciated.

(Once I have the MultiIndex, I'm then resetting the index and merging the two columns into a single string value for the presentation stage.)

like image 314
Phil Sheard Avatar asked Jan 12 '14 22:01

Phil Sheard


2 Answers

You can use isinstance to check whether an object is a class (or its subclasses):

if isinstance(result.index, pandas.MultiIndex): 
like image 183
jonrsharpe Avatar answered Dec 04 '22 03:12

jonrsharpe


You can use nlevels to check how many levels there are:

df.index.nlevels  df.columns.nlevels  

If nlevels > 1, your dataframe certainly has multiple indices.

like image 37
k0rnik Avatar answered Dec 04 '22 03:12

k0rnik