1. ホーム
  2. python

[解決済み] AttributeError: 'float' オブジェクトには 'lower' 属性がありません。

2022-02-16 01:50:37

質問

この属性エラーに直面し、浮動小数点数がツイートに表示された場合の処理方法に困っています。ストリーミング・ツイートは小文字でトークン化する必要があるため、私は分割関数を使用しました。

誰か、この問題に対処するために、回避策や解決策を教えてください ...?

以下は エラー ということです。

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)


いろいろ試しましたが、まだlowerとsplitの機能を使わせることができません。

どうすればいいですか?

Dick Kniepさん、ありがとうございます。はい、PandasのCSVリーダーです。あなたの提案はうまくいきました。 以下は、フィールドのデータ型を指定することで、私のために動作したPythonコードです。 (この場合は文字列)

p_test = pd.read_csv('TrainSA.csv')
p_test.SentimentText=p_test.SentimentText.astype(str)