ValueError: day is out of range for month

后端 未结 1 1316
野的像风
野的像风 2020-12-06 05:30

I want to convert a string from a dataframe to datetime.

dfx = df.ix[:,\'a\']
dfx = pd.to_datetime(dfx)

But it gives the following error:

1条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-06 06:20

    Maybe help add parameter dayfirst=True to to_datetime, if format of datetime is 30-01-2016:

    dfx = df.ix[:,'a']
    dfx = pd.to_datetime(dfx, dayfirst=True)
    

    More universal is use parameter format with errors='coerce' for replacing values with other format to NaN:

    dfx = '30-01-2016'
    
    dfx = pd.to_datetime(dfx, format='%d-%m-%Y', errors='coerce')
    print (dfx)
    2016-01-30 00:00:00
    

    Sample:

    dfx = pd.Series(['30-01-2016', '15-09-2015', '40-09-2016'])
    print (dfx)
    0    30-01-2016
    1    15-09-2015
    2    40-09-2016
    dtype: object
    
    dfx = pd.to_datetime(dfx, format='%d-%m-%Y', errors='coerce')
    print (dfx)
    0   2016-01-30
    1   2015-09-15
    2          NaT
    dtype: datetime64[ns]
    

    If format is standard (e.g. 01-30-2016 or 01-30-2016), add only errors='coerce':

    dfx = pd.Series(['01-30-2016', '09-15-2015', '09-40-2016'])
    print (dfx)
    0    01-30-2016
    1    09-15-2015
    2    09-40-2016
    dtype: object
    
    dfx = pd.to_datetime(dfx, errors='coerce')
    print (dfx)
    0   2016-01-30
    1   2015-09-15
    2          NaT
    dtype: datetime64[ns]
    

    0 讨论(0)
提交回复
热议问题