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

Python Pandas获取最高楼层建筑名称:报错排查与解决

解决:找到楼层数最多的建筑名称

咱们一步步拆解你遇到的问题,先搞定那两个错误,再给出能跑通的实现方案:

一、先搞懂两个错误的根源

1. AttributeError: 'str' object has no attribute 'loc'

这个错误直白说就是:你以为的dframe根本不是Pandas DataFrame对象,而是个字符串!大概率是你加载数据的时候出了问题——比如读取文件时路径写错、变量名被不小心覆盖成了字符串,或者数据读取方式不对。先跑一行代码确认下:

print(type(dframe))

如果输出不是<class 'pandas.core.frame.DataFrame'>,得先把数据正确加载成DataFrame(比如用pd.read_csv()或对应的读取方法)。

2. TypeError: reduction operation 'argmax' not allowed for this dtype

这个错误是说第15列的数据类型不是数值型(比如是字符串、混合了非数字内容),idxmax()只能对数字列生效。楼层数本该是数字,但可能数据里藏着空值、字符串格式的数字,导致这列的 dtype 变成了object,自然没法找最大值索引。

二、正确实现步骤

假设你已经把数据成功加载成了DataFrame,按下面的步骤来:

1. 把第15列转成数值类型

先处理非数值内容,把没法转成数字的内容设为NaN:

import pandas as pd

# 转换第15列为数值,错误值转为NaN
dframe[15] = pd.to_numeric(dframe[15], errors='coerce')

2. 处理空值(可选,按需操作)

如果第15列有NaN值,你可以选择删除这些无效行,或者用默认值填充:

# 删除第15列为空的行
dframe = dframe.dropna(subset=[15])

3. 提取楼层最多的建筑名称

现在就可以安全地找最大值对应的建筑了:

# 获取第15列最大值的行索引
max_floor_index = dframe[15].idxmax()
# 提取对应行的第2列(建筑名称)
top_building = dframe.loc[max_floor_index, 2]

print(f"楼层最多的建筑是:{top_building}")

或者用一行代码简化:

top_building = dframe.loc[dframe[15].idxmax(), 2]

三、用你的示例数据验证

看你给出的示例数据,第15列的数值分别是356.6、24.3、21.7,对应的第2列建筑名称是HILTON SEATTLE,运行上面的代码后会直接返回这个结果。

内容的提问来源于stack exchange,提问作者Tae Yamasaki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 09:47:40