0

I need help: pandas dataset has a date column. The date in one of the columns is in the format "September 25, 2021 ". I can't convert this to "yyyy-mm-dd" format (2021-09-25). This is necessary in order to import this data into mysql in the future (I work through dbever). Might be a stupid question but I'm a newbie

Tried to use to_datetime function and this way (IndexError: list index out of range):


date = {'January': '01', 'February': '02', 'March': '03', 'April': '04', 'May': '05', 'June': '06', 
        'July': '07', 'August': '08', 'September': '09', 'October': '10', 'November': '11', 'December':     '12'}
new_date = []
for d in df['date_added']:
    month = d.split(' ')[0]
    day = d.split(' ')[1]
    year = d.split(', ')[2]
    res = year.split('-') + date[month].split('-') + day
    new_date.append(res)
Mark Tolonen
  • 166,664
  • 26
  • 169
  • 251

3 Answers3

0

I think you can use strftime. Here is an example:

date_string = "September 25, 2021"
date = pd.to_datetime(date_string) 

formatted_date = date.strftime('%Y-%m-%d')
print(formatted_date) #2021-09-25
TheEngineerProgrammer
  • 1,282
  • 1
  • 4
  • 9
0
import pandas as pd

df = pd.DataFrame({'date_added': ['September 25, 2010', 'April 1, 2023']})
print(df)
print()
# If you need actually need datetime object
df.date_added = pd.to_datetime(df.date_added) # dtype = datetime64[ns]
print(df)
print()

# reset dataframe
df = pd.DataFrame({'date_added': ['September 25, 2010', 'April 1, 2023']})
# If you need a formatted string
df.date_added = pd.to_datetime(df.date_added).dt.strftime('%Y-%m-%d') # dtype = object
print(df)

Output:

           date_added
0  September 25, 2010
1       April 1, 2023

  date_added
0 2010-09-25
1 2023-04-01

   date_added
0  2010-09-25
1  2023-04-01
Mark Tolonen
  • 166,664
  • 26
  • 169
  • 251
0
import pandas as pd

df = pd.DataFrame({'date_added': ['September 25, 2010', 'April 1, 2023']})

r = pd.to_datetime(df['date_added'], format='%B %d, %Y')

print(r)

Result

0   2010-09-25
1   2023-04-01
Name: date_added, dtype: datetime64[ns]
Laurent B.
  • 1,653
  • 1
  • 7
  • 16