Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不删除其他工作表的情况下将数据框保存到excel工作表中?_Excel_Python 3.x_Pandas - Fatal编程技术网

如何在不删除其他工作表的情况下将数据框保存到excel工作表中?

如何在不删除其他工作表的情况下将数据框保存到excel工作表中?,excel,python-3.x,pandas,Excel,Python 3.x,Pandas,我想从股票市场中提取一些数据,并将它们保存在不同的excel文件中。每个股票交易过程都有不同的时间框架,比如100万、300万、500万、1500万等等。。 我想为每个股票创建一个excel文件,并为每个时间段创建不同的工作表 我的代码为股票(符号)创建excel文件,并在其中添加工作表(1m、3m、5m…),保存文件,然后从股票市场api提取数据并保存到正确的工作表中。如ETH/BTC,创建文件和工作表,拉取“1m”数据并保存到“1m”工作表中 代码创建文件和工作表,我对其进行了测试。 问题是

我想从股票市场中提取一些数据,并将它们保存在不同的excel文件中。每个股票交易过程都有不同的时间框架,比如100万、300万、500万、1500万等等。。 我想为每个股票创建一个excel文件,并为每个时间段创建不同的工作表

我的代码为
股票(符号)
创建excel文件,并在其中添加工作表
(1m、3m、5m…
),保存文件,然后从股票市场api提取数据并保存到正确的工作表中。如ETH/BTC,创建文件和工作表,拉取“1m”数据并保存到“1m”工作表中

代码创建文件和工作表,我对其进行了测试。 问题是,将dataframe写入excel文件后,它会删除所有其他工作表。我试图提取每个符号的所有数据。但当我打开excel文件时,只写入了最后一个
时间段(1w)
,所有其他工作表都被删除。所以请帮忙

我检查了其他问题,但没有发现相同的问题。在最后一部分中,我并没有尝试添加一个新的工作表,而是尝试将df保存到现有的工作表中

#get_bars function pulls the data

def get_bars(symbol, interval):
.
.
.
return df


我认为与其将
ExcelWriter
定义为变量,不如在
With
语句中使用它,并使用
append模式
,因为您已经使用
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])
在上面的代码中,您在
xrpudt
变量中使用了一个静态间隔“1m”,该变量在该代码中变为变量

资源

ExcelWriter:在这里您可以看到
附加模式的用例

如何写入excel:在这里您可以看到如何写入多张工作表

嗨,谢谢你这么快就回答了。我试过你的解决办法。但它给出了一个错误:
ValueError:xlsxwriter不支持追加模式
我搜索了这个错误,找到了一个解决方案,并将其添加到您的代码中:
使用pd.ExcelWriter(file,engine='openpyxl'mode='a')作为编写器:
xrpudt.to_excel(writer,sheet_name='1m')
但是使用这一行创建了文件和工作表,但创建了另一个名为:“1m1”的工作表,其中包含数据框。然后我再次检查了代码,删除了:
for x in range(len(timeseries)):
循环,并将其重写如下:
for x in range(len(timeseries)):
xrpudt=get_bar(symbol,interval=timeseries[x])
与pd.ExcelWriter(文件,engine='openpyxl',mode='a')作为编写者:
xrpusdt.to_excel(编写者,工作表名称=timeseries[x])
使用这些行代码创建文件并附加名为“1m”、“3m”、“5m”、“15m”的新工作表。。。其中包含数据帧。这对我很有效。谢谢你给我带路。但奇怪的是,我无法将数据框写入excel文件中的现有工作表中。再次感谢。(很抱歉没有正确定位代码,我是该网站的新手。)谢谢@milikest。我已相应地更正了答案
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])