excel - 如何在不删除其他工作表的情况下将数据框保存到 Excel 工作表中?
问题描述
我正在尝试从股票市场中提取一些数据并将它们保存在不同的 Excel 文件中。每个股票交易过程都有不同的时间范围,例如 1m、3m、5m、15m 等。我想为每只股票创建一个 excel 文件,并为每个时间范围创建不同的表格。
我的代码为 a 创建 excel 文件stock (symbol)
并在其中添加工作表(1m,3m,5m...)
并保存文件,然后从股票市场 api 中提取数据并保存到正确的工作表中。如 ETH/BTC,创建文件和表格,拉取“1m”数据并保存到“1m”表格中。
代码创建文件和工作表,我对其进行了测试。问题是在将数据框写入 excel 文件后,它会删除所有其他工作表。我试图提取每个符号的所有数据。但是当我打开excel文件时,只time frame (1w)
写了最后一个文件,所有其他工作表都被删除了。所以请帮忙。
我检查了其他问题,但没有发现同样的问题。在最后一部分,我没有尝试添加新工作表,而是尝试将 df 保存到现有工作表。
#get_bars function pulls the data
def get_bars(symbol, interval):
.
.
.
return df
...
timeseries=['1m','3m','5m','15m','30m','1h','2h','4h','6h','12h','1d','1w']
from pandas import ExcelWriter
from openpyxl import load_workbook
for symbol in symbols:
file = ('C:/Users/mi/Desktop/Kripto/' + symbol + '.xlsx')
workbook = xlsxwriter.Workbook(file)
workbook.close()
wb = load_workbook(file)
for x in range(len(timeseries)):
ws = wb.create_sheet(timeseries[x])
print(wb.sheetnames)
wb.save(file)
workbook.close()
xrpusdt = get_bars(symbol,interval='1m')
writer = pd.ExcelWriter(file, engine='xlsxwriter')
xrpusdt.to_excel(writer, sheet_name='1m')
writer.save()
解决方案
我认为ExcelWriter
您需要在With
语句中使用它并使用它,而不是将其定义为变量,append mode
因为您已经使用xlsxwriter
如下所示创建了一个 excel 文件
for x in range(len(timeseries)):
xrpusdt = get_bars(symbol,interval=timeseries[x])
with pd.ExcelWriter(file,engine='openpyxl', mode='a') as writer:
xrpusdt.to_excel(writer, sheet_name=timeseries[x])
在上面的代码中,您在变量中使用静态间隔作为“1m”,该xrpusdt
变量在此代码中更改为变量。
资源:
Pandas ExcelWriter:在这里你可以看到append mode
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.ExcelWriter.html#pandas.ExcelWriter的用例
Pandas df.to_excel:在这里您可以看到如何写入多张纸
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_excel.html
推荐阅读
- javascript - Git 添加、提交和从网站推送
- javascript - Angular settimeout不工作Javascript
- java - 使用 git 分支的 Maven 版本控制
- javascript - Fabric js禁用对象取消选择
- emacs - emacs verilog moide:包含 verilog-library-directories 的完整命令
- java - IsPrime 方法有死代码并且不返回 int
- django - 如何在 Django 中显示有关 M2M 字段的附加字段或覆盖 select2-results__option
- c# - 从堆栈/队列中弹出堆栈
- c - 删除双向链表的一部分
- clojure - 带引导的环服务器的自动浏览器刷新