Почему список pd.Interval не распознается DataFrame автоматически?

intervals = [pd.Interval(0, 0.1), pd.Interval(1, 5)]
pd.DataFrame({'d':intervals}).dtypes

Создает dtype как Объект, а не Интервал:

>>> d    object
>>> dtype: object

Но при этом список, например, DateTimes распознается на лету:

datetimes = [pd.Timestamp('2013-01-02'), pd.Timestamp('2016-10-20')]
pd.DataFrame({'d':datetimes}).dtypes
>>> d    datetime64[ns]
>>> dtype: object

Ситуация с intervals чем-то похожа на список strings - тип столбца по умолчанию в DataFrame также будет object, потому что DataFrame не «знает», хотим ли мы рассматривать этот столбец как объекты (для сброса на диск, ..) или как строки (для конкатенации, ..) или даже как элементы типа категории? Если да, то какие могут быть варианты использования intervals? Если нет, то в чем здесь дело?

1
0
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это ошибка в пандах: https://github.com/pandas-dev/pandas/issues/23563

На данный момент самый чистый обходной путь — обернуть список pd.array:

In [1]: import pandas as pd; pd.__version__
Out[1]: '0.24.2'

In [2]: intervals = [pd.Interval(0, 0.1), pd.Interval(1, 5)]

In [3]: pd.DataFrame({'d': pd.array(intervals)}).dtypes
Out[3]:
d    interval[float64]
dtype: object

Другие вопросы по теме