当前位置: 首页 > news >正文

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

安装 Pandas 和 openpyxl

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

pip install pandas openpyxl

创建 DataFrame

  1. import pandas as pd

  2. # 创建 DataFrame

  3. df1 = pd.DataFrame({

  4. '姓名': ['张三', '李四', '王五'],

  5. '年龄': [25, 30, 35],

  6. '城市': ['北京', '上海', '广州']

  7. })

  8. df2 = pd.DataFrame({

  9. '姓名': ['赵六', '孙七', '周八'],

  10. '年龄': [40, 45, 50],

  11. '城市': ['深圳', '成都', '杭州']

  12. })

  13. print(df1)

  14. print(df2)

使用 openpyxl 合并单元格

  1. import pandas as pd

  2. from openpyxl import Workbook

  3. from openpyxl.utils.dataframe import dataframe_to_rows

  4. # 创建 DataFrame

  5. df1 = pd.DataFrame({

  6. '姓名': ['张三', '李四', '王五'],

  7. '年龄': [25, 30, 35],

  8. '城市': ['北京', '上海', '广州']

  9. })

  10. # 创建一个新的工作簿

  11. wb = Workbook()

  12. ws = wb.active

  13. # 将 DataFrame 写入工作表

  14. for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):

  15. for c_idx, value in enumerate(row, 1):

  16. ws.cell(row=r_idx+1, column=c_idx, value=value)

  17. # 合并单元格

  18. ws.merge_cells('A1:B1') # 合并 A1 和 B1 单元格

  19. # 保存 Excel 文件

  20. wb.save('merged_cells.xlsx')

合并 DataFrame 到不同的工作表

  1. import pandas as pd

  2. # 创建 DataFrame

  3. df1 = pd.DataFrame({

  4. '姓名': ['张三', '李四', '王五'],

  5. '年龄': [25, 30, 35],

  6. '城市': ['北京', '上海', '广州']

  7. })

  8. df2 = pd.DataFrame({

  9. '姓名': ['赵六', '孙七', '周八'],

  10. '年龄': [40, 45, 50],

  11. '城市': ['深圳', '成都', '杭州']

  12. })

  13. # 合并 DataFrame 到不同的工作表

  14. with pd.ExcelWriter('combined_sheets.xlsx', engine='openpyxl') as writer:

  15. df1.to_excel(writer, sheet_name='Sheet1', index=False)

  16. df2.to_excel(writer, sheet_name='Sheet2', index=False)

合并多个 Excel 文件

  1. import pandas as pd

  2. # 读取多个 Excel 文件

  3. files = ['file1.xlsx', 'file2.xlsx']

  4. dfs = []

  5. for file in files:

  6. dfs.append(pd.read_excel(file))

  7. # 合并所有 DataFrame

  8. combined = pd.concat(dfs, ignore_index=True)

  9. # 保存合并后的数据

  10. combined.to_excel('combined_files.xlsx', index=False)

  11. 使用 openpyxl 合并单元格并保留数据

  12. import pandas as pd

  13. from openpyxl import Workbook

  14. from openpyxl.utils.dataframe import dataframe_to_rows

  15. # 创建 DataFrame

  16. df1 = pd.DataFrame({

  17. '姓名': ['张三', '李四', '王五'],

  18. '年龄': [25, 30, 35],

  19. '城市': ['北京', '上海', '广州']

  20. })

  21. # 创建一个新的工作簿

  22. wb = Workbook()

  23. ws = wb.active

  24. # 将 DataFrame 写入工作表

  25. for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):

  26. for c_idx, value in enumerate(row, 1):

  27. ws.cell(row=r_idx+1, column=c_idx, value=value)

  28. # 合并单元格但保留数据

  29. ws.merge_cells('A1:B1', start_row=1, start_column=1, end_row=1, end_column=2)

  30. # 保存 Excel 文件

  31. wb.save('merged_cells_with_data.xlsx')

合并多个 DataFrame 到不同工作表

  1. import pandas as pd

  2. from openpyxl import Workbook

  3. from openpyxl.utils.dataframe import dataframe_to_rows

  4. # 创建 DataFrame

  5. df1 = pd.DataFrame({

  6. '姓名': ['张三', '李四', '王五'],

  7. '年龄': [25, 30, 35],

  8. '城市': ['北京', '上海', '广州']

  9. })

  10. df2 = pd.DataFrame({

  11. '姓名': ['赵六', '孙七', '周八'],

  12. '年龄': [40, 45, 50],

  13. '城市': ['深圳', '成都', '杭州']

  14. })

  15. # 创建一个新的工作簿

  16. wb = Workbook()

  17. # 添加不同的工作表

  18. ws1 = wb.create_sheet(title='Sheet1')

  19. ws2 = wb.create_sheet(title='Sheet2')

  20. # 将 DataFrame 写入不同的工作表

  21. for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):

  22. for c_idx, value in enumerate(row, 1):

  23. ws1.cell(row=r_idx+1, column=c_idx, value=value)

  24. for r_idx, row in enumerate(dataframe_to_rows(df2, index=False, header=True)):

  25. for c_idx, value in enumerate(row, 1):

  26. ws2.cell(row=r_idx+1, column=c_idx, value=value)

  27. # 保存 Excel 文件

  28. wb.save('multiple_sheets.xlsx')

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

  1. import pandas as pd

  2. from openpyxl import Workbook

  3. from openpyxl.utils.dataframe import dataframe_to_rows

  4. from openpyxl.styles import Font, Alignment

  5. # 创建 DataFrame

  6. df1 = pd.DataFrame({

  7. '姓名': ['张三', '李四', '王五'],

  8. '年龄': [25, 30, 35],

  9. '城市': ['北京', '上海', '广州']

  10. })

  11. # 创建一个新的工作簿

  12. wb = Workbook()

  13. ws = wb.active

  14. # 设置字体样式

  15. font_style = Font(bold=True, color="FF0000")

  16. alignment = Alignment(horizontal="center", vertical="center")

  17. # 将 DataFrame 写入工作表

  18. for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):

  19. for c_idx, value in enumerate(row, 1):

  20. cell = ws.cell(row=r_idx+1, column=c_idx, value=value)

  21. if r_idx == 0: # 如果是标题行,则设置样式

  22. cell.font = font_style

  23. cell.alignment = alignment

  24. # 合并单元格并设置样式

  25. ws.merge_cells('A1:B1', start_row=1, start_column=1, end_row=1, end_column=2)

  26. ws['A1'].font = font_style

  27. ws['A1'].alignment = alignment

  28. # 保存 Excel 文件

  29. wb.save('merged_cells_with_styles.xlsx')

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

  1. import pandas as pd

  2. from openpyxl import Workbook

  3. from openpyxl.utils.dataframe import dataframe_to_rows

  4. # 读取多个 Excel 文件

  5. files = ['file1.xlsx', 'file2.xlsx']

  6. dfs = []

  7. for file in files:

  8. dfs.append(pd.read_excel(file))

  9. # 创建一个新的工作簿

  10. wb = Workbook()

  11. # 添加不同的工作表并将数据写入

  12. for idx, df in enumerate(dfs):

  13. ws = wb.create_sheet(title=f'Sheet{idx+1}')

  14. for r_idx, row in enumerate(dataframe_to_rows(df, index=False, header=True)):

  15. for c_idx, value in enumerate(row, 1):

  16. ws.cell(row=r_idx+1, column=c_idx, value=value)

  17. # 保存 Excel 文件

  18. wb.save('combined_files_multiple_sheets.xlsx')

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

  1. import pandas as pd

  2. from openpyxl import Workbook

  3. from openpyxl.utils.dataframe import dataframe_to_rows

  4. from openpyxl.styles import PatternFill, Font

  5. from openpyxl.formatting.rule import CellIsRule

  6. # 创建 DataFrame

  7. df1 = pd.DataFrame({

  8. '姓名': ['张三', '李四', '王五'],

  9. '年龄': [25, 30, 35],

  10. '城市': ['北京', '上海', '广州']

  11. })

  12. # 创建一个新的工作簿

  13. wb = Workbook()

  14. ws = wb.active

  15. # 设置字体样式

  16. font_style = Font(bold=True, color="FF0000")

  17. fill_style = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")

  18. # 将 DataFrame 写入工作表

  19. for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):

  20. for c_idx, value in enumerate(row, 1):

  21. cell = ws.cell(row=r_idx+1, column=c_idx, value=value)

  22. if r_idx == 0: # 如果是标题行,则设置样式

  23. cell.font = font_style

  24. # 合并单元格

  25. ws.merge_cells('A1:B1', start_row=1, start_column=1, end_row=1, end_column=2)

  26. # 设置条件格式

  27. rule = CellIsRule(operator='equal', formula=['"北京"'], stopIfTrue=True, fill=fill_style)

  28. ws.conditional_formatting.add('C1:C3', rule)

  29. # 保存 Excel 文件

  30. wb.save('merged_cells_with_conditional_formatting.xlsx')

合并 DataFrame 并去除重复数据

  1. import pandas as pd

  2. # 创建 DataFrame

  3. df1 = pd.DataFrame({

  4. '姓名': ['张三', '李四', '王五'],

  5. '年龄': [25, 30, 35],

  6. '城市': ['北京', '上海', '广州']

  7. })

  8. df2 = pd.DataFrame({

  9. '姓名': ['赵六', '孙七', '周八'],

  10. '年龄': [40, 45, 50],

  11. '城市': ['深圳', '成都', '杭州']

  12. })

  13. # 合并 DataFrame

  14. combined = pd.concat([df1, df2], ignore_index=True)

  15. # 去除重复数据

  16. unique_combined = combined.drop_duplicates()

  17. # 保存合并后的数据

  18. unique_combined.to_excel('unique_combined_files.xlsx', index=False)

 感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

http://www.lryc.cn/news/472650.html

相关文章:

  • OJ在线编程常见输入输出练习【JavaScript】
  • 新能源汽车空调系统:绿色出行的舒适保障
  • Date工具类详细汇总-Date日期相关方法
  • TMUX1308PWR规格书 数据手册 具有注入电流控制功能的 5V 双向 8:1单通道和 4:1 双通道多路复用器芯片
  • 证件照怎么换底色?简单又快速!不看后悔
  • Rust 基础语法与常用特性
  • 一、开发环境的搭建
  • Docker:存储原理
  • ts:数组的常用方法(push、pop、shift、unshift、splice、slice)
  • 物联网网关确保设备安全
  • Vue学习笔记(五)
  • Nestjs返回格式小结
  • 【力扣刷题实战】相同的树
  • Golang | Leetcode Golang题解之第515题在每个树行中找最大值
  • Zookeeper 对于 Kafka 的作用是什么?
  • Thread类及线程的核心操作
  • 算法|牛客网华为机试11-20C++
  • OpenAI低调发布多智能体工具Swarm:让多个智能体协同工作!
  • 性能之光 年度电竞性能旗舰iQOO 13发布
  • 如何避免因不熟悉数据保护法规而受损
  • LLaMA Factory 核心原理讲解
  • Java题集练习5
  • 操作系统学习笔记-2.3哲学家和管程问题
  • 2023年信息安全工程师摸底测试卷
  • ReactOS系统中平衡二叉树。给定地址超导其所属区块MmFindRegion()
  • 基于TESSY的单元测试与分类树方法深入解析
  • 整理了一些大模型的课程,非常详细,大模型零基础入门到精通,收藏我这一篇就够了
  • 区块链国赛题目--食品溯源(模块三)
  • 【Searxng】Searxng docker 安装
  • Java Lock/AQS ReentrantLock 源码