首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用python从pandas到一个excel工作表的多个数据帧,而不删除其他工作表。

使用python从pandas到一个excel工作表的多个数据帧,而不删除其他工作表。
EN

Stack Overflow用户
提问于 2021-11-19 13:07:26
回答 1查看 89关注 0票数 0

我有两个dfs,我想导出到一个现有的excel文件,它已经有三张表。这两个dfs应该在表"Sheet1“(一个新表)中

代码语言:javascript
运行
复制
    df = pd.read_excel("Data Set Finished.xlsx", sheet_name="Details")
    df2 = df.sum(axis=1)

    writer = pd.ExcelWriter('Data Set Finished.xlsx', engine='openpyxl', mode ="a")
    
    
    df.to_excel(writer, sheet_name='Sheet1', index=False) 
    df2.to_excel(writer, sheet_name='Sheet1', startrow= 1,startcol=12, index=False, header=False)

但是我得到了这个错误:Sheet 'Sheet1' already exists and if_sheet_exists is set to 'error'.我尝试了xlsxwriter而不是openpyxl,但这只是删除了其他的工作表,显然xlsxwriter没有追加模式。我怎么才能解决这个问题呢?

EN

Stack Overflow用户

回答已采纳

发布于 2021-11-19 13:37:54

我是xlwings的铁杆粉丝,它是蟒蛇发行版的一部分。这使您可以与EXCEL进行交互,这对于查看dataframes (如xl.view(df) )非常方便。它还可以让你准确地将输出定位在你想要的位置,你还可以设置单元格的格式(例如,将标题设置为粗体和不同的颜色)。

您可以尝试类似这样的操作,其中文件应引用现有工作簿(包括文件路径)。这里我假设Sheet1已经存在于excel工作簿中。如果不是这样,那么通过wb.sheets.add()添加一个工作表。

代码语言:javascript
运行
复制
import numpy as np
import pandas as pd
import xlwings as xl

df1 = pd.DataFrame({
    'date':pd.date_range(start='1/1/1990', periods=10, freq='Q'),
    'a': np.random.choice(range(100),10),
    'b': np.random.choice(range(100),10),
})

df2 = pd.DataFrame({
    'date':pd.date_range(start='1/1/2000', periods=10, freq='Q'),
    'c': np.random.choice(range(100),10),
    'd': np.random.choice(range(100),10),
})

df3 = pd.DataFrame({
    'date':pd.date_range(start='1/1/2010', periods=10, freq='Q'),
    'e': np.random.choice(range(100),10),
    'f': np.random.choice(range(100),10),
})


file = 'C:/Users/BRB/Book1.xlsx'

wb = xl.Book(file)
ws = wb.sheets('Sheet1')

ws.range('A1').value = df1
ws.range('E1').value = df2
ws.range('A14').value = df3

wb.save()
wb.close()

如果您想隐藏索引,只需包含选项options(index=False),如下所示:

代码语言:javascript
运行
复制
ws.range('A1').options(index=False).value = df1
ws.range('E1').options(index=False).value = df2
ws.range('A14').options(index=False).value = df3
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70035341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档