看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
idxmax() 是 pandas 中用于返回指定轴上最大值对应的索引的方法。它能够帮助你快速找到数据中最大值的位置。
返回请求轴上第一次出现最大值的索引。NA/空值被排除在外。
DataFrame.idxmax(axis=0, skipna=True, numeric_only=False)
此方法是 ndarray.argmax 的 DataFrame 版本。
此方法是ndarray.argmax的系列版本。此方法返回最大值的标签,而ndarray.argmax返回位置。要获取位置,请使用series.values.argmax()。
axis:
int,可选,默认为 00 表示按列(垂直方向)操作,1 表示按行(水平方向)操作。skipna:
bool,可选,默认为 TrueNaN)。如果为 True,则忽略缺失值;如果为 False,只要有 NaN 存在,结果就会返回 NaN。numeric_only:
bool,可选,默认为 FalseTrue,只对数字类型数据进行操作,非数字类型的列将被忽略。DataFrame 进行操作,返回一个 Series,其中包含最大值对应的索引。Series 进行操作,直接返回最大值对应的索引。idxmax() 常用于数据分析过程中,以找到某列或某行的最大值的位置。idxmax() 可以确定某些关键点,比如找到股票数据中价格最高的日期。s = pd.Series(data=[1, None, 4, 3, 4],
index=['A', 'B', 'C', 'D', 'E'])
s
'''
A 1.0
B NaN
C 4.0
D 3.0
E 4.0
dtype: float64
'''
s.idxmax()
# 'C'
# 如果skipna为False,并且数据中有NA值,则函数返回nan。
s.idxmax(skipna=False)
# nan
考虑一个包含阿根廷食品消费的数据集。
df = pd.DataFrame({'consumption': [10.51, 103.11, 55.48],
'co2_emissions': [37.2, 19.66, 1712]},
index=['Pork', 'Wheat Products', 'Beef'])
df
'''
consumption co2_emissions
Pork 10.51 37.20
Wheat Products 103.11 19.66
Beef 55.48 1712.00
'''
默认情况下,它返回每列中最大值的索引。
df.idxmax()
'''
consumption Wheat Products
co2_emissions Beef
dtype: object
'''
要返回每行中最大值的索引,请使用axis=“columns”。
df.idxmax(axis="columns")
'''
Pork co2_emissions
Wheat Products consumption
Beef co2_emissions
dtype: object
'''
例1: 寻找列方向的最大值索引
import pandas as pd
# 构造示例数据
data = {
'A': [3, 1, 4],
'B': [2, 6, 5],
'C': [7, 8, 9]
}
df = pd.DataFrame(data)
# 寻找每列最大值的索引
result = df.idxmax(axis=0)
print(df)
print(result)
输出:
'''
A B C
0 3 2 7
1 1 6 8
2 4 5 9
A 2
B 1
C 2
dtype: int64
'''
在这个例子中,idxmax(axis=0) 返回的是每列中最大值的行索引。比如,A 列的最大值 4 出现在第 2 行,B 列的最大值 6 出现在第 1 行,C 列的最大值 9 也出现在第 2 行。
例2: 寻找行方向的最大值索引
import pandas as pd
# 构造示例数据
data = {
'A': [3, 1, 4],
'B': [2, 6, 5],
'C': [7, 8, 9]
}
df = pd.DataFrame(data)
# 寻找每行最大值的索引
result = df.idxmax(axis=1)
print(df)
print(result)
输出:
'''
A B C
0 3 2 7
1 1 6 8
2 4 5 9
0 C
1 C
2 C
dtype: object
'''
在这个例子中,idxmax(axis=1) 返回的是每行中最大值的列名。比如,第一行的最大值 7 出现在列 C,第二行的最大值 8 也出现在列 C,第三行的最大值 9 仍然出现在列 C。
例3: 使用 skipna=False 处理缺失值
import pandas as pd
import numpy as np
# 构造示例数据
data = {
'A': [np.nan, 2, 3],
'B': [1, np.nan, 5],
'C': [4, 6, np.nan]
}
df = pd.DataFrame(data)
# 使用 skipna=False
result = df.idxmax(axis=0, skipna=False)
print(df)
print(result)
输出:
'''
A B C
0 NaN 1.0 4.0
1 2.0 NaN 6.0
2 3.0 5.0 NaN
A 2
B 2
C 1
dtype: int64
'''
在这个例子中,尽管存在 NaN,但是因为 skipna=False,所以返回了列 B 和 C 的最大值索引。
idxmax() 是一个强大的工具,用于确定 DataFrame 或 Series 中最大值的位置。它在数据分析、数据清洗以及可视化准备过程中非常有用。通过调整参数,你可以灵活地处理包含缺失值的数据或指定需要操作的数据类型。
更新时间:2024-08-09 09:02:54 标签:pandas python 索引 最大值