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)

更通用的是使用参数formaterrors='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

示例:

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-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]

【讨论】:

以上是关于ValueError:日期超出月份的范围的主要内容,如果未能解决你的问题,请参考以下文章

第3次作业+105032014040

检查日期是不是对选定的月份有效 Django 表单

为啥 Sumproduct 公式显示 #Value 错误?

数值超出范围减去 jOOQ 中的日期

python中日期范围之间的月份开始日期和结束日期

HTML:输入类型日期和月份范围