如何使用Python获取DataFrame中数组列最大值对应的索引
解决方案
你之前的代码仅通过max(x)提取了数组的最大值,没有执行「查找最大值对应位置」的逻辑,所以无法得到目标索引,直接通过列表原生方法或者numpy方法即可实现需求。
方法1:使用Python列表原生方法(无额外依赖)
直接在apply逻辑中,先取数组最大值,再用列表的index()方法返回该值对应的索引:
# 构造示例DataFrame import pandas as pd df = pd.DataFrame({ "Elements": [[3,4,5], [2,0,1]] }) # 计算最大值索引 df["Max Value Index"] = df["Elements"].apply(lambda x: x.index(max(x)))
执行后输出结果完全匹配你的预期:
| Elements | Max Value Index |
|---|---|
| [3, 4, 5] | 2 |
| [2, 0, 1] | 0 |
注意:如果单个数组内存在多个重复的最大值,
list.index()会默认返回第一个最大值对应的索引。
方法2:使用numpy的argmax方法(兼容numpy数组格式存储的元素)
如果你的Elements列存储的是numpy数组,或者后续需要做更多数值计算,可以直接用np.argmax()获取最大值索引,该方法对普通Python列表同样生效:
import numpy as np df["Max Value Index"] = df["Elements"].apply(lambda x: np.argmax(x))
返回结果和方法1完全一致。
内容的提问来源于stack exchange,提问作者Noob Coder
相关产品推荐
相关产品推荐

