用 Python 把 Excel 表拆分为多个子表

相信大家工作中肯定经常遇到这样的问题,我有一个很大的 Excel 总表,但是我想按照某个字段中的内容把它拆分为子表(比如分公司字段下,有很多分公司,我想把每个分公司拆成一个单独的表)。今天和大家分享怎么用 Python 批量、高效拆分 Excel。

上面这个问题该怎么解决呢,不可能每次都手动粘贴复制,现在和大家分享怎么用 Python 写一个脚本自动处理类似的问题。

1.加载需要用到的包

import pandas as pd
import os

2.读取需要处理的源文件

df = pd.read_excel('测试文件.xlsx')

3.把拆分的子表保存在一个文件夹内

# 本例中我想把拆分的子表保存在一个名为 拆分结果 的文件夹内
# 本例以 Mac 系统演示,Windows 系统略有差异,文章结尾会附上两种系统下的完整代码
target_dir = '/Users/hp/Downloads/拆分结果/' 
os.mkdir(target_dir)

4.开始拆分

print('程序运行中,请稍等!')
field = input('请输入需要拆分的字段:').strip()  # 此处加上 strip 是为了处理输入的时候不小心加上了空格
print('程序运行中,请稍等!')
target_field = set(df[field])

for m in target_field:
    name = str(m)
    df_temp = df[df[field] == m]  # 筛选出仅包含目标字段的数据
    df_temp.to_excel(target_dir + name + '.xlsx', index=False)
    print(str(m) + '已拆分完毕!')

print('全部拆分完了,去看看结果吧!')

5.运行结果如下

完整版代码如下:

# 适用于 Mac 系统
import pandas as pd
import os

df = pd.read_excel('测试文件.xlsx', sheet_name=1)
target_dir = '/Users/hp/Downloads/拆分结果/' 
os.mkdir(target_dir)
print('程序运行中,请稍等!')
field = input('请输入需要拆分的字段:').strip()  # 此处加上 strip 是为了处理输入的时候不小心加上了空格
print('程序运行中,请稍等!')
target_field = set(df[field])

for m in target_field:
    name = str(m)
    df_temp = df[df[field] == m]  # 筛选出仅包含目标字段的数据
    df_temp.to_excel(target_dir + name + '.xlsx', index=False)
    print(str(m) + '已拆分完毕!')

print('全部拆分完了,去看看结果吧!')


# 适用于 Windows 系统
import pandas as pd
import os
import getpass

df = pd.read_excel('测试文件.xlsx', sheet_name=1)

user_name = getpass.getuser()
target_dir = 'C:\\Users\\' + user_name + '\\Downloads\\拆分结果\\'
os.mkdir(target_dir)

print('程序运行中,请稍等!')
field = input('请输入需要拆分的字段:').strip()  # 此处加上 strip 是为了处理输入的时候不小心加上了空格
print('程序运行中,请稍等!')
target_field = set(df[field])

for m in target_field:
    name = str(m)
    df_temp = df[df[field] == m]  # 筛选出仅包含目标字段的数据
    df_temp.to_excel(target_dir + name + '.xlsx', index=False)
    print(str(m) + '已拆分完毕!')

print('全部拆分完了,去看看结果吧!')

本例中的代码只是为了演示,你可以在示例中代码的基础上进行功能拓展,从而满足你的某些附加需求。

为了及时收到文章更新,欢迎关注个人公众号:Python实战数据分析

发表评论

电子邮件地址不会被公开。