【问题标题】:Using .pivot() after saving and loading from CSV causes KeyError从 CSV 保存和加载后使用 .pivot() 会导致 KeyError
【发布时间】:2018-01-07 19:01:53
【问题描述】:

我正在尝试从 Yahoo! 提取数据!财务分析,当我想从 CSV 文件中读取而不是从 Yahoo! 下载时遇到问题每次我运行程序。

import pandas_datareader as pdr
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import datetime

def get(tickers, startdate, enddate):
    def data(ticker):
        return pdr.get_data_yahoo(ticker, start = startdate, end = enddate)
    datas = map(data, tickers)
    return(pd.concat(datas, keys = tickers, names = ['Ticker', 'Date']))

tickers = ['AAPL', 'MSFT', 'GOOG']

all_data = get(tickers, datetime.datetime(2006, 10,1), datetime.datetime(2018, 1, 7))
all_data.to_csv('data/alldata.csv')

#Open file
all_data_csv = pd.read_csv('data/alldata.csv', header = 0, index_col = 'Date', parse_dates = True)

daily_close = all_data[['Adj Close']].reset_index().pivot('Date', 'Ticker', 'Adj Close')

我在“daily_close”部分遇到问题。上面的代码使用直接来自网络的“all_data”。如何更改代码的最后一行,以便从我的 csv 文件中提取数据?我已经尝试过daily_close = all_data_csv[['Adj Close']].reset_index().pivot('Date', 'Ticker', 'Adj Close'),但是由于“Ticker”,这会导致 KeyError。

csv 数据格式如下,第一列包含所有代码:

【问题讨论】:

  • all_data_csv.reset_index('Date')[['Date', 'Ticker', 'Adj Close']].pivot('Date', 'Ticker', 'Adj Close')

标签: python pandas dataframe pivot keyerror


【解决方案1】:

all_data_csv 的当前代码将无法像 all_data 那样工作。这是因为all_data 包含一个MultiIndex,其中包含执行数据透视所需的所有信息。

但是,对于all_data_csv,唯一的索引是Date。因此,我们需要做一些额外的工作才能使其正常工作。

  1. 首先,重置Date 索引
  2. 仅选择您需要的列 - ['Date', 'Ticker', 'Adj Close']
  3. 现在,以这些列为中心

c = ['Date', 'Ticker', 'Adj Close']
daily_close = all_data_csv.reset_index('Date')[c].pivot(*c)

daily_close.head()

Ticker          AAPL        GOOG       MSFT
Date                                       
2006-10-02  9.586717  199.422943  20.971155
2006-10-03  9.486828  200.714539  20.978823
2006-10-04  9.653308  206.506866  21.415722
2006-10-05  9.582876  204.574448  21.400393
2006-10-06  9.504756  208.891357  21.362070

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多