在pandas对象上调用numpy.argmin未返回整数的问题咨询
pandas Series调用np.argmin返回索引的问题解答
这是预期行为吗?
是预期行为。pandas的Series对象对numpy的通用函数(ufunc)做了适配处理,调用np.argmin时会保留Series的索引上下文,因此返回的是对应最小值的索引标签,而非numpy文档中提到的整数类型ndarray(或整数位置)。
如何获取最小值的整数位置索引?
有两种直接的解决方法,无需额外判断是否为pandas对象:
- 使用Series自带的
argmin()方法,该方法专门返回最小值的整数位置:
import pandas as pd import numpy as np foo = pd.Series(np.array([1,2,3]), index=["a","b","c"]) foo.argmin() # 输出:0
- 提取Series的底层numpy数组后调用
np.argmin:
np.argmin(foo.values) # 输出:0 # 或使用to_numpy()(pandas 0.24+版本支持) np.argmin(foo.to_numpy()) # 输出:0
内容的提问来源于stack exchange,提问作者Him
相关产品推荐
相关产品推荐

