📅  最后修改于: 2023-12-03 15:11:53.277000             🧑  作者: Mango
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。