用Python将excel文件按列拆分为多个Excel
用到的库:pandas
方式1
# -*- coding: utf-8 -*-
"""
将excel文件按照单位名称,拆分成多个excel文件
sheet名: 人数计算
区分字段名:单位 A
"""
import pandas as pd
data = pd.read_excel("D:\data\文件拆分实验.xls", sheet_name='人数计算')
data.dropna(subset=['单位'], inplace=True)
rows = data.shape[0] # 获取行数 shape[1]获取列数
department_list = []
department_list = list(data['单位'].drop_duplicates())#获取数据单位列,去重并放入列表
# 其他获取列表方法
# for i in range(rows):
# temp = data['单位'][i]
# if temp not in department_list:
# department_list.append(temp) # 将单位名称存入列表中
print(department_list)
for department in department_list:
new_df = pd.DataFrame()
for i in range(0, rows):
if data["单位"][i] == department:
new_df = pd.concat([new_df, data.iloc[[i], :]], axis=0, ignore_index=True)
new_df.to_excel(str(department) + "单位.xls", sheet_name=department, index=False) # 将每个单位存成一个新excel
方式2
# -*- coding: utf-8 -*-
"""
将excel文件按照单位名称,拆分成多个excel文件
sheet名: 人数计算
区分字段名:单位
"""
import pandas as pd
data = pd.read_excel("D:\data\文件拆分实验.xls", sheet_name='人数计算')
#删除单位列的,空行数据
data.dropna(subset=['单位'], inplace=True)
# 第三步:获取 单位 列表并去重
department_list = list(data['单位'].drop_duplicates()) # 获取数据 单位 列,去重并放入列表
print(department_list)
# 第四步:按照类别分文件存放数据
for i in department_list:
department = data[data['单位'] == i]
department.to_excel('./' + str(i) + '单位.xlsx')
其他说明
1.原始数据若未进行清洗,读入的数据需要在代码中进行异常值处理,否则会引发其他错误。
2.pandas的nan值处理可以通过.dropna()进行代码内处置。