跳到主要内容

🔖 拆分数据


本示例演示如何按值拆分表格。

✅️ 任务分析

有如下表格文件'data.xlsx'

姓名性别年龄班级身高体重学号兴趣
刘一15一班175.570.434篮球
陈二16二班168.166.721足球
张三14三班167.474.467乒乓球
李四16一班160.168.427羽毛球
王五14三班170.180.046羽毛球
赵六15四班159.059.317篮球
孙七15四班155.355.347足球
周八14三班180.185.324象棋
吴九16四班154.653.125游泳
郑十16一班177.569.219排球

现在需要把不同班的拆分到各自的表格,并且只需保留班级、姓名、性别、学号列。

可以用Recorderrows()方法,批量读取并筛选出指定列数据,用dict分开记录每个班的数据。

再遍历每个班,用set.path()修改文件路径指向,生成每个班对应的文件。


✅️ 完整代码

from DrissionRecord import Recorder

r = Recorder('data.xlsx')
所有班 = {}

for row in r.rows(key_cols=['班级', '姓名', '性别', '学号']): # 指定获取哪些列
所有班.setdefault(row['班级'], []).append(row) # 把所有数据分类存放在字典中

for, 学生列表 in 所有班.items():
r.set.path(f'{}.xlsx')
r.add_data(学生列表)

r.record()

✅️ 代码解读

📌 key_cols参数

使用rows()方法的key_cols参数可指定获取的数据包含哪些列,其余列不会出现在数据中。


📌 分类存放数据

把所有学生数据存放到名为所有班的字典中,以班级名为 key。

得到:

所有班 = {'一班': [{'姓名': ' 刘一', '学号': 34, '性别': '男 ', '班级': '一班'},
{'姓名': ' 李四', '学号': 27, '性别': '女 ', '班级': '一班'},
{'姓名': ' 郑十', '学号': 19, '性别': '男 ', '班级': '一班'}],
'三班': [{'姓名': ' 张三', '学号': 67, '性别': '女 ', '班级': '三班'},
{'姓名': ' 王五', '学号': 46, '性别': '男 ', '班级': '三班'},
{'姓名': ' 周八', '学号': 24, '性别': '男 ', '班级': '三班'}],
'二班': [{'姓名': ' 陈二', '学号': 21, '性别': '男 ', '班级': '二班'}],
'四班': [{'姓名': ' 赵六', '学号': 17, '性别': '女 ', '班级': '四班'},
{'姓名': ' 孙七', '学号': 47, '性别': '女 ', '班级': '四班'},
{'姓名': ' 吴九', '学号': 25, '性别': '女 ', '班级': '四班'}]}

再遍历每个班,把班的数据插入到以这个班命名的文件中。


📌 插入并保存数据

r.add_data(学生列表)中,学生列表是二维数据,可以直接用add_data()批量添加到文件。

程序会根据dict的 key 自动为空文件填入表头行。

每次set_path()都会自动保存数据,所以最后只要一次r.record()即可。


✅️ 执行结果