将pandas DatetimeIndex转换为' float days格式'使用Matplotlib.dates.datestr2num

时间:2015-01-16 22:05:19

标签: python matplotlib pandas

一些Matplotlib方法需要'float days format'天。 datestr2num是一个转换器函数,但它与相关的pandas对象有关:

In [3]: type(df.index)
Out[3]: pandas.tseries.index.DatetimeIndex
In [4]: type(df.index[0])
Out[4]: pandas.tslib.Timestamp
In [5]: mpl.dates.date2num(df.index)
Out [5]: ...
AttributeError: 'numpy.datetime64' object has no attribute 'toordinal'

这提供了'浮动日格式'的可用时间列表:

dates = [mpl.dates.date2num(t) for t in df.index]

但是有更好的方法吗?

1 个答案:

答案 0 :(得分:10)

您可以使用DatetimeIndex的to_pydatetime方法(这会将其转换为datetime.datetime的数组,mpl.dates.date2num将知道如何处理这些方法:

mpl.dates.date2num(df.index.to_pydatetime())

date2num本身不处理pandas DatetimeIndex的原因是因为matplotlib还不支持numpy datetime64 dtype(数据存储在DatetimeIndex中的方式)。