使用pandas对单个excel工作簿进行指定列拆分并另存为多个工作簿

1、使用场景:

1.1 情景说明

        使用pandas对单个excel工作簿进行指定列拆分并按部门名称另存为多个工作簿(保留工作簿1、2行数据),并将第2行的“组织机构”作为指定列拆分。但“组织机构”存在3级、4级机构的情况,为避免无效的数据拆分这边需对“组织机构”进行部门数据提取,相关说明如下

        这边的“组织机构”部门数据提取说明如下:

               

1.2 模拟数据示例+拆分效果展示

                   

2、解决思路+情景在线+源代码:

        演示表格使用的指定列名“组织机构”进行拆分,思路如下:

1、为保留工作簿1、2行的表头数据,对同一数据源读取2次:

        1)df:读取跳过第1行的全部数据

        2)df_bt:读取第1、2行的表头数据

import pandas as pd
path = r"C:\Users\admin\Desktop\拆分\模拟数据\模拟数据.xlsx"

df = pd.read_excel(path , header = 1) # 数据拆分
df_bt = pd.read_excel(path , header = None).loc[:1,:]

结果展示:

2、提取根据“组织机构”列提取部门数据
df['部门'] = df['组织机构'].apply(lambda x:x.split('-')[2])

结果展示:

3、根据“部门”列进行分组拆分 + 数据拼接+指定部门名称为文件名并另存为
df_split = df.groupby('部门')

for i,j in df_split:
    j = j.loc[:,:'组织机构']
    j = j.set_axis(list(range(len(j.columns))), axis=1)
    j = pd.concat([df_bt,j],ignore_index = True)
    new_file_path = 'C:\\Users\\admin\\Desktop\\拆分\\模拟数据\\' + i + '.xlsx'
    j.to_excel(new_file_path,sheet_name = i,index=False , header = None)

源代码:

import pandas as pd
path = input("请输入要拆分的文件路径,例如:C:\\Users\\admin\\Desktop\\拆分\\模拟数据.xlsx\n请输入:")

df = pd.read_excel(path , header = 1) # 数据拆分
df_bt = pd.read_excel(path , header = None).loc[:1,:]

df['部门'] = df['组织机构'].apply(lambda x:x.split('-')[2])
df_split = df.groupby('部门')
lujing = input("请输入文件拆分后存储路径,例如:C:\\Users\\admin\\Desktop\\拆分\\\n请输入:")

for i,j in df_split:
    j = j.loc[:,:'组织机构']
    j = j.set_axis(list(range(len(j.columns))), axis=1)
    j = pd.concat([df_bt,j],ignore_index = True)
    new_file_path = lujing + i + '.xlsx'
    j.to_excel(new_file_path,sheet_name = i,index=False , header = None)

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值