Pandas 写入 Excel 的几种情形与方式,覆盖,新增,追加,对齐

本文详细介绍了使用Pandas与openpyxl库操作Excel文件的多种方法,包括覆盖所有数据、保留多份数据、新开sheet写入、重写指定sheet、修改部分数据以及追加数据等场景。通过实例代码展示了如何灵活地对Excel文件进行读写操作,以满足不同需求。
摘要由CSDN通过智能技术生成
Pandas 写入 Excel 的几种情形与方式,覆盖,新增,追加,对齐
# 以下代码默认已经导入 np,pd
import numpy as np
import pandas as pd

# 执行下面示例之前,最好先删除 ./test.xlsx 文件

覆盖所有原有数据,只保留最后一份数据:

# pandas:1.4.1  openpyxl:3.0.9
# 删除文件原有数据,只保留 s2 一份数据(最后一份)

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])

s1.to_excel('test.xlsx', sheet_name="111", index=False)
s2.to_excel('test.xlsx', sheet_name="222", index=False)	# 只保留此份数据

覆盖所有原有数据,保留当前写入的多份数据:

# pandas:1.4.1  openpyxl:3.0.9
# 删除文件原有数据,同时保留s1 和s2 两份数据

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])

with pd.ExcelWriter("test.xlsx") as writer:
    # 保留两份数据
    s1.to_excel(writer, sheet_name="111", index=False)
    s2.to_excel(writer, sheet_name="222", index=False)

保留原有数据,新开一个sheet 写入数据

# pandas:1.4.1  openpyxl:3.0.9
# 保留原有数据 s1,新开一个sheet 写入数据 s2
from openpyxl import load_workbook

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])

# 先写入 s1 的数据(会新建excel文件)
s1.to_excel('test.xlsx', sheet_name='111', index=False)

book = load_workbook("test.xlsx")	# 该文件必须存在,并且该语句必须在 with pd.ExcelWriter() 之前
with pd.ExcelWriter("test.xlsx") as writer:
    writer.book = book
    s2.to_excel(writer, sheet_name="222", index=False)	
    # 新增一个sheet 并写入,如果这里这里指定的sheet已经存在,那么会在该名称后追加1,2,3,... 创建一个新的sheet写入,不会在原有sheet上修改

重写指定sheet数据,保留原有的其余sheet数据

# pandas:1.4.1  openpyxl:3.0.9
# 重写指定sheet数据,保留原有的其余sheet数据
from openpyxl import load_workbook

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])
s3 = pd.DataFrame(np.array([['s3', 's3', 's3', 's3']]), columns=['a', 'b', 'c', 'd'])

with pd.ExcelWriter("test.xlsx") as writer:
    # 先写入两个sheet
    s1.to_excel(writer, sheet_name="111", index=False)
    s2.to_excel(writer, sheet_name="222", index=False)

book = load_workbook("test.xlsx")
with pd.ExcelWriter("test.xlsx") as writer:
    writer.book = book
    writer.sheets = {i.title: i for i in book.worksheets}	# 指定sheet
    s3.to_excel(writer, sheet_name="111", index=False)

修改指定sheet内的部分数据,其余保持不变

# pandas:1.4.1  openpyxl:3.0.9
# 修改指定sheet内的部分数据,其余保持不变
from openpyxl import load_workbook

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])

with pd.ExcelWriter("test.xlsx") as writer:
    # 先写入两个sheet
    s1.to_excel(writer, sheet_name="111", index=False)
    s2.to_excel(writer, sheet_name="222", index=False)
    
book = load_workbook("test.xlsx")
with pd.ExcelWriter("test.xlsx") as writer:
    writer.book = book
    sheet = book['222']	# 通过sheet名称 获取 sheet
    sheet.cell(2, 1, 'hello')	# 修改第二行第一列的值
    sheet['b2'] = '你好'	# 修改 b2 单元格的值

向 sheet 中追加数据

1.在Excel 中追加

# pandas:1.4.1  openpyxl:3.0.9
# 向sheet中追加数据(一),在Excel 中追加
from openpyxl import load_workbook

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])
# s4 只有3列,并且列顺序被打乱,以模拟新数据与元数据的差异
s4 = pd.DataFrame(np.array([['s4b', 's4d', 's4c']]), columns=['b', 'd', 'c'])

with pd.ExcelWriter("test.xlsx") as writer:
    # 先写入两个sheet
    s1.to_excel(writer, sheet_name="111", index=False)
    s2.to_excel(writer, sheet_name="222", index=False)

df = pd.read_excel('test.xlsx', sheet_name='111')
row = df.shape[0]	# 获取原数据的行数
# 将 新数据 格式化成原数据的模样,以解决数据列之间的差异
s4 = pd.concat([pd.DataFrame(columns=df.columns), s4], ignore_index=True)

book = load_workbook("test.xlsx")
with pd.ExcelWriter("test.xlsx") as writer:
    writer.book = book
    writer.sheets = {sheet.title: sheet for sheet in book.worksheets}
    # 追加新数据,追加前必须先格式化新数据,否则新数据缺少列,或是列顺序不对会导致数据紊乱
    s4.to_excel(writer, sheet_name='111', startrow=row + 1, index=False, header=False)

向sheet中追加数据

2.在pandas中追加数据后,重写指定sheet

# pandas:1.4.1  openpyxl:3.0.9
# 向sheet中追加数据(二),在pandas中追加数据后,重写指定sheet
from openpyxl import load_workbook

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])
# s4 只有3列,并且列顺序被打乱,以模拟新数据与元数据的差异
s4 = pd.DataFrame(np.array([['s4b', 's4d', 's4c']]), columns=['b', 'd', 'c'])

with pd.ExcelWriter("test.xlsx") as writer:
    s1.to_excel(writer, sheet_name="111", index=False)
    s2.to_excel(writer, sheet_name="222", index=False)

df = pd.read_excel('test.xlsx', sheet_name='111')
df = pd.concat([df, s4], ignore_index=True)	# 合并数据

book = load_workbook("test.xlsx")
with pd.ExcelWriter("test.xlsx") as writer:
    writer.book = book
    writer.sheets = {sheet.title: sheet for sheet in book.worksheets}
    df.to_excel(writer, sheet_name='111', index=False)	# 重写sheet

在这里插入图片描述

  • 35
    点赞
  • 238
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答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提供了非常方便的方法处理数据,能够大大提高数据处理的效率。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值