TypeError: аргумент int () должен быть строкой, байтовым объектом или числом, а не Timestamp

Я использую модель временных рядов, и чтобы не получать прогнозы, я получаю ошибку

TypeError: int() argument must be a string, a bytes-like object or a number, not 'Timestamp'

Код ввода:

pred = results.get_prediction(start=pd.to_datetime("2018-09-01"), dynamic=False)

Выход:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-41-f3c669d7c5dd> in <module>()
----> 1 pred = results.get_prediction(start=pd.to_datetime("2018-09-01"), dynamic=False)

/anaconda3/lib/python3.6/site-packages/statsmodels/tsa/statespace/sarimax.py in get_prediction(self, start, end, dynamic, index, exog, **kwargs)
   1924         # Handle start, end, dynamic
   1925         _start, _end, _out_of_sample, prediction_index = (
-> 1926             self.model._get_prediction_index(start, end, index, silent=True))
   1927 
   1928         # Handle exogenous parameters

/anaconda3/lib/python3.6/site-packages/statsmodels/tsa/base/tsa_model.py in _get_prediction_index(self, start, end, index, silent)
    475         # indexes.
    476         try:
--> 477             start, start_index, start_oos = self._get_index_label_loc(start)
    478         except KeyError:
    479             raise KeyError('The `start` argument could not be matched to a'

/anaconda3/lib/python3.6/site-packages/statsmodels/tsa/base/tsa_model.py in _get_index_label_loc(self, key, base_index)
    410         try:
    411             loc, index, index_was_expanded = (
--> 412                 self._get_index_loc(key, base_index))
    413         except KeyError as e:
    414             try:

/anaconda3/lib/python3.6/site-packages/statsmodels/tsa/base/tsa_model.py in _get_index_loc(self, key, base_index)
    351             # RangeIndex)
    352             try:
--> 353                 index[key]
    354             # We want to raise a KeyError in this case, to keep the exception
    355             # consistent across index types.

/anaconda3/lib/python3.6/site-packages/pandas/core/indexes/range.py in __getitem__(self, key)
    496 
    497         if is_scalar(key):
--> 498             n = int(key)
    499             if n != key:
    500                 return super_getitem(key)

TypeError: int() argument must be a string, a bytes-like object or a number, not 'Timestamp'

Но когда я запускаю это на фиктивном наборе данных, он отлично работает, но с моим набором данных. Не знаю, в чем проблема.

Что будет, если просто удалить pd.to_datetime?

John Zwinck 26.09.2018 14:25

KeyError: «Аргумент start не может быть сопоставлен с местоположением, связанным с индексом данных.» Это ошибка, которую я получаю, когда удаляю pd.to_datetime и передаю его как строку.

NIKHIL SHARMA 27.09.2018 08:13
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
2 034
1

Ответы 1

У меня была такая же проблема при прогнозировании месячных данных (сезон = 12). Месяц 09/2018 представлен как «2018-09-01» (включая 01 как день). Мои (для вас сокращенные) данные выглядели так:

my data

Обратите внимание, что мой индекс был индексом datetime, но частота, с которой это были ежемесячные данные, не была распознана. Что я сделал, что решил проблему, так это повторно сгенерировал индексы с помощью панд:

test = test.sort_index() #mine was not always sorted
test.index = (pd.date_range(start=test.index[0], end=test.index[-1], freq='MS')) #MS = month start, which means that the day is set to 01

И тогда была распознана ежемесячная частота:

После этого я не получил

TypeError: int() argument must be a string, a bytes-like object or a number, not 'Timestamp'

больше при использовании results.predict () или results.get_prediction () с отметками времени. Надеюсь, это поможет.

Другие вопросы по теме