gpt4 book ai didi

python - 如何使用虚构日期解决 "ValueError: day is out of range for month"问题?

转载 作者:行者123 更新时间:2023-12-01 09:25:01 25 4
gpt4 key购买 nike

好的,我有一个日期列表,还有一个销售列表。我想使用 matplotlib 绘制值

import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

dateFormat = findDateFormat()

print dateFormat #DEBUG#

x = [dt.datetime.strptime(d,dateFormat).date() for d in listOfDates]
y = listOfSales

plt.gca().xaxis.set_major_formatter(mdates.DateFormatter(dateFormat))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
plt.plot(x,y)
plt.gcf().autofmt_xdate()

findDateFormat() 是我创建的一个函数,它返回一个包含格式的字符串,我测试它没问题 %d/%m/%Y 。当我运行脚本时出现错误

ValueError: day is out of range for month

现在我知道原因是列表中的日期不是真实的,有些日期实际上并不存在(例如 2016 年 6 月 31 日)。有没有办法解决这个问题,让它忽略实际不存在的日期?

编辑我刚刚创建了这个函数:

def validateDates(dateFormat):

itemsToDelete = []

for i in range(0,len(listOfDates)):
try:
dt.datetime.strptime(listOfDates[i], dateFormat)
except ValueError:
print listOfDates[i] + "Has been deleted because it does not exist."
itemsToDelete.append(i)

for k in range(0,len(itemsToDelete)):
del listOfDates[itemsToDelete[k]]
del listOfSales[itemsToDelete[k]]

在绘图中使用它之前要删除不存在的日期,但我仍然收到相同的错误消息。

最佳答案

我会通过这种方式忽略它们(if len(listOfDates) == len(listOfSales)):

from datetime import datetime
x = []
y = []

for d, sale in zip(listOfDates, listOfSales):
try:
x.append(datetime.strptime(d, dateFormat).date())
y.append(sale/10)
except ValueError:
continue

validateDates 方法可能如下:

def validateDates(dateFormat, listOfDates, listOfSales):
dates, sales = [], []
for d, s in zip(listOfDates, listOfSales):
try:
datetime.strptime(d, dateFormat)
except ValueError:
continue
dates.append(d)
sales.append(s)
return dates, sales

listOfDates, listOfSales = validateDates(dateFormat, listOfDates, listOfSales)

关于python - 如何使用虚构日期解决 "ValueError: day is out of range for month"问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50499196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com