Obtener el dtype de un multiindex pandas.

¿Cómo puedo encontrar el dtype de un MultiIndex en pandas sin imprimir todos los valores (esto sucede si escribe df.index , por ejemplo)? Solo quiero saber los nombres de los índices y sus tipos.

Ex:

 df = pd.DataFrame({"a": np.arange(100000), "b": np.arange(100000)[::-1]}, index=pd.MultiIndex.from_arrays([np.arange(100000), np.arange(100000)[::-1]], names=["i1", "i2"])) 

obra:

 df.index 

Tomará algo de tiempo para imprimir, para un df grande que es demasiado largo.

Utilice get_level_values:

 df.index.get_level_values(0).dtype dtype('int64') 

y

 df.index.get_level_values(1).dtype dtype('int64') 

Para uso de nombres:

 df.index.names FrozenList(['i1', 'i2']) 

Basándome en la gran respuesta de @Scott Boston, escribí esta función para una comprobación rápida de los tipos de todos los niveles de ds de índice múltiple y solo pensé en compartir:

 def index_level_dtypes(df): return [f"{df.index.names[i]}: {df.index.get_level_values(n).dtype}" for i, n in enumerate(df.index.names)]