Ошибка с date_range при использовании подвыбора даты и времени - PullRequest
1 голос
/ 22 марта 2020

Мне нужно создать вектор дат с pd.date_range, указав минимальное и максимальное значения даты. Значения даты происходят из подвыбора, выполненного для объекта данных ds.

. Это код, который я написал:

Обратите внимание, что Date в ds получены из

ds = pd.read_excel("data.xlsx",sheet_name='all') # Read the Excel file
ds['Date'] = pd.to_datetime(ds['Date'], infer_datetime_format=True) 

Это часть внутри a для l oop, где x зацикливается на списке имен.

for x in lofNames:
    date_tmp = ds.loc[ds['Security Name']==x,['Date']]
    mindate = date_tmp.min()
    maxdate = date_tmp.max()
    date = pd.date_range(start=mindate, end=maxdate, freq='D')   

Это ошибка, которую я получаю:

Traceback (most recent call last):

  File "<ipython-input-8-1f56d07b5a74>", line 4, in <module>
    date = pd.date_range(start=mindate, end=maxdate, freq='D')

  File "/Users/marco/opt/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/datetimes.py", line 1180, in date_range
    **kwargs,

  File "/Users/marco/opt/anaconda3/lib/python3.7/site-packages/pandas/core/arrays/datetimes.py", line 365, in _generate_range
    start = Timestamp(start)

  File "pandas/_libs/tslibs/timestamps.pyx", line 418, in pandas._libs.tslibs.timestamps.Timestamp.__new__

  File "pandas/_libs/tslibs/conversion.pyx", line 329, in pandas._libs.tslibs.conversion.convert_to_tsobject

TypeError: Cannot convert input [Date   2007-01-09
dtype: datetime64[ns]] of type <class 'pandas.core.series.Series'> to Timestamp

Что не так? спасибо

1 Ответ

0 голосов
/ 22 марта 2020

Здесь возвращается один столбец DataFrame вместо Series, поэтому следующие min и max возвращают один элемент Series вместо scalar, поэтому возникает ошибка:

date_tmp = ds.loc[ds['Security Name']==x,['Date']]

Правильный путь снят []:

date_tmp = ds.loc[ds['Security Name']==x,'Date']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...