You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Pandas Series的最小值索引?argmin传参报错原因解析

问题解答

1. Pandas Series 获取最小值对应索引的正确方法

日常开发中常用的合规写法有两种,适配不同的定位需求:

  • 调用Series自带的idxmin()方法:该方法会自动跳过空值,直接返回最小值对应的行索引标签,是Pandas官方推荐的Series取值接口,和你代码中写的df['Price'].idxmin()逻辑完全一致,拿到索引标签后可以直接配合loc、iloc做其他字段的行定位。
  • 借助numpy接口实现:如果习惯用numpy的数值计算逻辑,可以调用np.nanargmin(series),该方法返回最小值对应的整数位置序号,需要配合iloc做位置定位,也就是你之前注释掉的两行代码的实现逻辑。

2. argmin() takes 1 positional argument but 2 were given 报错的原因与修正方案

报错根源

这个报错完全是版本适配差异导致的:

  • 旧版Pandas中,Series对象的argmin()方法对齐numpy数组的设计,支持传入axis参数;但在Pandas 2.0及之后的版本中,一维Series本身不存在多轴的维度问题,argmin()方法做了精简,不再接收axis这类额外参数。当你在新版本中沿用老写法,给对象的argmin()方法传入axis参数时,就会因为接收到的位置参数数量和方法定义不匹配,触发这个TypeError。
    补充说明:如果链式调用取值时拿到了纯Python标量值,这类值的argmin()方法本身就不支持任何传入参数,传axis也会触发同类报错。

修正方案

根据你的调用场景选择对应写法即可:

  • 针对一维Series找最小值索引:不要用带axis参数的argmin()写法,优先用idxmin()拿索引标签;如果需要整数位置的索引,就把Series转成numpy数组再调用argmin,比如df['Price'].to_numpy().argmin(),numpy数组的argmin完全支持传入axis参数,兼容旧的调用习惯。
  • 针对二维DataFrame找跨行/跨列的最小值索引:直接调用DataFrame自带的idxmin(axis=xxx)方法即可,不需要手动调用底层的argmin方法,该方法原生支持轴参数配置,是官方推荐的二维场景接口。

现有代码的冗余优化

你当前逐字段取值的写法可以简化,拿到最小值对应的索引后直接提取整行数据即可,示例代码:

# 先拿到最小值对应的行索引
min_price_idx = df['Price'].idxmin()
# 直接提取整行数据
min_row_info = df.loc[min_price_idx]
# 拼接输出
print(
    f"If you are looking for a cheap accommodation, "
    f"a {min_row_info['Area']} m² apartment for {min_row_info['Price']} PLN is available in {min_row_info['City']}"
)

以上逻辑已经覆盖你当前代码涉及的所有调用场景,两种取索引的方法在空值处理上都能适配你Price列int64类型的数值特征。

内容的提问来源于stack exchange,提问作者Filip Szczybura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 07:27:00