Python如何读取CSV文件按ID分组统计A列的唯一值数量
解决方法
你现有代码仅采集了ID列数据,未关联存储每个ID对应的A列取值,因此无法完成A列的唯一值统计。你可以通过「字典+集合」的结构实现需求,字典的key为ID值,value为对应ID下所有A列值的集合(集合会自动去重),最终统计每个集合的长度即可得到目标结果。
修改后的可运行代码如下:
import csv # 用with上下文管理器自动处理文件关闭,避免资源泄漏 with open('test.csv', newline='') as f: # 指定空格为分隔符,匹配你提供的CSV格式 reader = csv.reader(f, delimiter=' ') next(reader) # 跳过表头行 # 初始化存储结构:key=ID,value=A列值的集合 id_a_map = {} for line in reader: if not line: # 跳过空行 continue id_val = line[0] a_val = line[1] # ID首次出现时初始化对应空集合 if id_val not in id_a_map: id_a_map[id_val] = set() # 把A列值加入集合,自动去重 id_a_map[id_val].add(a_val) # 按ID升序输出结果 print("ID Unique_Count_A_by_ID") for id_val in sorted(id_a_map.keys(), key=lambda x:int(x)): print(f"{id_val} {len(id_a_map[id_val])}")
运行上述代码即可得到你期望的输出结果。
内容的提问来源于stack exchange,提问作者Iwishworldpeace
相关产品推荐
相关产品推荐

