我正在编写一个程序,从一个名为 quandl 的网站下载数据。我遇到的问题是,当下载数据时,下载的数据框的索引列的日期格式为:2000-01-02 00:00:00。然后,当我使用 dates = df.index.values.tolist() 时,日期将以 946684800000000000 形式的整数返回(这是之前的日期)。有谁知道如何处理这个日期格式并将其放入我可以使用日期时间模块的格式???
最佳答案
如果df.index
是DatetimeIndex
,则使用df.index.to_pydatetime()
将日期转换为对象数组datetime.datetime
s。
例如,
In [14]: index = pd.date_range('2000-1-1', periods=3, freq='D')
In [15]: index
Out[15]: DatetimeIndex(['2000-01-01', '2000-01-02', '2000-01-03'], dtype='datetime64[ns]', freq='D', tz=None)
In [16]: index.values.tolist()
Out[16]: [946684800000000000L, 946771200000000000L, 946857600000000000L]
In [17]: index.to_pydatetime()
Out[20]:
array([datetime.datetime(2000, 1, 1, 0, 0),
datetime.datetime(2000, 1, 2, 0, 0),
datetime.datetime(2000, 1, 3, 0, 0)], dtype=object)
请注意,根据您想要对这些日期执行的操作,使用 DatetimeIndex
可能比使用 datetime.datetime
的对象数组更有利。
提示:这就是问题的类型——对一个不熟悉的对象进行内省(introspection)——其中IPython可以有很大的帮助。 IPython 具有 TAB 补全属性。在 IPython 提示符处输入
In [17]: index.
然后按TAB会调出IPython已检测到的index
对象的所有属性和方法的列表。 (因为某些对象具有自定义 __getattr__
方法,这可能不是完整的列表,但它通常很有用。)仔细阅读该列表或对“datetime”进行文本搜索将引导您找到 index.to_datetime
和 index.to_pydatetime
。一些实验将向您展示 index.to_pydatetime
可以满足您的需要。此外,在 index.to_pydatetime
之后输入问号会使 IPython 向您显示有用的信息,包括文档字符串:
In [19]: index.to_pydatetime?
Type: instancemethod
String form: <bound method DatetimeIndex.to_pydatetime of DatetimeIndex(['2000-01-01', '2000-01-02', '2000-01-03'], dtype='datetime64[ns]', freq='D', tz=None)>
File: /home/unutbu/.virtualenvs/dev/lib/python2.7/site-packages/pandas-0.16.2+175.g5a9a9da-py2.7-linux-x86_64.egg/pandas/tseries/index.py
Definition: index.to_pydatetime()
Docstring:
Return DatetimeIndex as object ndarray of datetime.datetime objects
Returns
-------
datetimes : ndarray
关于python - python数据框中的日期时间索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32271474/