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

如何从索引列表中找到对应电压最值的索引值?

问题描述

我有如下形式的列表:

results = [[71, 84, 97, 106, 154, 183, 251, 283, 320],
 [354, 368, 381, 395, 435, 466, 511, 565, 602],
 [636, 650, 661, 671, 712, 741, 789, 850, 887],
 [921, 935, 947, 956, 1000, 1032, 1084, 1111, 1117, 1146, 1167, 1171, 1186],
 [1220, 1233, 1246, 1256, 1298, 1330, 1395, 1401, 1413, 1440, 1482]]

这些值是名为volt的DataFrame的索引,该DataFrame存储着电压读数,片段如下:

Tvoltage
0-0.450
1-0.460
2-0.475
3-0.480
4-0.410
5-0.312
6-0.124
7-0.324
8-0.634
9-0.673
10-0.918

例如,运行以下代码:

print(volt[results[0][0]])

会输出:

-0.69

我需要找到results列表中每个子列表里,对应电压最大值和最小值的索引值。比如第一个子列表[71, 84, 97, 106, 154, 183, 251, 283, 320]中,volt[106]是最大值,volt[320]是最小值,我要获取这些索引。

我当前的代码如下:

max_vals = []
min_vals = []

for i in results:
    max_vals.append(max(volt[i]))
    min_vals.append(min(volt[i]))

运行后得到的是最值电压值,但我需要的是对应的索引值,请问该如何修改代码?

解决方案

可以利用Pandas的idxmax()和idxmin()方法,这两个方法会直接返回对应最值的索引值,修改后的代码如下:

max_indices = []
min_indices = []

for sublist in results:
    # 筛选当前子列表对应的DataFrame片段
    subset = volt.loc[sublist]
    # 获取最大值对应的索引
    max_indices.append(subset['voltage'].idxmax())
    # 获取最小值对应的索引
    min_indices.append(subset['voltage'].idxmin())

代码说明

  • volt.loc[sublist]:通过索引列表筛选出对应的DataFrame子集,确保只在当前子列表的索引范围内查找最值。
  • idxmax():返回指定列(这里是voltage)最大值对应的索引。
  • idxmin():返回指定列最小值对应的索引。

如果你的volt是Series而非DataFrame(直接以索引取值返回电压值),可以简化成:

max_indices = []
min_indices = []

for sublist in results:
    subset = volt[sublist]
    max_indices.append(subset.idxmax())
    min_indices.append(subset.idxmin())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:35:26