You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python统计多CSV文件中按列分组的唯一项数量

嘿,这个需求我熟!我来给你写一段实用的Python代码,完美解决你的问题~

核心思路

我们需要遍历所有CSV文件,提取每个文件的前两列,用字典+集合的组合来自动去重并统计:字典的键是第一列的分组值,集合用来存储对应第二列的唯一值(集合天然去重),最后统计每个集合的长度就是我们要的结果。

完整代码

import csv
import os

# 初始化结果容器:键是第一列的值,值是存储第二列唯一值的集合
grouped_unique_counts = {}

# 替换成你的CSV文件所在的目录路径
csv_directory = "./your_csv_folder"

# 遍历目录下所有CSV文件
for file_name in os.listdir(csv_directory):
    if file_name.lower().endswith(".csv"):
        file_path = os.path.join(csv_directory, file_name)
        # 打开CSV文件处理
        with open(file_path, 'r', newline='', encoding='utf-8') as csv_file:
            csv_reader = csv.reader(csv_file)
            for row in csv_reader:
                # 提取前两列,注意索引从0开始;如果你的数据没有单引号,去掉.strip("'")
                column_1 = row[0].strip("'")
                column_2 = row[1].strip("'")
                
                # 如果当前分组还没在字典里,创建新集合
                if column_1 not in grouped_unique_counts:
                    grouped_unique_counts[column_1] = set()
                # 将第二列值加入集合(自动去重)
                grouped_unique_counts[column_1].add(column_2)

# 把集合转换为唯一值数量,得到最终结果
final_result = {group: len(unique_values) for group, unique_values in grouped_unique_counts.items()}

# 打印结果
for group, count in final_result.items():
    print(f"'{group}': {count}")

代码解释

  1. 模块导入:用csv模块处理CSV文件,os模块遍历目录下的文件。
  2. 结果容器:grouped_unique_counts字典用来存储分组和对应的唯一值集合,集合能自动过滤重复值,非常适合这个场景。
  3. 文件遍历:只处理后缀为.csv的文件,避免误处理其他文件。
  4. 数据提取:读取每一行的前两列,去掉示例数据里的单引号(如果你的实际数据没有单引号,直接去掉.strip("'")即可)。
  5. 统计逻辑:把第二列的值加入对应分组的集合,最后通过len()获取每个集合的元素数量,就是唯一值的个数。

额外提示

  • 如果你的CSV文件用的不是逗号分隔(比如分号、制表符),可以在csv.reader里指定分隔符:csv_reader = csv.reader(csv_file, delimiter=';')
  • 如果需要把结果保存到新的CSV文件,可以添加这段代码:
    with open("result.csv", 'w', newline='', encoding='utf-8') as result_file:
        writer = csv.writer(result_file)
        writer.writerow(["Group", "Unique Count"])
        for group, count in final_result.items():
            writer.writerow([group, count])
    
  • 注意文件编码,如果你的CSV文件是GBK编码,把encoding='utf-8'改成encoding='gbk'即可。

内容的提问来源于stack exchange,提问作者John Johnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:16:40