0
点赞
收藏
分享

微信扫一扫

Python从多张csv表中提取某类数据并汇总至一张csv表中

M4Y 2022-01-23 阅读 116

现有多张csv表,表格很大,表头相同

打开一个表是这样子的:

现在需要将“资金小类”列中包含“天猫佣金”的数据行全部取出,放入新表,代码如下:

取数表多个CSV表
目标表一个CSV表
应用场景:将同类别的多个表中的某一类数据取出统一放到一张新表中
引用模块os,csv
序号代码说明
1# 导入模块
2import os批量处理文件必用
3import csvCSV文件读写必用
4# 设置新表的路径
5new_path = './费用流水汇总.csv'目标文件路径
6# 设置文件夹路径
7path = './费用流水/'多个文件所在路径
8# 返回当前目录下所有文件名
9fill = os.listdir(path)
10# 新建一个空列表
11rows = []
12# 循环文件名列表
13for fill_name in fill:
14    # 拼接文件路径
15    fill_path = path + fill_name
16    # 以自动关闭的方式打开文件
17    with open(fill_path,'r',encoding='gbk') as f:编码格式报错可改成:utf-8
18        # 以字典的形式获取 csv 文件信息
19        csv_reader = csv.DictReader(f)
20        # 读取表头
21        head = csv_reader.fieldnames
22        # 定义表中的字典
23        for row in csv_reader:
24        # 当【资金小类】列中含“天猫佣金”时,取出该行数据
25            if '天猫佣金' in row['资金小类']:
26                # 将数据循环写入 rows 列表中
27                rows.append(row)
28# 以自动关闭的方式打开新表
29with open(new_path,'w',encoding='gbk') as k:编码格式报错可改成:utf-8
30    # 实例化类 DictWriter() 得到 DictWriter 对象
31    csv_writer = csv.DictWriter(k,fieldnames=head,lineterminator='\n')lineterminator='\n':可以确保无空行
32    # 写入文件的表头
33    csv_writer.writeheader()
34    # 写入文件的多行内容
35    csv_writer.writerows(rows)

运行结果如下:

 当多个CSV表都很大,每次打开都需要加载很久时非常好用,该程序运行仅需几分钟即可出结果。

举报

相关推荐

0 条评论