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

Python中DataFrame最小值索引为何返回两个元素?

Python中获取DataFrame字段极值索引时出现多个结果的原因

我想要在Python中实现类似Excel VLOOKUP的功能,通过获取service_length字段值的索引位置来关联Staff变量。于是编写了如下代码,用来获取该字段最大值、最小值、平均值的索引并转为列表:

# 查找最大值的索引位置
max = (df[df['service_length'] == max_val].index.values)
# 转为列表
max = (max.tolist())

# 查找最小值的索引位置
min = (df[df['service_length'] == min_val].index.values)
# 转为列表
min = (min.tolist())

# 查找平均值的索引位置
mean = (df[df['service_length'] == mean_val].index.values)
# 转为列表
mean = (mean.tolist())

print(max)
print(min)
print(mean)

运行结果为:

[238]
[43, 57] <--- 为何此处返回两个值?按直觉DataFrame中应该只有一个最小值?
[210]

原因说明

  • 返回两个索引的核心原因是:你的DataFrame里有两行数据的service_length字段值完全等于最小值min_val。
  • 可以执行以下代码直接验证这一点:
    print(df[df['service_length'] == min_val])
    
    运行后会展示所有service_length等于最小值的行,直观看到确实存在两条符合条件的数据。
  • 额外提示:如果只需要获取最小值的第一个出现位置,不用筛选整个DataFrame,直接用df['service_length'].idxmin()即可返回第一个最小值的索引;最大值同理用idxmax()。另外注意,用等于判断平均值时可能存在浮点数精度问题,建议改用numpy.isclose来匹配:
    import numpy as np
    mean_indices = df[np.isclose(df['service_length'], mean_val)].index.values.tolist()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:48:58