访问.csv文件时使用Pandas获取KeyError

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

出于某种原因,在查看我拥有的.csv股票数据时,大熊猫会抛出错误。这是错误:

回溯(最近一次调用最后一次):文件“/usr/local/lib/python3.7/site-packages/pandas/core/indexes/base.py”,第3078行,在get_loc中返回self._engine.get_loc(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 “

在处理上述异常期间,发生了另一个异常:

回溯(最近调用最后一次):文件“./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] ._values文件“/usr/local/lib/python3.7/site-packages/pandas/core/frame.py”,>第2688行,在getitem中返回self._getitem_column(key)文件“/ usr / local / lib / python3.7 / site-packages / pandas / core / frame.py“,> 2695行,在_getitem_column中返回self._get_item_cache(key)文件”/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中> return 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   $$      $$   $$      $$      $$       $$

我尝试更改Date的大小(即将Date更改为date),但它只是继续抛出另一个

KeyError:在轴中找不到“['高','低','打开','关闭','音量'

有人可以帮忙吗?

python python-3.x pandas dataframe finance
2个回答
0
投票

看起来你正在使用错误的轮廓标。该文件是空白描绘的,不​​是逗号描述的。

尝试使用空白描绘符:

df = pd.read_csv('stock_dfs/{}.csv'.format(ticker), 
delimiter=r'\s+', encoding="utf-8-sig")

0
投票

在我的情况下,我在设置索引时没有任何条目,数据框是空的。值得一试

if len(df) > 0:

在设置索引之前

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