首页 > 编程语言 >python Pandas合并(单元格、sheet、excel )

python Pandas合并(单元格、sheet、excel )

时间:2024-08-29 17:54:43浏览次数:8  
标签:sheet openpyxl idx python excel DataFrame pd import row

如果你对Python感兴趣的话,可以试试我整理的这一份全套的Python学习资料,【点击这里】免费领取!

安装 Pandas 和 openpyxl

首先,确保已经安装了 Pandas 和 openpyxl。可以通过 pip 安装:

pip install pandas openpyxl

创建 DataFrame

import pandas as pd# 创建 DataFramedf1 = pd.DataFrame({    '姓名': ['张三', '李四', '王五'],    '年龄': [25, 30, 35],    '城市': ['北京', '上海', '广州']})df2 = pd.DataFrame({    '姓名': ['赵六', '孙七', '周八'],    '年龄': [40, 45, 50],    '城市': ['深圳', '成都', '杭州']})print(df1)print(df2)

使用 openpyxl 合并单元格

import pandas as pdfrom openpyxl import Workbookfrom openpyxl.utils.dataframe import dataframe_to_rows# 创建 DataFramedf1 = pd.DataFrame({    '姓名': ['张三', '李四', '王五'],    '年龄': [25, 30, 35],    '城市': ['北京', '上海', '广州']})# 创建一个新的工作簿wb = Workbook()ws = wb.active# 将 DataFrame 写入工作表for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):    for c_idx, value in enumerate(row, 1):        ws.cell(row=r_idx+1, column=c_idx, value=value)# 合并单元格ws.merge_cells('A1:B1')  # 合并 A1 和 B1 单元格# 保存 Excel 文件wb.save('merged_cells.xlsx')

合并 DataFrame 到不同的工作表

import pandas as pd# 创建 DataFramedf1 = pd.DataFrame({    '姓名': ['张三', '李四', '王五'],    '年龄': [25, 30, 35],    '城市': ['北京', '上海', '广州']})df2 = pd.DataFrame({    '姓名': ['赵六', '孙七', '周八'],    '年龄': [40, 45, 50],    '城市': ['深圳', '成都', '杭州']})# 合并 DataFrame 到不同的工作表with pd.ExcelWriter('combined_sheets.xlsx', engine='openpyxl') as writer:    df1.to_excel(writer, sheet_name='Sheet1', index=False)    df2.to_excel(writer, sheet_name='Sheet2', index=False)

合并多个 Excel 文件

import pandas as pd# 读取多个 Excel 文件files = ['file1.xlsx', 'file2.xlsx']dfs = []for file in files:    dfs.append(pd.read_excel(file))# 合并所有 DataFramecombined = pd.concat(dfs, ignore_index=True)# 保存合并后的数据combined.to_excel('combined_files.xlsx', index=False)使用 openpyxl 合并单元格并保留数据import pandas as pdfrom openpyxl import Workbookfrom openpyxl.utils.dataframe import dataframe_to_rows# 创建 DataFramedf1 = pd.DataFrame({    '姓名': ['张三', '李四', '王五'],    '年龄': [25, 30, 35],    '城市': ['北京', '上海', '广州']})# 创建一个新的工作簿wb = Workbook()ws = wb.active# 将 DataFrame 写入工作表for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):    for c_idx, value in enumerate(row, 1):        ws.cell(row=r_idx+1, column=c_idx, value=value)# 合并单元格但保留数据ws.merge_cells('A1:B1', start_row=1, start_column=1, end_row=1, end_column=2)# 保存 Excel 文件wb.save('merged_cells_with_data.xlsx')

合并多个 DataFrame 到不同工作表​​​​​​​

import pandas as pdfrom openpyxl import Workbookfrom openpyxl.utils.dataframe import dataframe_to_rows# 创建 DataFramedf1 = pd.DataFrame({    '姓名': ['张三', '李四', '王五'],    '年龄': [25, 30, 35],    '城市': ['北京', '上海', '广州']})df2 = pd.DataFrame({    '姓名': ['赵六', '孙七', '周八'],    '年龄': [40, 45, 50],    '城市': ['深圳', '成都', '杭州']})# 创建一个新的工作簿wb = Workbook()# 添加不同的工作表ws1 = wb.create_sheet(title='Sheet1')ws2 = wb.create_sheet(title='Sheet2')# 将 DataFrame 写入不同的工作表for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):    for c_idx, value in enumerate(row, 1):        ws1.cell(row=r_idx+1, column=c_idx, value=value)for r_idx, row in enumerate(dataframe_to_rows(df2, index=False, header=True)):    for c_idx, value in enumerate(row, 1):        ws2.cell(row=r_idx+1, column=c_idx, value=value)# 保存 Excel 文件wb.save('multiple_sheets.xlsx')

使用 openpyxl 合并单元格并设置样式​​​​​​​

import pandas as pdfrom openpyxl import Workbookfrom openpyxl.utils.dataframe import dataframe_to_rowsfrom openpyxl.styles import Font, Alignment# 创建 DataFramedf1 = pd.DataFrame({    '姓名': ['张三', '李四', '王五'],    '年龄': [25, 30, 35],    '城市': ['北京', '上海', '广州']})# 创建一个新的工作簿wb = Workbook()ws = wb.active# 设置字体样式font_style = Font(bold=True, color="FF0000")alignment = Alignment(horizontal="center", vertical="center")# 将 DataFrame 写入工作表for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):    for c_idx, value in enumerate(row, 1):        cell = ws.cell(row=r_idx+1, column=c_idx, value=value)        if r_idx == 0:  # 如果是标题行,则设置样式            cell.font = font_style            cell.alignment = alignment# 合并单元格并设置样式ws.merge_cells('A1:B1', start_row=1, start_column=1, end_row=1, end_column=2)ws['A1'].font = font_stylews['A1'].alignment = alignment# 保存 Excel 文件wb.save('merged_cells_with_styles.xlsx')

合并多个 Excel 文件到一个工作簿的不同工作表​​​​​​​

import pandas as pdfrom openpyxl import Workbookfrom openpyxl.utils.dataframe import dataframe_to_rows# 读取多个 Excel 文件files = ['file1.xlsx', 'file2.xlsx']dfs = []for file in files:    dfs.append(pd.read_excel(file))# 创建一个新的工作簿wb = Workbook()# 添加不同的工作表并将数据写入for idx, df in enumerate(dfs):    ws = wb.create_sheet(title=f'Sheet{idx+1}')    for r_idx, row in enumerate(dataframe_to_rows(df, index=False, header=True)):        for c_idx, value in enumerate(row, 1):            ws.cell(row=r_idx+1, column=c_idx, value=value)# 保存 Excel 文件wb.save('combined_files_multiple_sheets.xlsx')​​​​​​​

使用 openpyxl 合并单元格并设置条件格式​​​​​​​

import pandas as pdfrom openpyxl import Workbookfrom openpyxl.utils.dataframe import dataframe_to_rowsfrom openpyxl.styles import PatternFill, Fontfrom openpyxl.formatting.rule import CellIsRule# 创建 DataFramedf1 = pd.DataFrame({    '姓名': ['张三', '李四', '王五'],    '年龄': [25, 30, 35],    '城市': ['北京', '上海', '广州']})# 创建一个新的工作簿wb = Workbook()ws = wb.active# 设置字体样式font_style = Font(bold=True, color="FF0000")fill_style = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")# 将 DataFrame 写入工作表for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):    for c_idx, value in enumerate(row, 1):        cell = ws.cell(row=r_idx+1, column=c_idx, value=value)        if r_idx == 0:  # 如果是标题行,则设置样式            cell.font = font_style# 合并单元格ws.merge_cells('A1:B1', start_row=1, start_column=1, end_row=1, end_column=2)# 设置条件格式rule = CellIsRule(operator='equal', formula=['"北京"'], stopIfTrue=True, fill=fill_style)ws.conditional_formatting.add('C1:C3', rule)# 保存 Excel 文件wb.save('merged_cells_with_conditional_formatting.xls)

合并 DataFrame 并去除重复数据​​​​​​​

import pandas as pd# 创建 DataFramedf1 = pd.DataFrame({    '姓名': ['张三', '李四', '王五'],    '年龄': [25, 30, 35],    '城市': ['北京', '上海', '广州']})df2 = pd.DataFrame({    '姓名': ['赵六', '孙七', '周八'],    '年龄': [40, 45, 50],    '城市': ['深圳', '成都', '杭州']})# 合并 DataFramecombined = pd.concat([df1, df2], ignore_index=True)# 去除重复数据unique_combined = combined.drop_duplicates()# 保存合并后的数据unique_combined.to_excel('unique_combined_files.xlsx', index=False)

文末福利

最后,想要学习Python并且达到能做副业、兼职接单、提升自己收入的小伙伴,可以试试我整理的这一份全套的Python学习资料,【点击这里】免费领取!

包括:Python激活码+安装包、Python
web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

① Python所有方向的学习路线图,清楚各个方向要学什么东西

② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析

③ 100多个Python实战案例,学习不再是只会理论

④ 华为出品独家Python漫画教程,手机也能学习

⑤ 历年互联网企业Python面试真题,复习时非常方便

标签:sheet,openpyxl,idx,python,excel,DataFrame,pd,import,row
From: https://blog.csdn.net/2401_85903292/article/details/141646499

相关文章

  • 总结24个Python接单赚钱的平台,总有适合你的,兼职月入5000+
    这里为大家整理了24个Python接私活的平台,另外还有一些接私活的注意事项。当然这些平台不止Python语言能接单,事实上基本所有语言都能找到合适的单子~温馨提示:1.没有第三方担保的个人单,风险较大尽量少接2.无需求文档,讲不清具体需求的不接3.没有预付的不做,结款方式按442的方式......
  • python接口自动化——接口登录获取session、cookie
    【参考】方法一参考链接如下,直接获取返回的cookie失败,拿到的cookies是空。(因为登录的url返回用f12看着是空的,用Charles才能看到,进行了重定向,返回了重定向的url)https://baijiahao.baidu.com/s?id=1781328761925882355&wfr=spider&for=pc 方法二参考链接如下,去拿session,再使用s......
  • 使用Flask快速构建Web后端项目:Python、Flask、Mysql、Migrate、SQLAlchemy、Login、Se
    Flask是一个用Python编写的轻量级Web应用框架。它设计简单且易于扩展,如果与Jinja2模板引擎和WerkzeugWSGI工具集结合使用,Flask可以用来快速开发小型到中型的网站。Flask鼓励快速开发和简洁的代码,同时保持了扩展性和灵活性。本文旨在如何使用Flask及其相关组件快......
  • python基础个人笔记
    一、基础变量    可使用type(param)查看变量类型    1.整型int         可使用int(param)强转    2.浮点型float                可使用float(param)强转    3.复数complex       ......
  • python打包exe文件注意事项
    1.进入虚拟环境一开始使用pipenvshell,后续可以使用conda。使用虚拟环境可以尽量减小软件包的大小,减少不相关包的引入。2.当前环境目录中不要有__init__.py因为,打包时很可能被当为环境,不再打包其他文件。3.制作main.spec安装pyinstaller包,配置你的exe的icon。pipinstal......
  • Java Excel转PDF(免费)
    目前市面上Excel转PDF的组件较多:收费:aspose、GcExcel、spire开源:jacob、itextpdf其中收费的组件封装得比较好,代码简洁,转换的效果也很好,但收费也高得离谱:为了成本考虑,就需要考虑开源的组件了,因为它们都是免费的:jacob:目前没有探索出很好的导出效果。itextpdf:已探索出......
  • delphi操作excell文件实现学生均衡分班
    unitUnit1;interfaceusesWinapi.Windows,Winapi.Messages,System.SysUtils,System.Variants,System.Classes,Vcl.Graphics,Vcl.Controls,Vcl.Forms,Vcl.Dialogs,Vcl.StdCtrls,System.Win.ComObj;typeTForm1=class(TForm)Button1:TButton;......
  • Python可控制线程与TCP服务单元编程
    大家好,我之前在我的CSDN博客上面发了一条《C++可控制线程》的文章,里面介绍了在线程中植入类似状态机的东西,进而将多线程编程进化为“服务单元”编程的技术。接下来我们来看一个基于此项目的Python的TCP服务单元代码。------------------------------------------------------......
  • 【Python】将网格数据写入到VTK文件
    1.vtk文件格式根据官网进行总结vtk文件组成:5个部分.第一部分,第一行:表明文件版本.写"#vtkDataFileVersion2.0"就行第二部分,第二行:表明标题(title).随便写.第三部分,第三行:ASCII或者BINARY第四部分,开始定义datasetstructure.这部分用于描述数据集的几何和拓扑......
  • Python模块之functools.partial
    在Python编程中,functools.partial是一个强大的工具,它提供了一种部分应用函数的方式,能够在创建新函数时固定部分参数,从而在后续调用中减少需要传递的参数数量。本文将深入介绍functools.partial的基本概念、使用方法,并通过丰富的示例代码演示其在不同场景中的实际应用。什么是func......