如何读取指定路径下CSV文件的Labels列并统计重复项及出现次数?
解决方法:读取指定路径下所有CSV的"Labels"列并统计重复项
先修正你代码里的几个关键问题,再给出完整可运行的代码:
import os import csv from collections import Counter items = [] # 目标目录路径,用os.path.join拼接更稳妥,也可以用原始字符串r"C:\Users\Bob\Desktop\CSVs" directory = os.path.join("c:\\", "Users", "Bob", "Desktop", "CSVs") for root, dirs, files in os.walk(directory): for file in files: if file.endswith(".csv"): # 必须拼接完整文件路径,不然open会找不到目标文件 file_path = os.path.join(root, file) with open(file_path, newline='', encoding='utf-8') as csvFile: # csv.DictReader要传文件对象,不是文件名 reader = csv.DictReader(csvFile) for row in reader: # 加个判断避免没有"Labels"列时抛错 if "Labels" in row: items.append(row["Labels"]) # 用Counter快速统计频次 counted = Counter(items) # 打印所有重复项(出现次数>1) print("Labels列重复项统计结果:") for label, count in counted.items(): if count > 1: print(f"* {label}: 出现{count}次")
关键细节说明:
- 路径问题:
os.walk返回的file只是文件名,必须用os.path.join(root, file)拼接完整路径,否则程序会在当前工作目录找文件,大概率找不到目标CSV。 - CSV读取规范:
csv.DictReader的参数是打开的文件对象而非文件名;加上newline=''是Python csv模块的官方建议,能避免跨平台的换行符解析问题。 - 容错处理:增加
if "Labels" in row的判断,防止部分CSV文件缺失目标列导致程序崩溃。 - 统计效率:
collections.Counter是专门做频次统计的工具,比手动循环统计简洁高效得多,最后可以筛选出出现次数大于1的项,精准展示重复内容。
内容的提问来源于stack exchange,提问作者LearningSharing
相关产品推荐
相关产品推荐

