一些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]
但是有更好的方法吗?
答案 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中的方式)。