Вы можете использовать collections.defaultdict
для создания словаря типов, сопоставленных со значениями:
from collections import defaultdict
df = pd.DataFrame({'a': [1,2,3,4,5], 'b': [4,5,6,7,8]},
index=[0.0,1.5,'a',pd.to_datetime('10/05/2018'),'b'])
vals = pd.to_numeric(df.index, errors='coerce')
idx = df.index[vals.isnull()]
d = defaultdict(list)
for x in idx:
d[type(x)].append(x)
Затем, например, вы можете использовать d.keys()
для извлечения всех нечисловых типов или d[str]
для извлечения индексов, которые являются строками.
Результат
print(d)
defaultdict(list,
{str: ['a', 'b'],
pandas._libs.tslibs.timestamps.Timestamp: [Timestamp('2018-10-05 00:00:00')]})