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

导入Twitter文本数据时遇'float'对象无lower属性错误求助

解决'float' object has no attribute 'lower'错误

这个错误的核心原因很清晰——你的tweets['text']列里混进了非字符串类型的值,具体来说是缺失值(NaN)。在pandas中,缺失值NaN的类型是float,当你的word_in_text函数尝试对它调用lower()方法时,自然会抛出属性不存在的错误。

下面给你两种实用的解决思路:

思路1:先清理缺失值

如果可以接受删除缺失数据,直接在处理前移除text列为空的行,从源头上避免传入非字符串值:

# 删除text列存在缺失值的行
tweets = tweets.dropna(subset=['text'])
# 再执行添加Trade列的操作
tweets['Trade'] = tweets['text'].apply(lambda tweet: word_in_text('Trade', tweet))

思路2:修改函数兼容非字符串输入

如果不想丢失数据,可以给word_in_text函数加一层类型判断,对非字符串输入直接返回False:

import re

def word_in_text(word, text):
    # 先判断text是否为字符串,非字符串直接返回False
    if not isinstance(text, str):
        return False
    word = word.lower()
    text = text.lower()
    match = re.search(word, text)
    # 简化返回逻辑:直接返回match的布尔值
    return bool(match)

# 之后正常执行添加列的代码即可
tweets['Trade'] = tweets['text'].apply(lambda tweet: word_in_text('Trade', tweet))

补充说明:出现这种情况通常是因为你导入的Twitter文本数据里,部分行的text字段是空的,pandas自动将这些空值识别为NaN(float类型),才导致了类型不匹配的问题。

内容的提问来源于stack exchange,提问作者ambrish dhaka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:53:04