看过来
《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
,可选,默认为 0
0
表示按列(垂直方向)操作,1
表示按行(水平方向)操作。skipna:
bool
,可选,默认为 True
NaN
)。如果为 True
,则忽略缺失值;如果为 False
,只要有 NaN
存在,结果就会返回 NaN
。numeric_only:
bool
,可选,默认为 False
True
,只对数字类型数据进行操作,非数字类型的列将被忽略。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 索引 最大值