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

Python实现:获取CSV文件中数值Top20对应的行号

获取CSV中Top20最大值对应的行号(降序)

问题描述

正在处理一个小项目,已用Python处理时间戳与热力图数据,将数据按1-100行拆分。需要获取CSV中数值最大的20个值对应的行号并按降序排列,但现有代码只能拿到单个最大值,无法实现Top20的需求。

示例CSV数据

0.00088006474088529383
0.00015301444453664169
0.0001578056486084342
4.8472783963609083e-05
0.00018440120509040085
7.766234473424159e-05

理想输出

6
4
1
5
3
2

尝试的代码(仅能获取单个最大值)

with open('heatmap.csv', 'r') as heatnum:
 for line in heatnum:
     print(max(heatnum))

解决方案

要实现需求,需要同时记录每行的数值和行号,排序后提取前20个的行号。以下是两种可行的代码实现:

方法一:直观排序法

# 存储每行的数值和对应的行号
row_value_list = []

with open('heatmap.csv', 'r') as file:
    # enumerate的start=1让行号从1开始计数,匹配你的需求
    for line_number, line_content in enumerate(file, start=1):
        # 去除行首尾的空白字符(包括换行符)
        cleaned_line = line_content.strip()
        # 跳过空行
        if not cleaned_line:
            continue
        # 将字符串转为浮点数
        try:
            value = float(cleaned_line)
            row_value_list.append( (value, line_number) )
        except ValueError:
            # 处理非数值行(如果有的话)
            continue

# 按数值降序排序,key指定按元组的第一个元素(数值)排序
row_value_list.sort(reverse=True, key=lambda x: x[0])

# 提取前20个的行号并输出
for value, line_num in row_value_list[:20]:
    print(line_num)

方法二:利用负数值排序(性能略优)

如果数据量很大,这种方式可以避免排序时的reverse操作,原理是将数值取负后升序排序,等价于原数值的降序排序:

row_value_list = []

with open('heatmap.csv', 'r') as file:
    for line_number, line_content in enumerate(file, start=1):
        cleaned_line = line_content.strip()
        if not cleaned_line:
            continue
        try:
            value = float(cleaned_line)
            # 存储负数值和行号,后续升序排序即可得到原数值的降序顺序
            row_value_list.append( (-value, line_number) )
        except ValueError:
            continue

# 升序排序
row_value_list.sort()

# 提取前20个的行号并输出
for neg_value, line_num in row_value_list[:20]:
    print(line_num)

代码说明

  • enumerate(file, start=1):自动为每行分配从1开始的行号,完美匹配你1-100行的需求。
  • 空行和非数值行处理:通过strip()和try-except跳过无效行,避免程序报错。
  • 排序逻辑:两种方法都能实现按数值降序排列,取前20个后提取行号输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:41:32