Получение KeyError с использованием Pandas при доступе к файлам .csv - PullRequest
0 голосов
/ 05 ноября 2018

По какой-то причине pandas выдает ошибку при просмотре имеющихся у меня данных .csv. Вот ошибка:

Traceback (последний вызов был последним): Файл "/usr/local/lib/python3.7/site-packages/pandas/core/indexes/base.py", строка 3078, в get_loc вернуть self._engine.get_loc (ключ) Файл "pandas / _libs / index.pyx", строка 140, в файле pandas._libs.index.IndexEngine.get_loc Файл "pandas / _libs / index.pyx", строка 162, в файле pandas._libs.index.IndexEngine.get_loc Файл "pandas / _libs / hashtable_class_helper.pxi", строка 1492, в pandas._libs.hashtable.PyObjectHashTable.get_item Файл "pandas / _libs / hashtable_class_helper.pxi", строка 1500, в файле pandas._libs.hashtable.PyObjectHashTable.get_item KeyError: 'Date'

Во время обработки вышеуказанного исключения произошло другое исключение:

Traceback (последний вызов был последним): Файл "./python-for-finance-7.py", строка 75, в compile_data () Файл "./python-for-finance-7.py", строка 59, в compile_data df.set_index ('Date', inplace = True) Файл "/usr/local/lib/python3.7/site-packages/pandas/core/frame.py",> строка 3909, в set_index level = frame [col] ._ значения Файл "/usr/local/lib/python3.7/site-packages/pandas/core/frame.py",> строка 2688, в getitem вернуть self._getitem_column (ключ) Файл "/usr/local/lib/python3.7/site-packages/pandas/core/frame.py",> строка 2695, в _getitem_column вернуть self._get_item_cache (ключ) Файл "/usr/local/lib/python3.7/site-packages/pandas/core/generic.py", строка 2489, в _get_item_cache values ​​= self._data.get (item) Файл "/usr/local/lib/python3.7/site->packages/pandas/core/internals.py", строка 4115, в get loc = self.items.get_loc (item) Файл "/usr/local/lib/python3.7/site-packages/pandas/core/indexes/base.py", строка 3080, в get_loc> возвращает self._engine.get_loc (self._maybe_cast_indexer (key)) Файл "pandas / _libs / index.pyx", строка 140, в файле pandas._libs.index.IndexEngine.get_loc Файл "pandas / _libs / index.pyx", строка 162, в файле pandas._libs.index.IndexEngine.get_loc Файл "pandas / _libs / hashtable_class_helper.pxi", строка 1492, в pandas._libs.hashtable.PyObjectHashTable.get_item Файл "pandas / _libs / hashtable_class_helper.pxi", строка 1500, в файле pandas._libs.hashtable.PyObjectHashTable.get_item KeyError: 'Date'

к этому коду:

import bs4 as bs
import datetime as dt
import os 
import pandas as pd
import pandas_datareader.data as web
import pickle
import requests

def compile_data():
    with open("sp500tickers.pickle","rb") as f:
        tickers = pickle.load(f)

    main_df = pd.DataFrame()

    for count,ticker in enumerate(tickers):
        df = pd.read_csv('stock_dfs/{}.csv'.format(ticker), 
delimiter=',', encoding="utf-8-sig")

        df.set_index('Date', inplace=True)

        df.rename(columns = {'Adj Close':ticker}, inplace=True)
        df.drop(['High','Low','Open','Close','Volume'], 1, inplace=True)

        if main_df.empty:
            main_df = df
        else:
            main_df = main_df.join(df, how='outer')

        print(count)

    print(main_df.head())
    main_df.to_csv('sp500_joined_closes.csv')

compile_data()

Данные в файлах CSV расположены следующим образом:

Date         High   Low  Open   Close   Volume   Adj. Close

yyyy-mm-dd   $$      $$   $$      $$      $$       $$

Я попытался изменить регистр даты (т.е. изменить дату на дату), но он просто переходит к другому

KeyError: "['High', 'Low', 'Open', 'Close', 'Volume'] не найдено на оси

Может кто-нибудь помочь, пожалуйста ??

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

В моем случае у меня не было записей при настройке индекса, фрейм данных был пуст. Стоит проверить

if len(df) > 0:

до установки индекса

0 голосов
/ 05 ноября 2018

Похоже, вы используете не тот линеатор. Файл выделен пробелом, не запятая.

Попробуйте использовать разделитель пробелов:

df = pd.read_csv('stock_dfs/{}.csv'.format(ticker), 
delimiter=r'\s+', encoding="utf-8-sig")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...