datetime to string with series in pandas

PythonDatetimePandas

Python Problem Overview


How should I transform from datetime to string? My attempt:

dates = p.to_datetime(p.Series(['20010101', '20010331']), format = '%Y%m%d')
dates.str

Python Solutions


Solution 1 - Python

There is no .str accessor for datetimes and you can't do .astype(str) either.

Instead, use .dt.strftime:

>>> series = pd.Series(['20010101', '20010331'])
>>> dates = pd.to_datetime(series, format='%Y%m%d')
>>> dates.dt.strftime('%Y-%m-%d')
0    2001-01-01
1    2001-03-31
dtype: object

See the docs on customizing date string formats here: strftime() and strptime() Behavior.


For old pandas versions <0.17.0, one can instead can call .apply with the Python standard library's datetime.strftime:

>>> dates.apply(lambda x: x.strftime('%Y-%m-%d'))
0    2001-01-01
1    2001-03-31
dtype: object

Solution 2 - Python

As of pandas version 0.17.0, you can format with the dt accessor:

dates.dt.strftime('%Y-%m-%d')

Solution 3 - Python

There is a pandas function that can be applied to DateTime index in pandas data frame.

date = dataframe.index #date is the datetime index
date = dates.strftime('%Y-%m-%d') #this will return you a numpy array, element is string.
dstr = date.tolist() #this will make you numpy array into a list

the element inside the list:

u'1910-11-02'

You might need to replace the 'u'.

There might be some additional arguments that I should put into the previous functions.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDiegoView Question on Stackoverflow
Solution 1 - PythonEdChumView Answer on Stackoverflow
Solution 2 - PythonKamil SindiView Answer on Stackoverflow
Solution 3 - PythonQing XiaView Answer on Stackoverflow