1

I am writing a program to download data from a website called quandl. The issue I am having is that when the data is downloaded the index column of the dataframe that it is downloaded, is dates in the format: 2000-01-02 00:00:00. When I then use dates = df.index.values.tolist() the dates are given back as integers in the form 946684800000000000 ( this being the date from before). Does anyone know how to handle this date format and put it into a format which I can use the datetime module with???

2
  • The dtype is datetime64[ns] probably, can you explain what you mean by use the datetime with you can convert to python datetime df.index.to_pydatetime() Commented Aug 28, 2015 at 12:54
  • Thanks for your help but answer is below Commented Aug 28, 2015 at 13:33

1 Answer 1

3

If df.index is a DatetimeIndex, then use df.index.to_pydatetime() to convert the dates to an object array of datetime.datetimes. For example,

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)

Note that depending on what you want to do with these dates, it may be more advantageous to work with a DatetimeIndex than an object array of datetime.datetimes.


Tip: This is the type of problem -- introspection of an unfamiliar object -- where IPython can be of great help. IPython has TAB-completion of attributes. At the IPython prompt typing

In [17]: index.

and then pressing TAB pulls up a list of all the attributes and methods of the index object that IPython has detected. (Because some objects have custom __getattr__ methods, this may not be a complete list, but it is often useful nevertheless.) Perusing the list or doing a text search for "datetime" will lead you to index.to_datetime and index.to_pydatetime. A little experimentation will then show you that index.to_pydatetime does what you need. Moreover, typing a question mark after index.to_pydatetime causes IPython to show you helpful information, including the docstring:

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
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.