Вы можете использовать [lev.dtype.type for lev in index.levels]
:
import pandas as pd
df = pd.DataFrame({"id": [1,2,1,2], "time": [1, 1, 2, 2], "val": [1,2,3,4]})
df.set_index(keys=["id", "time"], inplace=True)
index = df.index
print([lev.dtype.type for lev in index.levels])
# [<class 'numpy.int64'>, <class 'numpy.int64'>]
# Alternatively, there is the private attribute, `_inferred_type_levels`,
# but this is probably not what you are looking for.
print(index._inferred_type_levels)
# ['integer', 'integer']
index.levels
- это FrozenList одномерных индексов:
In [172]: list(index.levels)
Out[172]:
[Int64Index([1, 2], dtype='int64', name='id'),
Int64Index([1, 2], dtype='int64', name='time')]