Pandas与openpyxl库的 "完美" 融合!

本文介绍了如何在Python中结合使用Pandas和openpyxl库来处理Excel数据。通过Pandas创建DataFrame,然后利用openpyxl设置表格样式,包括表头颜色和居中对齐。此外,还展示了如何将openpyxl工作簿转换回DataFrame。通过这种方式,开发者可以同时享受Pandas的数据处理便利性和openpyxl的样式定制功能。
部署运行你感兴趣的模型镜像

大家好,我是Beyonce🚀

你用过pandas+openpyxl吗?今天为大家分享一个Python自动化办公文档中,没有提到的知识点。

前言

用过Pandas和openpyxl库的同学都知道,这两个库是相互互补的。Pandas绝对是Python中处理Excel最快、最好用的库,但是使用openpyxl的一些优势是能够轻松地使用样式、条件格式等自定义电子表格。

如果你又想轻松的使用Pandas处理Excel数据,又想为Excel电子表格添加一些样式,应该怎么办呢?

但是您猜怎么着,您不必担心挑选。

事实上,openpyxl 支持将数据从Pandas的DataFrame转换为工作簿,或者相反,将openpyxl工作簿转换为Pandas的DataFrame。

DataFrame转工作簿

我们先创建一个DataFrame:

import pandas as pd

data = {
    "姓名": ["张三", "李四"],
    "性别": ["男", "女"],
    "年龄": [15, 25],
}
df = pd.DataFrame(data)
df

结果如下:

313005a57e489fd4341b337cdf77d2aa.png

如果想要给表头设置为红色字体,并居中,应该如何设置呢?

from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
from openpyxl.styles import Font 
from openpyxl.styles import Alignment 

wb = Workbook()
ws = wb.active

for row in dataframe_to_rows(df, index=False, header=True):
    ws.append(row)
    
font = Font(name="微软雅黑",size=10, bold=True,italic=False,color="FF0000")
alignment = Alignment(horizontal="center",vertical="center")
    
for i in range(1,df.shape[1]+1):
    cell = ws.cell(row=1, column=i)
    print(cell.value)
    cell.font = font
    cell.alignment = alignment
    
wb.save("pandas.xlsx")

结果如下:

90d3ba504fb17235c543b8e7d3f6eec3.png

工作簿转DataFrame

如果有这样一份数据,我们想将其转换为DataFrame,应该怎么做?

2379a5805bf09340aab9266f1a2c31b2.png

其实这个有点多此一举,我们直接使用pandas读取后,处理完数据,在进行样式设计不就行了吗?为何一开始非要使用openpyxl读取工作簿呢?

哈哈,但是既然openpyxl中提供了这种方法,我们就来看看。

import pandas as pd
from openpyxl import load_workbook

wb = load_workbook(filename="df_to_openpyxl.xlsx")
ws = wb.active

values = ws.values
df = pd.DataFrame(values)   
df

结果如下:

a3a9b5a357d05751c33e73c36785baf1.png

觉得还不错就给我一个小小的鼓励吧!

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 解决 PandasOpenpyxl 之间兼容性问题的方法 当使用 `pandas` 处理 Excel 文件并希望利用 `openpyxl` 的功能时,可能会遇到两者之间的兼容性挑战。为了确保两个能够无缝协作,建议采取以下策略: #### 使用合适的文件格式 由于 `openpyxl` 不支持 `.xls` 格式的文件[^2],因此应优先考虑使用 `.xlsx` 或更新版本的 Excel 文件格式来保存工作簿。 ```python import pandas as pd # 创建 DataFrame 并将其写入 .xlsx 文件而不是 .xls 文件 df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}) with pd.ExcelWriter('output.xlsx', engine='openpyxl') as writer: df.to_excel(writer, index=False) ``` #### 控制写入模式以防止覆盖现有内容 为了避免意外覆盖已有的数据,在向现有的 Excel 工作表中追加新数据之前,先加载整个工作簿,并仅修改特定的工作表而不影响其余部分[^1]。 ```python from openpyxl import load_workbook # 加载已有 workbook 对象 wb = load_workbook(filename="example.xlsx") # 将新的 dataframe 添加到指定 sheet 名下 with pd.ExcelWriter("example.xlsx", mode="a", if_sheet_exists="overlay", engine="openpyxl") as writer: wb.active.title = "Sheet1" new_df = pd.DataFrame({"C": [5, 6], "D":[7,8]}) new_df.to_excel(writer, sheet_name=wb.sheetnames[0], startrow=len(wb.worksheets[0].max_row)+1 ,index=False) # 保存更改后的 workbook wb.save("updated_example.xlsx") ``` 通过上述方法可以在很大程度上提高 `pandas` 和 `openpyxl` 之间的互操作性和稳定性,从而更好地满足实际应用需求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值