pandas写入已存在excel文件的sheet里的报错

问题描述

将dataframe存入excel里直接df.to_excel,但当excel已存在时,需要把dataframe存入一个新的sheet页里要怎么做,我在网上搜到的方法是这样的:

import pandas as pd
from openpyxl import load_workbook
writer = pd.ExcelWriter('test.xlsx', mode='a', engine='openpyxl')
book = load_workbook('test.xlsx')
writer.book = book
data.to_excel(writer, sheet_name='sheet2')
writer.save()

当sheet2不存在时,这样是可行的,但是当sheet2本身是存在的,就会重新生成一个sheet21,这就有问题了,没有更新进去,而这里pd.ExcelWriter()方法中,mode参数可选为"w"和"a",选"w"会覆盖掉原来excel的所有内容,不可取,所以在参数这里只能选"a"

那就找一个笨办法,我们把原来的sheet读出来放到一个dataframe里,然后删除原"sheet2",重新新建一个"sheet2",于是:

import pandas as pd
from openpyxl import load_workbook
writer = pd.ExcelWriter('test.xlsx', mode='a', engine='openpyxl')
book = load_workbook('test.xlsx')
book.remove_sheet(book.get_sheet_by_name('sheet2'))
writer.book = book
data.to_excel(writer, sheet_name='sheet2')
writer.save()

结果出现了警告:

DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]). book.remove_sheet(book.get_sheet_by_name(‘sheet2’))

这个警告的意思是,引用了已弃用的函数,我们可以看到原函数的标注,book.remove_sheet已弃用,直接用book.remove()即可
在这里插入图片描述

import pandas as pd
from openpyxl import load_workbook
writer = pd.ExcelWriter('test.xlsx', mode='a', engine='openpyxl')
book = load_workbook('test.xlsx')
if 'sheet2' in book.sheetnames:   # get_sheet_names()方法也已弃用
	book.remove(book['sheet2'])
writer.book = book
data.to_excel(writer, sheet_name='sheet2')
writer.save()

运行之后就可以得出增加后的excel文件

打包exe

由于需求是完成程序后打包成可执行文件,在用pyinstaller打包时出了错,报错信息是:

‘sheet2’ not in list.

意思就是没有完成删除工作簿操作,于是换了一种写法:

 with pd.ExcelWriter('test.xlsx', mode='a', if_sheet_exists='replace') as writer:  # doctest: +SKIP
     data.to_excel(writer, sheet_name='sheet2')
     writer.save()
     writer.close()

测试后发现可行,按通用程度来说,还是后者。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 使用pandas库可以很方便地将数据写入Excel文件中,并且可以选择是覆盖原有数据还是追加到已有数据的末尾。 如果要追加数据,可以使用pandas的`ExcelWriter`类,并将`mode`参数设置为`a`,表示追加数据。具体代码如下: ```python import pandas as pd # 读取已有的Excel文件 df = pd.read_excel('data.xlsx') # 创建ExcelWriter对象,设置mode为追加 writer = pd.ExcelWriter('data.xlsx', mode='a') # 将新数据写入Excel文件 new_data = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6]}) new_data.to_excel(writer, sheet_name='Sheet1', index=False, header=False, startrow=len(df)) # 关闭ExcelWriter对象 writer.save() ``` 在上面的代码中,首先使用`pd.read_excel`方法读取已有的Excel文件,然后创建`ExcelWriter`对象,并将`mode`参数设置为`a`。接着,将新数据写入Excel文件中,其中`startrow`参数表示从哪一行开始写入数据,这设置为已有数据的行数。最后,关闭`ExcelWriter`对象,保存数据到Excel文件中。 需要注意的是,如果要追加数据,新数据的列数必须与已有数据的列数相同,否则会。如果新数据的列数不同,可以先将新数据转换为与已有数据列数相同的格式,再进行追加操作。 ### 回答2: Pandas是一款常用的数据处理工具,具有方便、快捷、高效的特点。写入excel文件是我们在使用Pandas时经常会遇到的操作之一,有时我们需要在原有的excel表格中追加数据。本文将介绍如何使用Pandas将数据追加到已有的excel表格中。 首先,我们需要安装Pandas库。在Python环境下,使用以下命令进行安装: ``` pip install pandas ``` 安装完成后,我们需要创建一个Pandas的DataFrame对象。这个对象类似于一个表格,面可以存储数据。 假设我们需要将数据追加到已经存在excel文件中,我们需要使用Pandas的`ExcelWriter`对象。该对象可以用于写入excel文件,具有追加数据的选项。以下是基本的代码示例: ```python import pandas as pd # 创建一个DataFrame对象 data = {'姓名': ['张三', '李四', '王五'], '年龄': [20, 30, 25]} df = pd.DataFrame(data) # 定义写入excel文件文件名和路径 excel_file = 'data.xlsx' # 创建一个ExcelWriter对象,第一个参数是要写入excel文件名,第二个参数是追加模式 writer = pd.ExcelWriter(excel_file, mode='a', engine='openpyxl') # 将数据写入到已存在excel文件中 df.to_excel(writer, sheet_name='Sheet1', index=False, header=False) # 保存并关闭ExcelWriter对象,否则数据可能不会同步写入文件 writer.save() writer.close() ``` 在上述示例中,我们首先创建了一个DataFrame对象`df`来存储数据,包括姓名和年龄信息。然后,我们在代码中指定了excel文件的名称和路径,使用`ExcelWriter`对象打开该文件并指定追加模式。接着,将数据写入excel文件的指定的sheet中,同时指定不需要写入行和列的索引信息。最后保存并关闭ExcelWriter对象,确保数据成功追加到文件中。 需要注意的是,当数据写入excel文件时,ExcelWriter对象必须保存并关闭,否则数据可能不会同步写入文件。此外,我们还可以指定写入excel文件的行和列,也可以指定新写入的数据覆盖已有的数据。 在实际应用中,我们可以根据自己的需要对上述代码进行修改和扩展,以满足数据分析和处理的要求。 ### 回答3: Pandas是一个基于Python的数据分析包,常用于数据清洗、数据处理和数据可视化等方面。在使用Pandas进行数据处理时,通常需要将数据写入Excel文件,有时也需要追加数据到已有的Excel文件中。下面是关于Pandas写入Excel文件追加的相关内容,介绍如下: 1. Pandas写入Excel文件方法: Pandas提供了两个常用的方法将数据写入Excel文件:to_excelExcelWriter。 1.1 to_excel方法 该方法可以将Pandas数据结构(DataFrame、Series)写入Excel文件中,语法如下: DataFrame.to_excel(excel_writer, sheet_name='Sheet1', index=True) 参数解释: 1) excel_writer: ExcelWriter对象或Excel文件的路径,用于写入数据。 2) sheet_name: Excel文件中的sheet名称。 3) index: 是否保留Pandas数据结构的索引。 示例代码: import pandas as pd df = pd.DataFrame({'name': ['Tom', 'Jerry', 'Bob'], 'age': [22, 24, 23]}) df.to_excel('test.xlsx', sheet_name='Sheet1', index=False) 1.2 ExcelWriter方法 该方法需要创建一个ExcelWriter对象,用于控制写入Excel文件的过程,语法如下: with pd.ExcelWriter('test.xlsx') as writer: df.to_excel(writer, sheet_name='Sheet1', index=False) 示例代码: import pandas as pd df = pd.DataFrame({'name': ['Tom', 'Jerry', 'Bob'], 'age': [22, 24, 23]}) with pd.ExcelWriter('test.xlsx') as writer: df.to_excel(writer, sheet_name='Sheet1', index=False) 2. Pandas追加数据到Excel文件方法: 当需要将数据追加到已有的Excel文件中时,可以使用ExcelWriter方法创建一个ExcelWriter对象,然后使用Pandas的to_excel方法将数据追加到指定的sheet中,示例代码如下: import pandas as pd df2 = pd.DataFrame({'name': ['Lucy', 'John'], 'age': [20, 19]}) with pd.ExcelWriter('test.xlsx', mode='a') as writer: df2.to_excel(writer, sheet_name='Sheet1', index=False, startrow=3) 参数说明: 1) mode='a':打开文件后追加数据。 2) startrow:从Excel文件的第几行开始写入数据。 3. 总结 本文介绍了Pandas写入Excel文件追加的方法,主要是通过ExcelWriter方法和to_excel方法实现的。当需要追加数据到已有的Excel文件时,可以使用ExcelWriter方法打开文件后追加数据,然后使用to_excel方法将数据写入指定的sheet中。Pandas提供了非常方便的方法处理数据,能够大大提高数据处理的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值