关于使用tushare获取股票数据并将获取的list写入Excel的问题
我的需求是这样的:通过tushare获取指定股票的历史交易数据,返回一个pandas的数据类型,用list()方法转换为一个二维列表。再将这个列表用cell方法写入Excel列表。但是在运行到cell方法的时候老是提示KEY ERRER(标红的那个位置)。代码如下:
import tushare as ts
import openpyxl as opl
def save(data,path):#将获取的二维列表存为Excel
wb = opl.Workbook()
ws = wb.active # 激活 worksheet
= data.shape# h为行数,l为列数
for i in range(h):
for j in range(l):
ws.cell(i, j, data)
wb.save(path)
code = "300267"
# pro = ts.pro_api()
b = ts.get_k_data(code=code,start="1999-01-01",end='2020-01-01')
list(b)
save(b, '300267.xlsx') 本帖最后由 suchocolate 于 2020-11-21 20:38 编辑
range从0开始,那么第一个格子是cell(0,0),xls行列从1开始编号,所以报错。
for i in range(1,h+1):
for j in range(1,l+1):
另外提一下,pandas支持直接导出为excel文件:df.to_excel('filename') suchocolate 发表于 2020-11-21 20:34
range从0开始,那么第一个格子是cell(0,0),xls行列从1开始编号,所以报错。
另外提一下,pandas支持直 ...
我之前也是觉得可能是这方面的问题,我是在最后一个循环里给h和l+1但还是报错。这是怎么回事? suchocolate 发表于 2020-11-21 20:34
range从0开始,那么第一个格子是cell(0,0),xls行列从1开始编号,所以报错。
另外提一下,pandas支持直 ...
还是报keyerror错误哦~~ 本帖最后由 suchocolate 于 2020-11-21 22:11 编辑
1b1n1m 发表于 2020-11-21 21:14
还是报keyerror错误哦~~
才注意到,pandas取数据这样取是不对的data,要精确定位某个元素得这样:print(df.iat)不过这样就是慢,要一个一个写。所以建议用df.to_excel,或者用openpyxl的ws.append(一行数据)import tushare as ts
import openpyxl as opl
def save(data, path):#将获取的二维列表存为Excel
wb = opl.Workbook()
ws = wb.active # 激活 worksheet
h, l = data.shape# h为行数,l为列数
for i in range(h):
ws.append(data.loc)
wb.save(path)
code = "300267"
# pro = ts.pro_api()
b = ts.get_k_data(code=code,start="1999-01-01",end='2020-01-01')
list(b)
save(b, '300267.xlsx') suchocolate 发表于 2020-11-21 21:51
才注意到,pandas取数据这样取是不对的data,要精确定位某个元素得这样:不过这样就是慢,要一个一 ...
这个是按照你推荐的用to_excel方法写的:
import tushare as ts
import openpyxl as opl
import pandas as pd
code = "600565"
b = ts.get_k_data(code=code,start="1999-01-01",end='2020-11-21')
#下面是将获取的pandas数据帧转换为Excel。因为tushare获取的数据是pandas的数据帧格式,
# 可以直接使用to_excel方法转换为xls格式的Excel文件
whiter = pd.ExcelWriter("迪马股份.xls")#在这里需要有一个xlwt的库,如果没有还要下载。。。。
print("whited!")
b.to_excel(whiter)
print("to_excel")
whiter.save()
print("saved~")
页:
[1]