我一直在尝试使用pvlib-python工具进行预测。该工具附带了一些特定于模型的类。
# Import pvlib forecast models
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
import seaborn as sns; sns.set_color_codes()
from pvlib.forecast import GFS, NAM, NDFD, HRRR, RAP
from pvlib import solarposition
# Specify Location (Phoenix, AZ)
latitude, longitude, tz = 32.2, -110.9, 'US/Arizona'
# Specify time range
start = pd.Timestamp(datetime.date.today(), tz=tz)
end = start + pd.Timedelta(days=7)
irrad_vars = ['ghi','dni','dhi']
from pvlib.forecast import GFS, NAM, NDFD, HRRR, RAP
model = GFS()
# Retrive data.returns panda.DataFrame object
raw_data = model.get_data(latitude, longitude, start, end)
print(raw_data.head())当我试图从模型中获取数据时,代码会产生以下输出:
TypeError Traceback (most recent call last)
# Retrive data.returns panda.DataFrame object
----> 6 raw_data = model.get_data(latitude, longitude, start, end)
TypeError: <class 'cftime._cftime.DatetimeGregorian'> is not convertible to datetime发布于 2020-07-08 23:37:04
所以我不知道您的getdata函数中有什么,但我怀疑它使用了netCDF4库。以及构建在cftime库(https://github.com/Unidata/cftime)上的netCDF4.num2date函数。请参阅netCDF4文档的要求部分:https://unidata.github.io/netcdf4-python/netCDF4/index.html
他们似乎是从版本5左右的python datetime库中迁移出来的,因为它可以处理比严格意义上的公历更多的calendars。我不完全理解为什么,但你可以使用only_use_cftime_datetimes=False的kwarg选项通常就足够了,但你也可以用一个额外的only_use_python_datetimes=True强制它,这应该会返回一个python日期时间并解决你的问题。
发布于 2020-07-15 02:43:56
pvlib的贡献者在这里进行了讨论:https://github.com/pvlib/pvlib-python/issues/944
其中一个建议是降低cftime的等级,这对我很有效。
https://stackoverflow.com/questions/60958754
复制相似问题