Skip to content Skip to sidebar Skip to footer

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'], '

Solution 1:

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()
  OrderDaynew02014-05-0912012-06-19
<class'pandas.core.frame.DataFrame'>
Int64Index: 2 entries, 0 to 1Data columns (total 1 columns):
OrderDaynew2 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]:
  OrderDaynew02014-05-0912012-06-19In [109]:

all_data.info()
<class'pandas.core.frame.DataFrame'>
Int64Index: 2 entries, 0 to 1Data columns (total 1 columns):
OrderDaynew2 non-nullobjectdtypes: 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

Solution 2:

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.

Solution 3:

For converting all datetime columns to string use the below code.

for x in  df.select_dtypes(include=['datetime64']).columns.tolist():
    df[x] = df[x].astype(str)

or

date_columns = df.select_dtypes(include=['datetime64']).columns.tolist()
df[date_columns] = df[date_columns].astype(str)

Solution 4:

In my case I had a pySpark dataframe. This is how I converted "day" of type timestamp, to a string:

import pyspark.sql.functions as FconvertedDf= rawDf.withColumn('d2', F.date_format(rawDf['day'], 'yyyyMMdd'))

Post a Comment for "Converting A Datetime Column To A String Column"