How should I transform from datetime to string? My attempt:
dates = p.to_datetime(p.Series(['20010101', '20010331']), format = '%Y%m%d')
dates.str
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
dates = p.to_datetime(p.Series(['20010101', '20010331',None]), format = '%Y%m%d') dates.apply(lambda x: x.strftime('%Y-%m-%d'))dates.dropna().apply(lambda x: x.strftime('%Y-%m-%d'))type(dates.df.strftime(...)) says <class 'pandas.core.series.Series'>. You need to add .tolist(). pandas version 0.25.3As of pandas version 0.17.0, you can format with the dt accessor:
dates.dt.strftime('%Y-%m-%d')
datetime.strftime inside a lambda function in a dataframe .apply() method (as suggested by @EdChum)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.