将类'cftime._cftime.DatetimeGregorian'>转换为日期时间

问题描述 投票:0回答:1

我正在使用PVlib在夏威夷模拟一个太阳能电池板。我的代码以前工作过,但是现在当我尝试访问天气预报数据时,收到以下错误。

TypeError: <class 'cftime._cftime.DatetimeGregorian'> is not convertible to datetime

非常感谢您提供有关如何将日期变量转换为正确格式的帮助。下面是我的大部分代码,谢谢!!

代码:#内置的python模块导入日期时间进口检验导入操作系统导入pytz

# scientific python add-ons
import numpy as np
import pandas as pd

# plotting
# first line makes the plots appear in the notebook
%matplotlib inline 
import matplotlib.pyplot as plt
import matplotlib as mpl

#import the pvlib library
from pvlib import solarposition,irradiance,atmosphere,pvsystem
from pvlib.forecast import GFS
from pvlib.modelchain import ModelChain

pd.set_option('display.max_rows', 500)

# Choose a location.
# UH Campus Varney Circle
latitude, longitude, tz = 21.300268, -157.818044, 'Pacific/Honolulu'

# specify time range.
# start = pd.Timestamp(datetime.date.today(), tz=tz)
pacific = pytz.timezone('Etc/GMT+10')
# print(pacific)
# datetime.datetime(year, month, day, hour, minute, second, microsecond, tzinfo)
start2 = pd.Timestamp(datetime.datetime(2020, 2, 14, 12, 0, 0, 0, pacific))
# print(start)
# print(start2)
# print(datetime.date.today())

end = start2 + pd.Timedelta(days=1.5)

# Define forecast model
fm = GFS()

# get data from location specified above
forecast_data = fm.get_processed_data(latitude, longitude, start2, end)
# print(forecast_data)

错误的完整堆栈跟踪:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-751e91a2ce2d> in <module>
      3 
      4 # get data from location specified above
----> 5 forecast_data = fm.get_processed_data(latitude, longitude, start2, end)
      6 # print(forecast_data)

~/opt/anaconda3/lib/python3.7/site-packages/pvlib/forecast.py in get_processed_data(self, *args, **kwargs)
    306             Processed forecast data
    307         """
--> 308         return self.process_data(self.get_data(*args, **kwargs), **kwargs)
    309 
    310     def rename(self, data, variables=None):

~/opt/anaconda3/lib/python3.7/site-packages/pvlib/forecast.py in get_data(self, latitude, longitude, start, end, vert_level, query_variables, close_netcdf_data, **kwargs)
    264         # higher dimensional data for more advanced applications
    265         self.data = self._netcdf2pandas(self.netcdf_data, self.query_variables,
--> 266                                         self.start, self.end)
    267 
    268         if close_netcdf_data:

~/opt/anaconda3/lib/python3.7/site-packages/pvlib/forecast.py in _netcdf2pandas(self, netcdf_data, query_variables, start, end)
    349         try:
    350             time_var = 'time'
--> 351             self.set_time(netcdf_data.variables[time_var])
    352         except KeyError:
    353             # which model does this dumb thing?

~/opt/anaconda3/lib/python3.7/site-packages/pvlib/forecast.py in set_time(self, time)
    391         '''
    392         times = num2date(time[:].squeeze(), time.units)
--> 393         self.time = pd.DatetimeIndex(pd.Series(times), tz=self.location.tz)
    394 
    395     def cloud_cover_to_ghi_linear(self, cloud_cover, ghi_clear, offset=35,

~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/datetimes.py in __new__(cls, data, freq, start, end, periods, tz, normalize, closed, ambiguous, dayfirst, yearfirst, dtype, copy, name, verify_integrity)
    332             yearfirst=yearfirst,
    333             ambiguous=ambiguous,
--> 334             int_as_wall_time=True,
    335         )
    336 

~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/arrays/datetimes.py in _from_sequence(cls, data, dtype, copy, tz, freq, dayfirst, yearfirst, ambiguous, int_as_wall_time)
    444             yearfirst=yearfirst,
    445             ambiguous=ambiguous,
--> 446             int_as_wall_time=int_as_wall_time,
    447         )
    448 

~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/arrays/datetimes.py in sequence_to_dt64ns(data, dtype, copy, tz, dayfirst, yearfirst, ambiguous, int_as_wall_time)
   1864             #  or M8[ns] to denote wall times
   1865             data, inferred_tz = objects_to_datetime64ns(
-> 1866                 data, dayfirst=dayfirst, yearfirst=yearfirst
   1867             )
   1868             tz = maybe_infer_tz(tz, inferred_tz)

~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/arrays/datetimes.py in objects_to_datetime64ns(data, dayfirst, yearfirst, utc, errors, require_iso8601, allow_object)
   1973             dayfirst=dayfirst,
   1974             yearfirst=yearfirst,
-> 1975             require_iso8601=require_iso8601,
   1976         )
   1977     except ValueError as e:

pandas/_libs/tslib.pyx in pandas._libs.tslib.array_to_datetime()

pandas/_libs/tslib.pyx in pandas._libs.tslib.array_to_datetime()

pandas/_libs/tslib.pyx in pandas._libs.tslib.array_to_datetime_object()

pandas/_libs/tslib.pyx in pandas._libs.tslib.array_to_datetime()

TypeError: <class 'cftime._cftime.DatetimeGregorian'> is not convertible to datetime

我正在使用PVlib在夏威夷建模太阳能电池板。我的代码以前工作过,但是现在当我尝试访问天气预报数据时,收到以下错误。 TypeError:

python pandas datetime pvlib
1个回答
0
投票

该问题可能与您指定时区的方式有关。 pytz documentation表示:“很遗憾,在很多时区中,使用标准datetime构造函数的tzinfo参数''在pytz中不起作用'”。您有几种选择:

© www.soinside.com 2019 - 2024. All rights reserved.