Python如何获取CSV按索引分组后每组hits最大值及对应样本
可行实现代码
你可以在现有分组逻辑的基础上,补充遍历计算、格式化输出的逻辑即可完成需求,完整可运行代码如下:
from collections import defaultdict import csv groups = defaultdict(list) with open('data.csv') as inputfile: reader = csv.reader(inputfile) next(reader, None) # 跳过表头行 for row in reader: # 请确认此处列索引和你实际CSV的列位置对应:row[1]为index,row[17]为sample列,row[18]为hits列 groups[row[1]].append([row[17], int(row[18])]) # 提前将hits转为整数类型,避免字符串排序错误 for index, item_list in groups.items(): # 按hits值取最大的对应条目,存在多个最大值时默认取第一个出现的条目 max_entry = max(item_list, key=lambda x: x[1]) sample, hits = max_entry print(f"For index {index}, the highest hits are {hits} for sample {sample}.")
逻辑说明
- 读取数据阶段提前把hits列转为整数类型,避免后续比较大小时按照字符串规则排序,出现
"9" > "10"的错误 - 用Python内置的
max()函数,指定按每个条目的hits值做比较,直接就能拿到分组内hits最大的条目,无需额外写遍历判断逻辑 - 输出格式完全匹配你给出的期望效果,多个最大值时默认取分组内第一个出现的最高值条目,符合你不需要特殊处理多最大值场景的要求。
内容的提问来源于stack exchange,提问作者r squared
相关产品推荐
相关产品推荐

