Search code examples
pythonpandasdatedatetimestring-to-datetime

Convert date format to 'Month-Day-Year'


I have a column full of dates of 2 million rows. The data format is 'Year-Month-Day', ex: '2019-11-28'. Each time I load the document I have to change the format of the column (which takes a long time) doing:

pd.to_datetime(df['old_date'])

I would like to rearrange the order to 'Month-Day-Year' so that I wouldn't have to change the format of the column each time I load it. I tried doing:

df_1['new_date'] = df_1['old_date'].dt.month+'-'+df_1['old_date'].dt.day+'-'+df_1['old_date'].dt.year

But I received the following error: 'unknown type str32'

Could anyone help me? Thanks!


Solution

  • You could use pandas.Series.dt.strftime (documentation) to change the format of your dates. In the code below I have a column with your old format dates, I create a new columns with this method:

    import pandas as pd
    
    df = pd.DataFrame({'old format': pd.date_range(start = '2020-01-01', end = '2020-06-30', freq = 'd')})
    df['new format'] = df['old format'].dt.strftime('%m-%d-%Y')
    

    Output:

      old format  new format
    0 2020-01-01  01-01-2020
    1 2020-01-02  01-02-2020
    2 2020-01-03  01-03-2020
    3 2020-01-04  01-04-2020
    4 2020-01-05  01-05-2020
    5 2020-01-06  01-06-2020
    6 2020-01-07  01-07-2020
    7 2020-01-08  01-08-2020
    8 2020-01-09  01-09-2020
    9 2020-01-10  01-10-2020