提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:工作中经常会用到这样的操作,对于老板给的一个表格,需要根据其中的某一列进行筛选,将同一类的数据粘贴到另一个表格中。
业务说明:某市高考后有一张超大的excel文件(data_A),其中记录每个考生的信息。需要将学生以学校的维度进行拆分,即将相同学校的考生放在同一张Sheet中(Sheet使用许学校来命名)。
提示:要把大象装冰箱一共分三步,完成以上操作也指需三步。下面案例可供参考。
一、导入数据
使用pandas模块读取表格,代码如下(示例):
import pandas as pd
data_A = pd.read_excel(
"D:\\Anaconda\\Project\\data_2022-11-24.xlsx",
usecols=["学校","学号","姓名","性别","年龄"],
)
因为表格中有很多列,我这里只需要其中的5列数据,使用usecols
导入特定的列。
二:查询并写入
2.1 创建新表格,用于存放整理好的数据
注意:这里需要重新创建一个新的表格,用于存放分类好的数据,不能将数据直接使用to_excel
直接写入。
writer = pd.ExcelWriter("D:\\Anaconda\\Project\\data_B.xlsx")
2.2 查询学校列中的所有分类
使用unique
,可以查询某一列的所有分类,输出列表。
lst = data_A["学校"].unique()
2.3 将不同的学校写入新表格中的不同sheet中
通过之前的查询,将所有的学校都存在了lst
中,使用for
循环依次读取到不同的学校,同时将学校依次写进新表格的不同sheet中。
pandas中使用contains
进行关键词的抽取,使用to_excel
进行数据的导出。
for i in lst:
fdata = data_A[data_A["学校"].str.contains(i)]
fdata.to_excel(writer,i,index=False)
三:保存数据
writer.save()
四:完整代码
import pandas as pd
data_A = pd.read_excel(
"D:\\Anaconda\\Project\\data_2022-11-24.xlsx",
usecols=["学校","学号","姓名","性别","年龄"],
)
writer = pd.ExcelWriter("D:\\Anaconda\\Project\\data_B.xlsx")
lst = data_A["学校"].unique()
for i in lst:
fdata = data_A[data_A["学校"].str.contains(i)]
fdata.to_excel(writer,i,index=False)
writer.save()