代码之家  ›  专栏  ›  技术社区  ›  Vishal Kharde

AttributeError:“float”对象没有属性“lower”

  •  17
  • Vishal Kharde  · 技术社区  · 8 年前

    我面临着这个属性错误,我被困在如何处理出现在tweet中的浮点值。流式推文必须小写并标记化,所以我使用了拆分功能。

    有人能帮我处理一下吗,任何变通办法或解决方案。。?

    这是 错误 我得到了。。。。

    AttributeError                            Traceback (most recent call last)
    <ipython-input-28-fa278f6c3171> in <module>()
          1 stop_words = []
    ----> 2 negfeats = [(word_feats(x for x in p_test.SentimentText[f].lower().split() if x not in stop_words), 'neg') for f in l]
          3 posfeats = [(word_feats(x for x in p_test.SentimentText[f].lower().split() if x not in stop_words), 'pos') for f in p]
          4 
          5 trainfeats = negfeats+ posfeats
    
    AttributeError: 'float' object has no attribute 'lower'
    

    这是我的代码

    p_test = pd.read_csv('TrainSA.csv')
    
    stop_words = [ ]
    
    def word_feats(words):
    
        return dict([(word, True) for word in words])
    
    
    l = [ ]
    
    for f in range(len(p_test)):
    
        if p_test.Sentiment[f] == 0:
    
            l.append(f)
    
    
    
    p = [ ]
    
    for f in range(len(p_test)):
    
        if p_test.Sentiment[f] == 1:
    
            p.append(f) 
    
    
    
    
    negfeats = [(word_feats(x for x in p_test.SentimentText[f].lower().split() if x not in stop_words), 'neg') for f in l]
    
    posfeats = [(word_feats(x for x in p_test.SentimentText[f].lower().split() if x not in stop_words), 'pos') for f in p]
    
    
    trainfeats = negfeats+ posfeats
    
    print len(trainfeats)
    
    
    import random 
    
    random.shuffle(trainfeats)
    
    print(len(trainfeats))
    
    
    
    
    p_train = pd.read_csv('TrainSA.csv')
    
    
    l_t = []
    
    for f in range(len(p_train)):
    
        if p_train.Sentiment[f] == 0:
    
            l_t.append(f)
    
    
    p_t = []
    
    for f in range(len(p_train)):
    
        if p_train.Sentiment[f] == 1:
    
            p_t.append(f)        
    
    print len(l_t)
    
    print len(p_t)
    

    我尝试了很多方法,但仍然无法让他们使用较低和拆分功能。

    6 回复  |  直到 8 年前
        1
  •  41
  •   Vishal Kharde    5 年前

    谢谢你@迪克·克尼普。是的,它是Pandas CSV阅读器。你的建议奏效了。 下面是通过指定字段数据类型为我工作的python代码, (在本例中为其字符串)

    p_test = pd.read_csv('TrainSA.csv')
    p_test.SentimentText=p_test.SentimentText.astype(str)
    
        2
  •  19
  •   Dick Kniep    8 年前

    我觉得你的问题根源于pd.read_csv('TrainSA.csv')函数。尽管你没有发布这个例程,但我认为它是Pandas read_csv。此例程智能地将输入转换为python数据类型。然而,这意味着在您的情况下,某些值可以转换为浮点值。你可以阻止这种智能(?)通过指定每个列所需的数据类型。

        3
  •  4
  •   feeeper    6 年前

    我的数据集也出现了类似的错误。安装程序 dtype 参数对我没有帮助。我必须准备数据集。问题是 NaN 列值。数据集部分:

    Id,Category,Text
    1,contract,"Some text with commas, and other "
    2,contract,
    

    所以我的解决方案:之前 read_csv 我添加了虚拟文本而不是空行:

    Id,Category,Text
    1,contract,"Some text with commas, and other "
    2,contract,"NaN"
    

    现在我的应用程序运行良好。

        4
  •  2
  •   Vishrant    3 年前

    如果您正在使用数据帧,请使用以下方法删除NA:

    df = df.dropna()
    
        5
  •  0
  •   Javad preetika mondal    2 年前
    df=pd.read_excel("location\file.xlsx")
    df.characters=df.characters.astype(str)
    

    我试了一下,得到了答案。

        6
  •  0
  •   Sachin Prasad H S    2 年前

    您可以确保DataFrame系列不是空值或非缺失值。

    在执行任何操作之前,可以执行以下步骤。

    df=df[df['ColumnName'].notna()]