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

如果你对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面试真题,复习时非常方便

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值