Pandas.DataFrame.idxmin() 最小值索引 详解 含代码 含测试数据集 随Pandas版本持续更新

发布时间:2024年01月24日

关于Pandas版本: 本文基于 pandas2.2.0 编写。

关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。

传送门: Pandas API参考目录

传送门: Pandas 版本更新及新特性

传送门: Pandas 由浅入深系列教程

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

相关方法:

?? 相关方法


示例:

测试文件下载:

本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。

若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。

测试文件下载位置.png

测试文件下载位置

示例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.5137.20
第二行103.1119.66
第三行55.481712.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列
第一行NaN37.2
第二行103.11NaN
第三行55.481712.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.11NaN
第三行2.001712
示例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)
文章来源:https://blog.csdn.net/mingqinsky/article/details/135737131
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。