如何用python将一张excel表按某一列分类为多张表

项目场景:

python数据处理,excel, pandas

问题描述

如何用python将一张excel表按某一列分类为多张表

例如:当我们遇到上述表格,我们想把表格按照某一列来拆分为多张表,数据量少的时候可以简单的CTRL+C,但是当数据量很大的时候我们可以怎么操作呢?不妨用python来解决一下。
我们这里是按学院来拆分,将不同学院的同学拆分在不同的表中

; 代码展示:

import pandas as pd
data = pd.read_excel(r"C:\Users\Desktop\xs.xlsx")
rows = data.shape[0]
department_list = []

for i in range(rows):
    temp = data["学院"][i]
    if temp not in department_list:
        department_list.append(temp)

n = len(department_list)

for i in range(1,5):
    locals()['df'+str(i)] = pd.DataFrame()

df_list = [df1,df2,df3,df4,df5]
for department in range(n):
    for i in range (0, rows):
        if data["学院"][i] == department_list[department]:
            df_list[department] = pd.concat([df_list[department], data.iloc[[i],:]], axis = 0, ignore_index = True)

writer = pd.ExcelWriter(r'C:\Users\Desktop\各学院学生.xlsx')

for i in range(n):
    df_list[i].to_excel(writer, sheet_name = str(department_list[i]), index=False)

writer.save()

动态生成变量:

用Python循环创建多个变量, 如创建 a1= 、a2= 、a3= 、a4= 、a5= 或 self.a1= 、self.a2= 、 self.a3=

一. 可以通过python的内置函数locals 来完成

locals是python的内置函数,他可以以字典的方式去访问局部和全局变量。
python里面用名字空间记录着变量,就像javascript的window一样,他记录着各种全局变量。
每个模块,每个函数都有自己的名字空间,记录着变量,常量,类的命名和值。

1 createVar = locals()
2 listTemp = range(1,10)
3 for i,s in enumerate(listTemp):
4     createVar['a'+i] = s
5 print a1,a2,a3

二. 对于class,推荐使用setattr()方法

1 class test(object) :
2     def __init__(self):
3         dic={'a':'aa','b':'bb'}
4         for i in dic.keys() :
5             setattr(self,i,dic[i])
6         print(self.a)
7         print(self.b)
8 t=test()

结果展示:

如何用python将一张excel表按某一列分类为多张表

如果想进一步把sheet拆为不同的excel表,可以用宏来完成
用常规的一步步操作大家都知道吧,但工作表一多,工作量是很大的,也就变成不现实了。用宏来解决,将每个工作表导出到这个文件的同名文件夹下。
右键任意一个sheet,点击代码,将下面代码复制到代码框,运行就可以实现啦。
Sub SaveAllSheet()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim TPath As String, XSheet As Worksheet
TPath = ActiveWorkbook.Path
For Each XSheet In ActiveWorkbook.Sheets
XSheet.Copy
ActiveWorkbook.SaveAs Filename:=TPath & “” & ActiveSheet.Name & “.xls”
ActiveWindow.Close
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Original: https://blog.csdn.net/qq_51205385/article/details/123842661
Author: Gamers fei
Title: 如何用python将一张excel表按某一列分类为多张表

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/639137/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球