Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Converting a datetime column to a string column

I'm trying to convert a datetime column back to a string in Pandas dataframe.

the syntax I have so far is:

all_data['Order Day new'] = dt.date.strftime(all_data['Order Day new'], '%d/%m/%Y') 

but this returns the error:

descriptor 'strftime' requires a 'datetime.date' object but received a 'Series'.

Can anyone tell me where I'm going wrong.

like image 447
Colin O'Brien Avatar asked Feb 24 '15 11:02

Colin O'Brien


People also ask

How do you convert a date column to a string in Python?

Use astype() to Change datetime to String Format You can use this if the date is already in the format you want it in string form. The below example returns the date as a string with format %Y/%m/%d . dtype of column ConvertedDate will be object ( string ).

How do I convert datetime back to string?

Method 2: Program to convert DateTime to string using time. strftime. Python strftime() function is present in datetime and time modules to create a string representation based on the specified format string.


2 Answers

If you're using version 0.17.0 or higher then you can call this using .dt.strftime which is vectorised:

all_data['Order Day new'] = all_data['Order Day new'].dt.strftime('%Y-%m-%d') 

** If your pandas version is older than 0.17.0 then you have to call apply and pass the data to strftime:

In [111]:  all_data = pd.DataFrame({'Order Day new':[dt.datetime(2014,5,9), dt.datetime(2012,6,19)]}) print(all_data) all_data.info()   Order Day new 0    2014-05-09 1    2012-06-19 <class 'pandas.core.frame.DataFrame'> Int64Index: 2 entries, 0 to 1 Data columns (total 1 columns): Order Day new    2 non-null datetime64[ns] dtypes: datetime64[ns](1) memory usage: 32.0 bytes  In [108]:  all_data['Order Day new'] = all_data['Order Day new'].apply(lambda x: dt.datetime.strftime(x, '%Y-%m-%d')) all_data Out[108]:   Order Day new 0    2014-05-09 1    2012-06-19 In [109]:  all_data.info() <class 'pandas.core.frame.DataFrame'> Int64Index: 2 entries, 0 to 1 Data columns (total 1 columns): Order Day new    2 non-null object dtypes: object(1) memory usage: 32.0+ bytes 

You can't call strftime on the column as it doesn't understand Series as a param hence the error

like image 67
EdChum Avatar answered Oct 08 '22 08:10

EdChum


all_data['Order Day new']=all_data['Order Day new'].astype(str) 

I think this is more simple, if the date is already in the format you want it in string form.

like image 28
Chris Avatar answered Oct 08 '22 10:10

Chris