Тестовый код:
s = pd.Series(pd.array([pd.Interval(0,1.2), pd.Interval(5,123)]))
s.dtype
s.dtype.kind is None
>>> interval[float64]
>>> True
Это какой-то баг или сделано намеренно? Если последнее - то по какой причине?
Следует отметить, что период и категория являются в настоящее время реализованы через интерфейс массива расширений (то же самое с interval и datetimetz). Это пользовательский объект dtype, который определяет kind
, а сами пользовательские dtypes существовали еще до появления интерфейса массива расширений.
Причина, по которой это отображается как None
, заключается просто в том, что реализация IntervalDtype
явно устанавливает kind = None
. Это, вероятно, следует обновить до 'O'
, хотя здесь требуется некоторая осторожность, поскольку это приведет к непреднамеренным побочным эффектам, например. это приведет к возврату is_string_dtype
True
(см. здесь).
Я думаю, что также следует упомянуть Зачемis_string_dtype
проверка станет проблемой.
Но есть и другие типы dtypes, предназначенные только для панд - период, категория, например. Но для них
.dtype.kind
возвращаетO
- объект.