如何根据最小值选取pandas Series对应的索引?
报错原因
你写的df.loc[df.min()]逻辑存在问题:df.min()得到的是最小值913,而.loc是基于索引标签取值的,你的Series索引是Mo/Di/Mi这类星期缩写,不存在值为913的索引标签,自然会抛出KeyError。
另外注意你手上的结构是pandas Series,不是DataFrame,用df做变量名容易混淆。
正确实现方法
方法1:直接调用idxmin()(最推荐)
pandas的Series内置了idxmin()方法,专门用于返回最小值对应的首个索引标签,一行代码即可实现:
# 假设你的Series变量名为s min_index = s.idxmin() print(min_index) # 输出结果为 Di
方法2:布尔索引过滤后取索引
如果你需要获取所有等于最小值的索引(存在多个相同最小值的场景适用),可以用这种方式:
# 过滤出值等于最小值的行,再提取索引 min_index_list = s[s == s.min()].index.tolist() # 只要第一个的话取0号位置即可 min_index = min_index_list[0]
内容的提问来源于stack exchange,提问作者ReFreeman
相关产品推荐
相关产品推荐

