pandas ValueError:日超出月的范围

daolsyd0  于 2023-02-02  发布在  其他
关注(0)|答案(2)|浏览(128)

我想把一个字符串从 Dataframe 转换成日期时间。

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

但它给出了以下错误:
ValueError:日超出月的范围
有人能帮忙吗?

z9smfwbn

z9smfwbn1#

如果日期时间的格式为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]
wyyhbhjk

wyyhbhjk2#

就我而言

year = 2023
month = 2
date = datetime.date(year, month, 30)

我得到了这个错误,因为二月有29或28天在它。也许这一点帮助别人

相关问题