intervals = [pd.Interval(0, 0.1), pd.Interval(1, 5)]
pd.DataFrame({'d':intervals}).dtypes
将dtype生成为 Object ,而不是 Interval :
>>> 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
可能有哪些不同的用例?如果不是这样的话?
答案 0 :(得分: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