各位大神,想请各位帮我问一问,到底该如何将xlsx数据加入数组

from dqn_agent import Agent
from model import QNetwork
import matplotlib.pyplot as plt
from openpyxl import load_workbook
import  numpy as np
import torch
import xlrd
from openpyxl import load_workbook
import gc
import pandas as pd

STATE_SIZE = 10
EPISODE_COUNT = 1000

def dqn1(n_episodes1=EPISODE_COUNT, eps_start1=1.0, eps_end1=0.01, eps_decay1=0.9995):
    scores1 = []
    for i_episode in range(1,n_episodes1+1):
        print("Episode" + str(i_episode))

        state = getState(stockData, 0, STATE_SIZE + 1)
        agent.inventory = []
        eps = eps_start1
        #global loss
        print(1)
        for t in range(l):
            print(2)
            action = agent.act(state,eps)
            print(1)
            next_state = getState(stockData, t + 1, STATE_SIZE + 1)
            reward = 0
            done = 1 if t == l - 1 else 0
            global loss
            loss = agent.step(state, action, reward, next_state, done)

            print("loss", + str(loss))
            scores1.append(loss)
            gc.collect()
        gc.collect()

    return scores1
def getState(data, t, n):

    d = t - n + 1

    block = data[d:t + 1]
    buffer = []
    print(12345)
    for i in range(len(block)):

        print("res=",buffer[i])
        buffer.append(block[i + 1]-block[i])
        #print("res=",res[i])
        return np.array([buffer])
    #return np.array([res])

if __name__== '__main__':
    print(1)
    stockData = [None]*3024
    #stockData = []


    #datas1 =xlrd.open_workbook(r'C:\Users\86138\Desktop\zi_ding_yi.xlsx',{'constant_memory':True})
    # datas1 = xlrd.open_workbook('zi_ding_yi.xlsx')
    datas1 = load_workbook('zi_ding_yi.xlsx')

    print(2)
    table = datas1.get_sheet_by_name('Sheet1')
    row_num = 0
    print(3)
    print(table)
    # col = table.col_values(5)
    # print(col)
    while row_num <= 3024:
        row_num = row_num + 1
        stockData.append(table.cell(row=row_num,column=5).value)

        print("stockData[row_num]", stockData[row_num])
    # while row_num <= 800 :
    #     stockData.append(table.cell_value(row_num,5))
    #     row_num += 1
    #     print("stockData[row_num]",stockData[row_num])

    agent = Agent(state_size=STATE_SIZE, action_size=3)
    print(4)
    l = len(stockData)

    # scores = dqn()
    scores1 =dqn1()

我在

state = getState(stockData, 0, STATE_SIZE + 1)

这一条加了个断点。

然后运行结果是

C:\Users\86138\anaconda3\python.exe "D:\pycharm\PyCharm Community Edition 2020.2.2\plugins\python-ce\helpers\pydev\pydevd.py" --multiproc --qt-support=auto --client 127.0.0.1 --port 64243 --file C:/Users/86138/Desktop/stockPrediction-master/yunfuzai_main.py
pydev debugger: process 22548 is connecting
Connected to pydev debugger (build 202.7319.64)
1
2
3
<Worksheet "Sheet1">
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
stockData[row_num] None
s
stockData[row_num] 4155527081
stockData[row_num] 329150663
4
Episode1
Backend Qt5Agg is interactive backend. Turning interactive mode on.

我尝试过,读取excel数据是没有问题的,但是就是这个stockData是没有办法加进来,我就想问问,到底是怎么回事,想请各位大神帮帮我

直接用pandas库来读就行

import pandas as pd
data = pd.read_excel('文件名称',sheet_name='表单名称')
stockData = list(data['列名'])

 

我也不清楚,不如用pandas来读取xlsx,数据以DataFrame类型来操作

列表赋值stockData=[]看看

stockData = [None]*3024  前3024个都是None 有啥问题吗?

 

while row_num <= 3024:
    stockData.append(table.cell(row=row_num,column=5).value)
    print("stockData[row_num]", stockData[row_num])
    row_num = row_num + 1

 

您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题。

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

因为你的row_num是从0开始计数的,在设定while条件就应该是while<3024,循环到第3023时,继续执行循环,第3024行单元格数据添加,单元格行数正好是1-3024。在两个地方同时改下,看结果如何。

 

stockData=[]

...

while row_num<=3023:

@bj_0163_bj,这样也要把循环条件减少一个,不然到3024时在读取单元格数据时因超过数据行数会出现None

你好,我是问答小助手,本次您提出的有问必答问题,已经由其他小伙伴为您做出解答,并解决了您的问题。

本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。

可以使用pandas。https://yiyele.blog.csdn.net/article/details/80605909