我正在处理留言板帖子(包含在CSV
文件中),尝试在训练分类模型之前清理数据/等。
事情进展顺利,直到我得到:
TypeError:'float'对象不可迭代
回应这一行:
letters_only = ''.join([i for i in textToProcess if not i.isdigit()])
textToProcess来自(train["text"][i])
。
所以......当我打算通过拨打电话来查看我的数据时:
print train.isnull().sum()
print test.isnull().sum()
我得到了以下输出:
id 0
category 0
title 0
text 1
train 26
dtype: int64
id 5512
category 5512
title 5512
text 5512
train 5512
dtype: int64
问题:所以我认为这意味着在测试集中,每列中有5512个空值?
这很奇怪,因为直到这一点,进口等似乎大部分都表现出预期。例如,拨打例如train["text"][0]
产生了预期的输出(即文本)。
如果有帮助,我原来的read_csv导入调用看起来像:
train = pd.read_csv(full_train_filename, header=0, encoding = 'utf-8')
test = pd.read_csv(full_test_filename, header=0, encoding = 'utf-8')`
我不确定这里有一个直接的问题,但我希望有人看到我做错了。
任何想法都将不胜感激。
答案 0 :(得分:1)
我认为您需要检查NaN
中的DataFrame
值,该值来自csv
。您可以将isnull
与any
和boolean indexing
:
test[test.isnull().any(1)]
样品:
import pandas as pd
import numpy as np
test = pd.DataFrame({'a': {0: 'r', 1: 'r', 2: 't', 3: 'y'},
'b': {0: 'a', 1: 'a', 2: 's', 3: 'g'},
'c': {0: 7.0, 1: 5.0, 2: np.nan, 3: 4.0}})
print (test)
a b c
0 r a 7.0
1 r a 5.0
2 t s NaN
3 y g 4.0
print (test[test.isnull().any(1)])
a b c
2 t s NaN
然后你可以使用一些文本编辑器,例如Notepad++
并检查这些有问题的行。