ValueError:day超出了一个月的范围

Nil*_*mes 10 python datetime dataframe pandas

我想将字符串从数据帧转换为datetime.

dfx = df.ix[:,'a']
dfx = pd.to_datetime(dfx)
Run Code Online (Sandbox Code Playgroud)

但它给出了以下错误:

ValueError:day超出了一个月的范围

有人可以帮忙吗?

jez*_*ael 13

也许有助于增加参数dayfirst=Trueto_datetime,如果日期时间的格式为30-01-2016:

dfx = df.ix[:,'a']
dfx = pd.to_datetime(dfx, dayfirst=True)
Run Code Online (Sandbox Code Playgroud)

更通用的是使用参数formatwith errors='coerce'将值替换formatNaN:

dfx = '30-01-2016'

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

样品:

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]
Run Code Online (Sandbox Code Playgroud)

如果格式是标准格式(例如01-30-201601-30-2016),则仅添加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]
Run Code Online (Sandbox Code Playgroud)