我正在尝试将多个工作表写入一个工作簿,并且我正在使用pyexcelerate来利用它的优化写入时间。
这是我当前写入工作簿的代码:
def df_to_excel(df, path, sheet_name='Sheet 1'):
data = [df.columns.tolist(), ] + df.values.tolist()
wb = Workbook()
wb.new_sheet(sheet_name, data=data)
wb.save(path)
现在,如果我只需要一张纸,这种方法就可以了。但是,如果我在多张纸上书写,则只保留最后一张纸(之前生成的所有纸张都将被替换)。
我想保留所有工作表(使用diff名称为c),然后我查看了他们的github页面,但我找不到有关此类功能的信息: https://github.com/kz26/PyExcelerate
我还查看了其他一些stackoverflow帖子,但他们使用的是不同的包:
答案 0 :(得分:1)
如果您想将两个不同的 DataFrame 保存在工作簿的不同工作表中(以您的代码作为参考):
df = sns.load_dataset('tips')
sns.kdeplot(data=df, x='tip', hue='day')
答案 1 :(得分:0)
如果要更快地将不同的变量保存在一个excel文件的不同表中,并且还需要excel文件中pandas.dataframe的标题和索引。您可以执行以下操作,
var libraryInfos = [];
$("#library_info_tbl tbody tr").each(function(){
var tds = $("td", this);
var callNo = tds.first().html();
if(typeof libraryInfos[callNo] == 'undefined'){
libraryInfos[callNo] = [];
}
libraryInfos[callNo].push({
status: $(tds[4]).html(),
accessionNo: parseInt($(tds[3]).html())
});
});
$.each(libraryInfos, function(callNo, statusArr){
if(statusArr){
var reqData = { callno: callNo, statusarray: statusArr };
$.ajax({
url: 'index.php?action=savestatus',
type: 'POST',
dataType: 'JSON',
data: reqData
});
console.log(reqData);
}
});
'数据'是一个字典变量。 '键'数据'作为'工作表名称'每个键值的数据类型应该在pandas数据帧中。
答案 2 :(得分:0)
我们假设我们有一个列表数据结果列表,并且我们想通过使用python pyexcelerate将多个工作表写到一个工作簿中。
results = [[(0.0014, 0.0052, 0.827, 10, 'Andy'), (0.0012, 0.0063, 0.906, 11, 'Julia')]]
headers = list(['PERFORMANCE', 'SPEED', 'DEGREE', 'WINS', 'NAME'])
path = "/home/yagmurs/Downloads/" + 'Performance'
workbook = pyexcelerate.Workbook()
worksheet = workbook.new_sheet('Bench')
row = 1
for enum in range(len(headers)):
worksheet.set_cell_value(row, enum + 1, headers[enum])
for result in results:
for line in result:
row = row + 1
for col in range(len(headers)):
val = line[col]
worksheet.set_cell_value(row, col + 1, val)
workbook.save(path + '.xlsx')