首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指数超出范围的python股票分析

指数超出范围的python股票分析
EN

Stack Overflow用户
提问于 2018-01-12 20:37:24
回答 2查看 439关注 0票数 0

我正在做一个股票价格预测模型,我得到了一个1年的历史价格作为一个“数据库”。当我运行代码时,我得到了一个超出范围的列表索引,尝试使用行和列选择,但它没有工作

代码语言:javascript
复制
def get_data(IndFut):
with open('IndFut.csv','r') as csvfile:
    csvFileReader = csv.reader(csvfile)
    next(csvFileReader)
    for row in csvFileReader:
        dates.append(int(row[0].split('/')[0]))
        prices.append(float(row[1]))

这是数据

代码语言:javascript
复制
    Day        Close    Open    High     Low   Volume
11/01/2018  79830   78590   79845   78555   
10/01/2018  78638   78850   79025   78510   57030
09/01/2018  79242   79750   79925   79100   67500
08/01/2018  79829   79730   79915   79055   57270

出现以下错误:

代码语言:javascript
复制
prices.append(float(row[1]))

IndexError: list index out of range

我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-12 20:55:44

我认为你需要分割每一行来消除分号。

代码语言:javascript
复制
rows = [['11/01/2018;79830;78590;79845;78555;;']]

dates = []
prices = []

for row in rows:
    row = ''.join(rows[0]).split(';')
    dates.append(int(row[0].split('/')[0]))
    prices.append(float(row[1]))    

print(dates)
# [11]    

print(prices)
# [79830.0]

重写该功能:

代码语言:javascript
复制
def get_data(IndFut):
    with open(IndFut,'r') as csvfile:
        csvFileReader = csv.reader(csvfile)

        next(csvFileReader)

        for row in csvFileReader:
            row = ''.join(rows[0]).split(';')
            dates.append(int(row[0].split('/')[0]))
            prices.append(float(row[1]))
票数 0
EN

Stack Overflow用户

发布于 2018-01-12 21:14:19

我怀疑您的数据是制表符分隔的,因此您需要这样指示,并且可能需要删除空格。

代码语言:javascript
复制
def get_data(IndFut):
with open('IndFut.csv','r') as csvfile:
    csvFileReader = csv.reader(csvfile, delimiter='\t')
    next(csvFileReader)
    for row in csvFileReader:
        try:
            dates.append(int(row[0].split('/')[0]))
            prices.append(float(row[1]))
        except:
            print(f"failed to process row {row}")

编辑不确定我是否理解why...but,试试这个;

代码语言:javascript
复制
def get_data(IndFut):
with open('IndFut.csv','r') as csvfile:
    csvFileReader = csv.reader(csvfile, delimiter='\t')
    next(csvFileReader)
    for row in csvFileReader:
        split_row = row[0].split(';')[:-1]
        try:
            dates.append(int(split_row[0].split('/')[0]))
            prices.append(float(split_row[1]))
        except:
            print(f"failed to process row {split_row}")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48233692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档