python - 我可以在所有情况下使用 idxmax() 代替 argmax() 吗?

标签 python pandas numpy

我发现 idxmax()argmax() 不起作用的情况下有效(例如在整个数据帧上),但是在某些情况下我需要 argmax()?如果不是,我会把它从我的脑海中抹去。

最佳答案

有区别。 pd.DataFramespd.Series有一个索引,该索引可能不连续,例如[0 ... n) ,但是当您在创建过程中未指定它时。因此人们常常将它们混淆。

考虑这个抛物线

import pandas as pd
import numpy as np

data = pd.Series(16 - np.arange(-4,5) ** 2)
0     0
1     7
2    12
3    15
4    16
5    15
6    12
7     7
8     0
dtype: int64

标签设置为 [0 ... 9) ,因为我们没有指定它们。在这种情况下,data.argmax()data.idxmax()结果是4 ,因为这是 16 的整数位置和标签.

但是,如果我们过滤掉奇数值,则索引不再连续:

filtered = data[data % 2 == 0]
0     0
2    12
4    16
6    12
8     0
dtype: int64

在这里,filtered.argmax()返回2filtered.idxmax()返回4 .

当您想要引用 data 时,这一点尤其重要。 ,使用从 filtered 中提取的条目。即data.loc[4]将通过未过滤的版本返回找到的值。

关于python - 我可以在所有情况下使用 idxmax() 代替 argmax() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47596390/

相关文章:

python - Pandas 将两个表中的数据转换为第三个表。交叉引用并将唯一行转换为列

python - 如何使用 Paramiko 传输文件夹

python - 为什么我的 pandas 数据框在我更改它们时没有更新它的值?

pandas - 对 pandas.Datetime 类型的 x 值进行积分

python - pandas read_csv 中的转义引号

python - 使用值出现次数在 Pandas 中创建数据透视表

python - 按拆分字符串排序 django orm

Python 服务器 NoneType/float catch

python - 在 python 中平均多个掩码 numpy 数组

python - Numpy - 两个 float 与浮点类型精度之间的差异