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.
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 ).
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.
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With