关于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)