关于Pandas版本: 本文基于 pandas2.2.0 编写。
关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。
传送门: Pandas API参考目录
传送门: Pandas 版本更新及新特性
传送门: Pandas 由浅入深系列教程
本节目录
- Pandas.DataFrame.idxmin()
 - 语法:
 - 返回值:
 - 参数说明:
 - axis 指定查找方向(行或列)
 - skipna 是否排除 [缺失值](https://shuxiangxian.blog.csdn.net/article/details/134620311)
 - numeric_only 排除非纯数值的行或列
 
- 相关方法:
 - 示例:
 - 示例1:查找(每行/每列) 最小值,第一次出现位置的索引
 - 示例1-1、构建演示数据
 - 示例1-2、查找每列的最小值,第一次出现位置的索引
 - 示例1-3:查找每行的最小值,第一次出现位置的索引
 
- 示例2:缺失值对计算结果的影响
 - 示例2-1、构建演示数据
 - 示例2-2、观察排除缺失值(保持默认)时,每列的最小值位置
 - 示例2-3、不排除缺失值
 
- 示例3:`numeric_only=True` 将排除不是纯数值型的行或列
 - 示例3-1、构建演示数据
 - 示例3-2、numeric_only=True` 排除了不是纯数值型的行或列
 
Pandas.DataFrame.idxmin()
DataFrame.idxmin 用于返回沿着指定轴的最小值第一次出现位置的索引。
语法:
DataFrame.idxmin(axis=0, skipna=True, numeric_only=False)
返回值:
-  
Series
该方法的返回值是一个
Series,包含沿着指定轴的最小值位置的索引⚠️ 注意 :
- 当 
axis=0即查找每列的最小值位置时,Series的索引 表示的是DataFrame列名,值 表示的是这一列的最小值在DataFrame里对应的 行索引。 - 当 
axis=1即查找每行的最小值位置时,Series的索引 表示的是DataFrame行索引,值 表示的是这一行的最小值在DataFrame里对应的 列名。 
 - 当 
 
参数说明:
axis 指定查找方向(行或列)
axis:{0 or ‘index’, 1 or ‘columns’}, default 0 例1
axis 参数用于控制查找方向:
- 0 or ‘index’ 查找每列的最小值位置时。
 - 1 or ‘columns’ 查找每行的最小值位置时。
 
skipna 是否排除 缺失值
skipna:bool, default True
skipna 参数用于控制是否排除缺失值,默认 skipna=Ture 表示排除缺失值:
- True 排除缺失值。
 - False 不排除缺失值。
 
⚠️ 注意 :
不建议设置为
skipna=False。因为某行或某列出现缺失值,将只会返回nan。 例2-3
numeric_only 排除非纯数值的行或列
numeric_only:bool, default False 例3
numeric_only 参数用于控制是否只在纯数值型的行或列中查找最小值的位置,默认 numeric_only=False 。
- False 对行或列的数据类型没有限制。
 - True 只在纯数值型的行或列中查找最小值位置。
 
⚠️ 注意 :
数值型包含
浮点数 float,整数 int,布尔型 boolean如果没有可供计算的行或列,结果将是一个空的
Series
相关方法:
➡️ 相关方法
Series.idxmin
最小值索引
示例:
测试文件下载:
本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。
若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。

示例1:查找(每行/每列) 最小值,第一次出现位置的索引
示例1-1、构建演示数据
import pandas as pd
df = pd.DataFrame(
    {"第1列": [10.51, 103.11, 55.48], "第2列": [37.2, 19.66, 1712]},
    index=["第一行", "第二行", "第三行"],
)
df
 
| 第1列 | 第2列 | |
|---|---|---|
| 第一行 | 10.51 | 37.20 | 
| 第二行 | 103.11 | 19.66 | 
| 第三行 | 55.48 | 1712.00 | 
示例1-2、查找每列的最小值,第一次出现位置的索引
df.idxmin()
 
第1列    第一行
第2列    第二行
dtype: object
 
示例1-3:查找每行的最小值,第一次出现位置的索引
df.idxmin(axis=1)
 
第一行    第1列
第二行    第2列
第三行    第1列
dtype: object
 
 
示例2:缺失值对计算结果的影响
示例2-1、构建演示数据
import pandas as pd
import numpy as np
df = pd.DataFrame(
    {"第1列": [np.NaN, 103.11, 55.48], "第2列": [37.2, np.NaN, 1712]},
    index=["第一行", "第二行", "第三行"],
)
df
 
| 第1列 | 第2列 | |
|---|---|---|
| 第一行 | NaN | 37.2 | 
| 第二行 | 103.11 | NaN | 
| 第三行 | 55.48 | 1712.0 | 
示例2-2、观察排除缺失值(保持默认)时,每列的最小值位置
df.idxmin()
 
第1列    第三行
第2列    第一行
dtype: object
 
 
示例2-3、不排除缺失值
df.idxmin(skipna=False)
 
C:\Users\Administrator\AppData\Local\Temp\ipykernel_568032\1810047541.py:1: FutureWarning: The behavior of DataFrame.idxmin with all-NA values, or any-NA and skipna=False, is deprecated. In a future version this will raise ValueError
  df.idxmin(skipna=False)
第1列    NaN
第2列    NaN
dtype: object
 
 
示例3:numeric_only=True 将排除不是纯数值型的行或列
 
示例3-1、构建演示数据
import pandas as pd
import numpy as np
df = pd.DataFrame(
    {"第1列": [np.NaN, 103.11, 2], "第2列": ['地雷', np.NaN, 1712]},
    index=["第一行", "第二行", "第三行"],
)
df
 
| 第1列 | 第2列 | |
|---|---|---|
| 第一行 | NaN | 地雷 | 
| 第二行 | 103.11 | NaN | 
| 第三行 | 2.00 | 1712 | 
示例3-2、numeric_only=True` 排除了不是纯数值型的行或列
df.idxmin(numeric_only=True)
 
第1列    第三行
dtype: object
 
示例3-3、如果没有可供计算的行或列,结果将是一个空的 Series
import pandas as pd
import numpy as np
df = pd.DataFrame(
    {"第1列": [np.NaN, 103.11, '测试'], "第2列": ['地雷', np.NaN, 1712]},
    index=["第一行", "第二行", "第三行"],
)
df.idxmin(numeric_only=True)
 
Series([], dtype: object)
                

















