How to convert the format all the values in a date-time array?

Question:

This is my data :

dates = np.arange("2018-01-01", "2021-12-31", dtype="datetime64[D]")

I now want to convert from :
"2018-01-01" -> "Jan-01-2018" ["Monthname-day-year"] format

How to i do this ?
Is it possible to initialize this in the way we want to convert ?
Can i use something like:

for i in dates:
   i =  i.replace(i.month,i.strftime("%b"))
Asked By: Zzz

||

Answers:

You can try this:

from datetime import datetime

dates = np.arange("2018-01-01", "2021-12-31", dtype="datetime64[D]")
result_dates = []
for date in dates.astype(datetime):
    result_dates.append(date.strftime("%b-%d-%Y"))

But you will need to convert result dates as shown in the code

Answered By: stfxc

I feel compelled to elaborate on Silvio Mayolo’s very relevant but ostensibly ignored comment above. Python stores a timestamp as structure (see How does Python store datetime internally? for more information) Hence, the DateTime does not as such have a ‘format’. A format only becomes necessary when you want to print the date because you must first convert the timestamp to a string. Thus, you do NOT need to initialise any format. You only need to declare a format when the time comes to print the timestamp.
While you CAN store the date as a string in your dataframe index in a specific format, you CANNOT perform time related functions on it without first converting the string back to a time variable. ie current_time.hour will return an integer with the current hour if current_time is a datetime variable but will crash if it is a string formatted as a timestamp (such as "2023-01-15 17:23").
This is important to understand, because eventually you will need to manipulate the variables and need to understand whether you are working with a time or a string.

Answered By: Galo do Leste
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.