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

Pandas apply处理列报'float' object is not subscriptable错误

报错原因

'float' object is not subscriptable 报错是因为apply的传参逻辑搞错了:

  • 你是对df['Latitude']单列调用apply,此时传入lambda的参数x是这一列逐行的单个浮点型数值,不是整行的Series对象
  • 你写的x['Latitude']是尝试对浮点数做键索引,浮点数不支持这类下标操作,直接触发报错
修复方法

方法1:修正现有apply逻辑

不需要在lambda里再做列索引,x本身就是待处理的纬度值,直接传入自定义函数即可:

def true_latitude(Latitude):
    if Latitude > 1.5:
        return Latitude * (-1.0)
    else:
        return Latitude

df['Latitude'] = df['Latitude'].apply(true_latitude)

不需要额外套lambda,直接把函数名传给apply就行,写法更简洁。

方法2:pandas向量化实现(推荐,性能更高)

如果数据量较大,不建议用apply逐行循环,直接用pandas原生的向量化操作,运行速度会快很多:

df.loc[df['Latitude'] > 1.5, 'Latitude'] *= -1.0

补充:如果确实需要按行遍历整个DataFrame取多列值处理,才需要写df.apply(axis=1),此时传入的x才是整行数据,支持x['列名']的索引写法。但当前场景只处理单列,用整行apply的写法会产生不必要的性能损耗。

内容的提问来源于stack exchange,提问作者Bisma Adhira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:27:34