鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[☆☆☆★★] 合并多个报表数据(★★)

[复制链接]
发表于 2025-10-8 08:38:44 | 显示全部楼层
python忘了好多。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-8 08:43:24 From FishC Mobile | 显示全部楼层
新知识,先保存一下,马上学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-8 09:44:59 | 显示全部楼层
点赞,这个真的很实用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-8 11:58:47 | 显示全部楼层
谢谢分享,很实用.
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-8 12:03:35 From FishC Mobile | 显示全部楼层
指定用得到
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-8 12:58:55 | 显示全部楼层
又学到一个新的数据分析库了[耶]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-8 13:08:27 | 显示全部楼层
新知识,先保存,再学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-8 16:42:06 | 显示全部楼层
跟不上啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-8 21:52:17 From FishC Mobile | 显示全部楼层
import csv
from pathlib import Path
folder = Path("attendance")
out_file = Path("merged.csv")
#增加筛选条件的自定义配置项(后续改条件直接动这里)
target_col = "direction"  # 要判断的指定列名
target_value = "OUT"      # 指定列需满足的条件值
# 初始化指定列的索引变量(用于记录列在表头中的位置)
target_col_index = -1
rows = []
header = None
for f in folder.iterdir():
     if f.is_file() and f.suffix.lower() == ".csv" and f.name != out_file.name:
         with f.open("r", newline="", encoding="utf-8", errors="ignore") as rf:
             reader = csv.reader(rf)
             h = next(reader, None)
             if h is None:
                 continue
             if header is None:
                 header = h
                 #  校验指定列是否存在,并记录其索引
                 if target_col not in header:
                     print(f"错误:表头中未找到指定列 '{target_col}',程序退出。")
                     exit()  # 列不存在则直接退出,避免后续报错
                 target_col_index = header.index(target_col)  # 记录指定列的位置
             elif header != h:
                 print(f"警告:{f} 的表头与前者不一致,跳过。")
                 continue
             #  原“直接追加所有行”逻辑,改为“先筛选再追加”
             for row in reader:
                 # 容错处理:避免行数据不完整导致索引越界
                 if len(row) <= target_col_index:
                     print(f"警告:{f} 中某行数据长度不足,跳过该行。")
                     continue
                 #  核心筛选条件:仅保留指定列等于目标值的行
                 if row[target_col_index] == target_value:
                     rows.append(tuple(row))  # 满足条件才追加,不满足则跳过
# 整行去重
unique_rows = list(dict.fromkeys(rows))
if header:
     with out_file.open("w", newline="", encoding="utf-8") as wf:
         writer = csv.writer(wf)
         writer.writerow(header)
         writer.writerows(unique_rows)
     #  输出提示补充“筛选”关键词
     print(f"完成,合并并筛选后共 {len(unique_rows)} 条记录 -> {out_file}")
else:
     print("未找到可合并的CSV。")
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-9 08:15:01 From FishC Mobile | 显示全部楼层
只来打卡了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-9 17:44:06 | 显示全部楼层
不是很会,先收藏了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-9 17:56:33 | 显示全部楼层
学习了,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-9 17:57:44 From FishC Mobile | 显示全部楼层
来学习新的啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-9 17:58:13 From FishC Mobile | 显示全部楼层
又是学习得一天
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-9 17:59:49 | 显示全部楼层
很实用的功能
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-9 18:00:06 | 显示全部楼层
学习学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-9 18:12:04 From FishC Mobile | 显示全部楼层
支持下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-9 18:21:50 From FishC Mobile | 显示全部楼层
学习到了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-10 07:52:30 From FishC Mobile | 显示全部楼层
我来打卡学习啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-10 12:27:02 | 显示全部楼层
学习学习 又来晚了 但还是学一学
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-8-8 05:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表