📌  相关文章
📜  获取行或列中的最小值及其在 Pandas-Dataframe 中的索引位置(1)

📅  最后修改于: 2023-12-03 15:11:53.277000             🧑  作者: Mango

获取行或列中的最小值及其在 Pandas-Dataframe 中的索引位置

Pandas 是 Python 中高效的数据分析库,可以用于数据清洗、数据整理、数据建模等多个方面。在 Pandas 中,我们经常需要计算 DataFrame 或 Series 中的最小值及其所在的索引位置。下面将介绍 Pandas 中获取行或列中的最小值及其索引位置的方法。

获取行或列中的最小值

我们可以使用 Pandas 中的 min() 函数来获取行或列中的最小值。例如,对于下面的 DataFrame,我们可以分别获取每一行和每一列的最小值:

import pandas as pd

data = {'A': [1, 3, 5, 0], 'B': [4, 2, 2, 6], 'C': [7, 1, 3, 4], 'D': [3, 6, 0, 5]}
df = pd.DataFrame(data)

# 获取每一行的最小值
print(df.min(axis=1))

# 获取每一列的最小值
print(df.min(axis=0))

上述代码中,min() 函数默认返回 DataFrame 或 Series 中的最小值,axis=1 表示获取每一行的最小值,axis=0 表示获取每一列的最小值。执行结果如下:

0    0
1    2
2    3
3    0
dtype: int64
A    0
B    2
C    1
D    0
dtype: int64
获取行或列中最小值的索引位置

当我们获取到 DataFrame 或 Series 中的最小值后,通常还需要知道其在原数据中的索引位置。Pandas 中的 idxmin() 函数正是用于获取 DataFrame 或 Series 中最小值的索引位置。我们可以使用 idxmin() 函数来获取行或列中最小值的索引位置。例如,对于上文中的 DataFrame,我们可以分别获取每一行和每一列的最小值及其索引位置:

import pandas as pd

data = {'A': [1, 3, 5, 0], 'B': [4, 2, 2, 6], 'C': [7, 1, 3, 4], 'D': [3, 6, 0, 5]}
df = pd.DataFrame(data)

# 获取每一行的最小值及其索引位置
print(df.apply(lambda x: pd.Series([x.min(), x.idxmin()], index=['min', 'idxmin']), axis=1))

# 获取每一列的最小值及其索引位置
print(df.apply(lambda x: pd.Series([x.min(), x.idxmin()], index=['min', 'idxmin'])))

上述代码中,apply() 函数用于按行或列应用自定义函数,lambda 函数中使用 pd.Series() 函数将最小值和其索引位置组成一个 Series,axis=1 表示按行应用函数,axis=0 表示按列应用函数。执行结果如下:

   min  idxmin
0    0       3
1    2       1
2    3       1
3    0       0
   min idxmin
A    0      3
B    2      1
C    1      1
D    0      2

从执行结果可以看出,idxmin() 函数返回了 DataFrame 或 Series 中最小值的索引位置。在本例中,idxmin() 函数返回了最小值所在的行或列的索引位置,即 0、1、2 和 3。