ValueError:日期超出月份的范围
Posted
技术标签:
【中文标题】ValueError:日期超出月份的范围【英文标题】:ValueError: day is out of range for month 【发布时间】:2016-09-14 02:22:49 【问题描述】:我想将字符串从数据帧转换为日期时间。
dfx = df.ix[:,'a']
dfx = pd.to_datetime(dfx)
但它给出了以下错误:
ValueError: day is out of range for month
有人可以帮忙吗?
【问题讨论】:
dfx
的值是多少?
***.com/questions/17690738/…的可能重复
【参考方案1】:
如果日期时间格式为30-01-2016
,可能有助于将参数dayfirst=True
添加到to_datetime
:
dfx = df.ix[:,'a']
dfx = pd.to_datetime(dfx, dayfirst=True)
更通用的是使用参数format
和errors='coerce'
将值替换为其他format
到NaN
:
dfx = '30-01-2016'
dfx = pd.to_datetime(dfx, format='%d-%m-%Y', errors='coerce')
print (dfx)
2016-01-30 00:00:00
示例:
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]
如果格式是标准格式(例如01-30-2016
或01-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]
【讨论】:
以上是关于ValueError:日期超出月份的范围的主要内容,如果未能解决你的问题,请参考以下文章