Search code examples
pythonpandaspython-datetime

How to convert 'O' values to date format


I have tried to convert a column with 'O' values like

31 October 2020
31 October 2020
31 October 2020
30 November 2020
30 November 2020

in a date format:

df['Date']=pd.to_datetime(df['Date'], errors='coerce', format='%m %d %Y')

However I've got NaT values instead of 10/31/2020 and 11/30/2020. After using the code, the type is dtype('<M8[ns]').

Can you explain me where the error is?


Solution

  • Try:

    import pandas as pd
    from io import StringIO
    
    inputtxt = StringIO("""Date
    31 October 2020
    31 October 2020
    31 October 2020
    30 November 2020
    30 November 2020""")
    
    df = pd.read_csv(inputtxt)
    df['Date2'] = pd.to_datetime(df['Date'], format='%d %B %Y').dt.strftime('%m/%d/%Y')
    print(df)
    

    Output:

                   Date       Date2
    0   31 October 2020  10/31/2020
    1   31 October 2020  10/31/2020
    2   31 October 2020  10/31/2020
    3  30 November 2020  11/30/2020
    4  30 November 2020  11/30/2020