#python #pandas #dataframe #datetime #series
#python #pandas #фрейм данных #datetime #Серии
Вопрос:
У меня есть некоторые финансовые данные, с которыми я играю на AWS, просто чтобы узнать что-то новое. Я загрузил эти данные с помощью yfinance
модуля. Я не уверен, смогу ли я включить csv-файл с данными, но вот фрагмент df.head(), который, надеюсь, даст вам представление о том, как это выглядит. Это некоторые ежедневные цены, отсортированные по дате в YYYY-MM-DD
формате.
В конечном счете, я хотел бы разбить этот фрейм данных на отдельные серии pandas на основе календарных лет. Некоторые поисковые запросы предполагают, что я должен использовать что-то вроде
df['Date'] = pd.to_datetime(df['Date'], format="%Y-%m-%d")
для преобразования в, pd.datetime
из которого я должен иметь возможность относительно легко переходить к серии.
Тем не менее, я перепробовал много вариантов этого, но продолжаю получать длинную ошибку обратной трассировки:
KeyError Traceback (most recent call last)
~/anaconda3/envs/amazonei_mxnet_p36/lib/python3.6/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2645 try:
-> 2646 return self._engine.get_loc(key)
2647 except KeyError:
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: 'Date'
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
<ipython-input-82-c28bc405dae4> in <module>
3 SP500_df = fill_nan_with_mean(SP500)
4
----> 5 df['Date'] = pd.to_datetime(df['Date'], format="%Y-%m-%d")
~/anaconda3/envs/amazonei_mxnet_p36/lib/python3.6/site-packages/pandas/core/frame.py in __getitem__(self, key)
2798 if self.columns.nlevels > 1:
2799 return self._getitem_multilevel(key)
-> 2800 indexer = self.columns.get_loc(key)
2801 if is_integer(indexer):
2802 indexer = [indexer]
~/anaconda3/envs/amazonei_mxnet_p36/lib/python3.6/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
2646 return self._engine.get_loc(key)
2647 except KeyError:
-> 2648 return self._engine.get_loc(self._maybe_cast_indexer(key))
2649 indexer = self.get_indexer([key], method=method, tolerance=tolerance)
2650 if indexer.ndim > 1 or indexer.size > 1:
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: 'Date'
Я не уверен, что делать с этой ошибкой. В настоящее время я думаю, что это, возможно, вызвано либо: i. моей некомпетентностью, ii. что-то, что Date
не сохраняется так, как я думаю, что оно сохраняется, и, следовательно, неправильно конвертируется, либо iii. может быть, что-то присущее AWS?
У кого-нибудь есть предложения по поводу того, что здесь может происходить? В противном случае, есть ли у кого-нибудь предложения по каким-либо потенциальным обходным путям, которые позволили бы избежать pd.datetime
полного использования?
Заранее спасибо
Комментарии:
1. похоже, что у вашего df есть индекс ‘Date’, а не столбец. вы должны иметь возможность преобразовать это в datetime с помощью
df.index = pd.to_datetime(df.index)
.
Ответ №1:
MrFuppes верен. Этого было достаточно df.index = pd.to_datetime(df.index)
. Я действительно пытался сбросить индекс перед вызовом столбца, и это выдало мне ту же ошибку, но, по крайней мере, это работает.