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
? Если нет, то в чем здесь дело?
Это ошибка в пандах: 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