在Python中按一列拆分多张工作表excel文件
例如excel文件在Python中按一列拆分多张工作表excel文件,python,pandas,dataframe,Python,Pandas,Dataframe,例如excel文件students\u data.xlsx,它有三张表:students\u name、students\u score和students\u age 学生姓名: id class name 0 1 a jack 1 2 a lucy 2 3 b joe 3 4 b even 4 5 b ho id class name 0 1 a jack 1 2 a lu
students\u data.xlsx
,它有三张表:students\u name
、students\u score
和students\u age
学生姓名:
id class name
0 1 a jack
1 2 a lucy
2 3 b joe
3 4 b even
4 5 b ho
id class name
0 1 a jack
1 2 a lucy
学生_分数
id class score
0 1 a 66
1 2 a 77
2 3 b 87
3 4 b 60
4 5 b 90
id class age
0 1 a 15
1 2 a 14
2 3 b 13
3 4 b 12
4 5 b 14
id class score
0 1 a 66
1 2 a 77
id class age
0 1 a 15
1 2 a 14
学生年龄
id class score
0 1 a 66
1 2 a 77
2 3 b 87
3 4 b 60
4 5 b 90
id class age
0 1 a 15
1 2 a 14
2 3 b 13
3 4 b 12
4 5 b 14
id class score
0 1 a 66
1 2 a 77
id class age
0 1 a 15
1 2 a 14
我已使用以下方法将每张图纸拆分为不同的类别:
import pandas as pd
df = pd.read_excel("students_data.xlsx", sheet_name="students_name")
for i, g in df.groupby("class"):
g.to_excel("students_name/{}.xlsx".format(i), index=False, index_label=False)
df = pd.read_excel("students_data.xlsx", sheet_name="students_score")
for i, g in df.groupby("class"):
g.to_excel("students_score/{}.xlsx".format(i), index=False, index_label=False)
df = pd.read_excel("students_data.xlsx", sheet_name="students_age")
for i, g in df.groupby("class"):
g.to_excel("students_age/{}.xlsx".format(i), index=False, index_label=False)
但是我想按class
对每个excel文件使用相同的模式进行拆分,例如,对于a.xlsx
,它将有3张与原始文件相同的表,但只有class
中的数据等于a
最终的a.xlxs
将包含以下表格:
学生姓名:
id class name
0 1 a jack
1 2 a lucy
2 3 b joe
3 4 b even
4 5 b ho
id class name
0 1 a jack
1 2 a lucy
学生_分数
id class score
0 1 a 66
1 2 a 77
2 3 b 87
3 4 b 60
4 5 b 90
id class age
0 1 a 15
1 2 a 14
2 3 b 13
3 4 b 12
4 5 b 14
id class score
0 1 a 66
1 2 a 77
id class age
0 1 a 15
1 2 a 14
学生年龄
id class score
0 1 a 66
1 2 a 77
2 3 b 87
3 4 b 60
4 5 b 90
id class age
0 1 a 15
1 2 a 14
2 3 b 13
3 4 b 12
4 5 b 14
id class score
0 1 a 66
1 2 a 77
id class age
0 1 a 15
1 2 a 14
b.xlsx
看起来像a.xlsx
,但只有class
与b
数据相等
如何正确拆分和保存excel文件?谢谢。首先通过
sheet\u name=None
参数创建所有数据帧的字典
dfs = pd.read_excel('students_data.xlsx', sheet_name=None)
然后通过提取列class
的值来获取所有可能的类,展平并转换为set
c = set([y for k, v in dfs.items() for y in v['class']])
print (c)
{'a', 'b'}
最后循环设置的每个值,创建新的文件
,筛选并创建筛选行的所有图纸名称:
for i in c:
with pd.ExcelWriter("students_score/{}.xlsx".format(i)) as writer:
for k, v in dfs.items():
v[v['class'] == i].to_excel(writer, index=False, index_label=False, sheet_name=k)