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

Python pandas报错:reduction operation 'argmax' not allowed for this dtype

解决argmax不支持 dtype 的分组取最大值行问题

问题原因

尽管Excel中TTL_TRD_QNTY列显示为数值类型,但pandas读入后可能因以下原因被识别为object类型,导致idxmax()报错:

  • 单元格存在隐藏非数值字符(如空格、换行符)
  • 列名包含前后空格(你的列名是 TTL_TRD_QNTY,前面有空格)
  • 部分单元格存在空值或无法解析的内容

解决方案

1. 先清理并转换列数据类型

先处理目标列,确保其为数值类型:

# 去除单元格前后空格,转换为数值,无法转换的标记为NaN
df[' TTL_TRD_QNTY'] = pd.to_numeric(df[' TTL_TRD_QNTY'].str.strip(), errors='coerce')
# 可选:删除包含NaN的无效行(根据业务需求决定)
df = df.dropna(subset=[' TTL_TRD_QNTY'])

2. 用高效的pandas内置方法替代循环

原循环代码效率较低,推荐直接使用groupby结合idxmax()获取结果:

# 执行上述类型转换后,直接获取每组最大值对应的整行
result_df = df.loc[df.groupby('SYMBOL')[' TTL_TRD_QNTY'].idxmax()]
# 重置索引(可选,让结果更整洁)
result_df = result_df.reset_index(drop=True)

3. 验证数据类型(排查用)

如果仍有问题,先检查列的实际类型和内容:

# 查看列的数据类型
print(df[' TTL_TRD_QNTY'].dtype)
# 查看前10行的具体内容,确认是否有异常
print(df[' TTL_TRD_QNTY'].head(10))

内容的提问来源于stack exchange,提问作者Rishikesh Sahani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:05:01