社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用Python实现Excel表格的拆分与合并

Crossin的编程教室 • 11 月前 • 231 次点击  

在数据处理和分析过程中,经常遇到需要对Excel文件进行拆分和合并操作。Python凭借其强大的数据处理能力,可以轻松实现这些任务。本文将详细介绍如何使用Python实现Excel文件的拆分与合并,并包含对应的示例代码,帮助全面掌握这一技巧。


准备工作

在开始之前,需要安装几个必要的Python库:

  • pandas:用于数据处理和分析
  • openpyxl:用于读写Excel文件

可以通过以下命令安装这些库:

pip install pandas openpyxl

使用Python拆分Excel文件

拆分单个工作表

假设有一个包含多行数据的Excel文件,需要将其拆分成多个较小的文件。以下是一个示例代码,演示如何将单个工作表按行拆分成多个文件。

import pandas as pd

def split_excel_by_rows(file_path, rows_per_file, output_prefix):
    # 读取Excel文件
    df = pd.read_excel(file_path)
    
    # 计算总行数
    total_rows = len(df)
    
    # 计算需要拆分的文件数量
    num_files = (total_rows // rows_per_file) + (1 if total_rows % rows_per_file != 0 else 0)
    
    for i in range(num_files):
        start_row = i * rows_per_file
        end_row = (i + 1) * rows_per_file
        split_df = df.iloc[start_row:end_row]
        
        # 保存拆分后的文件
        output_file = f"{output_prefix}_{i+1}.xlsx"
        split_df.to_excel(output_file, index=False)
        print(f"文件 {output_file} 已保存")

# 示例使用
split_excel_by_rows('data.xlsx'100'split_data')

拆分多个工作表

如果Excel文件包含多个工作表,可以按工作表拆分文件。

import pandas as pd

def split_excel_by_sheets(file_path, output_prefix):
    # 读取Excel文件
    xls = pd.ExcelFile(file_path)
    
    for sheet_name in xls.sheet_names:
        df = pd.read_excel(file_path, sheet_name=sheet_name)
        output_file = f"{output_prefix}_{sheet_name}.xlsx"
        df.to_excel(output_file, index=False)
        print(f"工作表 {sheet_name} 已拆分为文件 {output_file}")

# 示例使用
split_excel_by_sheets('data_with_sheets.xlsx''split_data')

使用Python合并Excel文件

合并多个工作表到一个文件

有时候,需要将多个Excel文件合并成一个文件中的多个工作表。

以下是示例代码:

import pandas as pd

def merge_excels_to_sheets(file_list, output_file):
    with pd.ExcelWriter(output_file) as writer:
        for file in file_list:
            df = pd.read_excel(file)
            sheet_name = file.split('.')[0]
            df.to_excel(writer, sheet_name=sheet_name, index=False)
            print(f"文件 {file} 已合并到 {output_file} 的工作表 {sheet_name}")

# 示例使用
files_to_merge = ['data1.xlsx''data2.xlsx''data3.xlsx']
merge_excels_to_sheets(files_to_merge, 'merged_data.xlsx')

合并多个文件到一个工作表

另外一种常见需求是将多个Excel文件的数据合并到一个文件的同一个工作表中。

import pandas as pd

def merge_excels_to_one_sheet(file_list, output_file):
    merged_df = pd.DataFrame()
    
    for file in file_list:
        df = pd.read_excel(file)
        merged_df = pd.concat([merged_df, df], ignore_index=True)
        print(f"文件 {file} 的数据已合并")
    
    merged_df.to_excel(output_file, index=False)
    print(f"所有文件已合并到 {output_file}")

# 示例使用
files_to_merge = ['data1.xlsx''data2.xlsx''data3.xlsx']
merge_excels_to_one_sheet(files_to_merge, 'merged_data.xlsx')

综合示例:拆分并合并Excel文件

假设需要先将一个大Excel文件拆分为多个小文件,然后再将这些小文件合并成一个新的文件。

以下是实现这个过程的完整代码:

import pandas as pd

def split_excel_by_rows(file_path, rows_per_file, output_prefix):
    df = pd.read_excel(file_path)
    total_rows = len(df)
    num_files = (total_rows // rows_per_file) + (1 if total_rows % rows_per_file != 0 else 0)
    
    for i in range(num_files):
        start_row = i * rows_per_file
        end_row = (i + 1) * rows_per_file
        split_df = df.iloc[start_row:end_row]
        output_file = f"{output_prefix}_{i+1}.xlsx"
        split_df.to_excel(output_file, index=False)
        print(f"文件 {output_file} 已保存")

def merge_excels_to_one_sheet(file_list, output_file):
    merged_df = pd.DataFrame()
    
    for file in file_list:
        df = pd.read_excel(file)
        merged_df = pd.concat([merged_df, df], ignore_index=True)
        print(f"文件 {file} 的数据已合并")
    
    merged_df.to_excel(output_file, index=False)
    print(f"所有文件已合并到 {output_file}")

# 示例使用
# 拆分大文件
split_excel_by_rows('data.xlsx'100'split_data')

# 假设我们已经将文件拆分成了多个文件
split_files = ['split_data_1.xlsx''split_data_2.xlsx''split_data_3.xlsx']

# 合并拆分后的文件
merge_excels_to_one_sheet(split_files, 'final_merged_data.xlsx')

总结

本文详细介绍了如何使用Python实现Excel文件的拆分与合并操作。通过使用pandas openpyxl库,我们可以方便地读取、处理和保存Excel文件。文章展示了如何按行拆分单个工作表、按工作表拆分文件,以及将多个文件合并到一个文件中的多个工作表或同一个工作表中。具体示例包括将一个大Excel文件按行拆分成多个较小文件,并将这些小文件合并成一个新的文件。通过这些示例,可以掌握在实际工作中高效处理Excel文件的方法。这些技巧可以帮助大家简化数据处理流程,提高工作效率。



Crossin的新书《码上行动:用ChatGPT学会Python编程》已经上市了。本书以ChatGPT为辅助,系统全面地讲解了如何掌握Python编程,适合Python零基础入门的读者学习。【点此查看详细介绍】
购买后可加入读者交流群,Crossin为你开启陪读模式,解答你在阅读本书时的一切疑问。
Crossin的其他书籍:


添加微信 crossin123 ,加入编程教室共同学习~

感谢转发点赞的各位~

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/172736
 
231 次点击